能否为非文件所有者赋予 chmod 权限

时间:2021-05-08 16:43:05
正常情况下,
好像只有文件所有者及root用户才可以通过chmod修改文件的mode. 那有没办法让其它用户也有这个权限呢?

就像 通过acl让其它非所有者有权修改文件一样

目的是在web站点的ftp权限设定下用的,
web站点的文件的所有者是root, 而php_fpm以nobody用户运行。这样即使php程序的有漏洞,也不至于被cracker利用而修改root用户的文件。
但这样情况下,通过ftp客户端修改文件的mode就没办法了(ftp设置的不允许root用户登录)

于是想,是否有像acl一样设置非所有者就可以修改文件mod的方案? 

9 个解决方案

#1


谁说root才可以。。文件的用户主对文件的模式具有修改权利。

php以nobody运行比较安全了,只能说比较安全,毕竟nobody对于其他文件是other用户,说不定还是有权限的。

ftp非root的话,你可以提供一个s权限的C程序my_chmod:
chown root my_chmod
chmod u+s+x o+x

my_chmod里面调用chomd修改命令行传入的文件名的权限mode即可。

在php里:

system('./mychmod ' . "'" . escapeshellcommand(filename) . "' '" . escapeshellcommand(mode) . "'");

#2


学习的  来看看

#3


引用 1 楼  的回复:
谁说root才可以。。文件的用户主对文件的模式具有修改权利。

php以nobody运行比较安全了,只能说比较安全,毕竟nobody对于其他文件是other用户,说不定还是有权限的。

ftp非root的话,你可以提供一个s权限的C程序my_chmod:
chown root my_chmod
chmod u+s+x o+x

my_chmod里面调用chomd修改命令行传入的文……


我说的是 “文件所有者及root用户”。。。 呵呵

php以nobody运行,再加上对php_fpm进程的chroot,应该是相当安全的了

你说的my_chmod,是要自己写一个C程序并编译,然后把它用于s权限上,这好像就复杂了,反倒容易造成安全隐患。
另外为安全起见我的php是禁用system等函数的

也就是说:
对于文件读写权限而言,可以通过acl来让指定用户(非文件所有者)拥有读写权限
但对于chmod,并没有类似 对指定用户“提权”的方案。

#4


引用 3 楼  的回复:
引用 1 楼  的回复:

谁说root才可以。。文件的用户主对文件的模式具有修改权利。

php以nobody运行比较安全了,只能说比较安全,毕竟nobody对于其他文件是other用户,说不定还是有权限的。

ftp非root的话,你可以提供一个s权限的C程序my_chmod:
chown root my_chmod
chmod u+s+x o+x

my_chmod里面……


你自相矛盾,你想改root用户的东西,你又不敢给s权限,这算什么。

用户终归是走你的接口的,你完全有能力在php里做足够安全的过滤规则。

但对于chmod,并没有类似 对指定用户“提权”的方案。

当然,你可以提权/bin/chmod这个程序的s,但你没法对C API:chmod提权,这毋庸置疑。

#5


你想追求绝对的安全,

1:apache auth强制用户登录
2:自定义登录,强制用户登录

#6


引用 4 楼  的回复:
引用 3 楼  的回复:

引用 1 楼  的回复:

谁说root才可以。。文件的用户主对文件的模式具有修改权利。

php以nobody运行比较安全了,只能说比较安全,毕竟nobody对于其他文件是other用户,说不定还是有权限的。

ftp非root的话,你可以提供一个s权限的C程序my_chmod:
chown root my_chmod
chmod u+s+x o……


我只是想让ftp用户可以修改某些文件的mod,不管这个文件是属于谁的;就像对一个文件设置一定acl规则,让ftp用户可以修改root的文件。


是这样的,使用acl,可以让指定用户(或用户组)有权限修改本属于其它用户的文件,即使是root用户的文件也可以。
所以我就假想了,是否chmod也有类似的方案。比如让ftp用户也可以对/var/www/html/ 下文件的chmod
现在看来linux中没有这样的手段。

"对于chmod,没有类似 对指定用户“提权”的方案。" -- 这样我就了解了

多谢指教!

#7


ACL果断不懂,掩面路过。

#8


引用 7 楼  的回复:
ACL果断不懂,掩面路过。

大哥,你说笑的吧! 个人感觉ACL是非常有用的东西,不会是终生遗憾,呵呵~~

#9


目前还没遗憾过,让你失望了。

#1


谁说root才可以。。文件的用户主对文件的模式具有修改权利。

php以nobody运行比较安全了,只能说比较安全,毕竟nobody对于其他文件是other用户,说不定还是有权限的。

ftp非root的话,你可以提供一个s权限的C程序my_chmod:
chown root my_chmod
chmod u+s+x o+x

my_chmod里面调用chomd修改命令行传入的文件名的权限mode即可。

在php里:

system('./mychmod ' . "'" . escapeshellcommand(filename) . "' '" . escapeshellcommand(mode) . "'");

#2


学习的  来看看

#3


引用 1 楼  的回复:
谁说root才可以。。文件的用户主对文件的模式具有修改权利。

php以nobody运行比较安全了,只能说比较安全,毕竟nobody对于其他文件是other用户,说不定还是有权限的。

ftp非root的话,你可以提供一个s权限的C程序my_chmod:
chown root my_chmod
chmod u+s+x o+x

my_chmod里面调用chomd修改命令行传入的文……


我说的是 “文件所有者及root用户”。。。 呵呵

php以nobody运行,再加上对php_fpm进程的chroot,应该是相当安全的了

你说的my_chmod,是要自己写一个C程序并编译,然后把它用于s权限上,这好像就复杂了,反倒容易造成安全隐患。
另外为安全起见我的php是禁用system等函数的

也就是说:
对于文件读写权限而言,可以通过acl来让指定用户(非文件所有者)拥有读写权限
但对于chmod,并没有类似 对指定用户“提权”的方案。

#4


引用 3 楼  的回复:
引用 1 楼  的回复:

谁说root才可以。。文件的用户主对文件的模式具有修改权利。

php以nobody运行比较安全了,只能说比较安全,毕竟nobody对于其他文件是other用户,说不定还是有权限的。

ftp非root的话,你可以提供一个s权限的C程序my_chmod:
chown root my_chmod
chmod u+s+x o+x

my_chmod里面……


你自相矛盾,你想改root用户的东西,你又不敢给s权限,这算什么。

用户终归是走你的接口的,你完全有能力在php里做足够安全的过滤规则。

但对于chmod,并没有类似 对指定用户“提权”的方案。

当然,你可以提权/bin/chmod这个程序的s,但你没法对C API:chmod提权,这毋庸置疑。

#5


你想追求绝对的安全,

1:apache auth强制用户登录
2:自定义登录,强制用户登录

#6


引用 4 楼  的回复:
引用 3 楼  的回复:

引用 1 楼  的回复:

谁说root才可以。。文件的用户主对文件的模式具有修改权利。

php以nobody运行比较安全了,只能说比较安全,毕竟nobody对于其他文件是other用户,说不定还是有权限的。

ftp非root的话,你可以提供一个s权限的C程序my_chmod:
chown root my_chmod
chmod u+s+x o……


我只是想让ftp用户可以修改某些文件的mod,不管这个文件是属于谁的;就像对一个文件设置一定acl规则,让ftp用户可以修改root的文件。


是这样的,使用acl,可以让指定用户(或用户组)有权限修改本属于其它用户的文件,即使是root用户的文件也可以。
所以我就假想了,是否chmod也有类似的方案。比如让ftp用户也可以对/var/www/html/ 下文件的chmod
现在看来linux中没有这样的手段。

"对于chmod,没有类似 对指定用户“提权”的方案。" -- 这样我就了解了

多谢指教!

#7


ACL果断不懂,掩面路过。

#8


引用 7 楼  的回复:
ACL果断不懂,掩面路过。

大哥,你说笑的吧! 个人感觉ACL是非常有用的东西,不会是终生遗憾,呵呵~~

#9


目前还没遗憾过,让你失望了。