好像只有文件所有者及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) . "'");
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
我说的是 “文件所有者及root用户”。。。 呵呵
php以nobody运行,再加上对php_fpm进程的chroot,应该是相当安全的了
你说的my_chmod,是要自己写一个C程序并编译,然后把它用于s权限上,这好像就复杂了,反倒容易造成安全隐患。
另外为安全起见我的php是禁用system等函数的
也就是说:
对于文件读写权限而言,可以通过acl来让指定用户(非文件所有者)拥有读写权限
但对于chmod,并没有类似 对指定用户“提权”的方案。
#4
你自相矛盾,你想改root用户的东西,你又不敢给s权限,这算什么。
用户终归是走你的接口的,你完全有能力在php里做足够安全的过滤规则。
但对于chmod,并没有类似 对指定用户“提权”的方案。
当然,你可以提权/bin/chmod这个程序的s,但你没法对C API:chmod提权,这毋庸置疑。
#5
你想追求绝对的安全,
1:apache auth强制用户登录
2:自定义登录,强制用户登录
1:apache auth强制用户登录
2:自定义登录,强制用户登录
#6
我只是想让ftp用户可以修改某些文件的mod,不管这个文件是属于谁的;就像对一个文件设置一定acl规则,让ftp用户可以修改root的文件。
是这样的,使用acl,可以让指定用户(或用户组)有权限修改本属于其它用户的文件,即使是root用户的文件也可以。
所以我就假想了,是否chmod也有类似的方案。比如让ftp用户也可以对/var/www/html/ 下文件的chmod
现在看来linux中没有这样的手段。
"对于chmod,没有类似 对指定用户“提权”的方案。" -- 这样我就了解了
多谢指教!
#7
ACL果断不懂,掩面路过。
#8
大哥,你说笑的吧! 个人感觉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) . "'");
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
我说的是 “文件所有者及root用户”。。。 呵呵
php以nobody运行,再加上对php_fpm进程的chroot,应该是相当安全的了
你说的my_chmod,是要自己写一个C程序并编译,然后把它用于s权限上,这好像就复杂了,反倒容易造成安全隐患。
另外为安全起见我的php是禁用system等函数的
也就是说:
对于文件读写权限而言,可以通过acl来让指定用户(非文件所有者)拥有读写权限
但对于chmod,并没有类似 对指定用户“提权”的方案。
#4
你自相矛盾,你想改root用户的东西,你又不敢给s权限,这算什么。
用户终归是走你的接口的,你完全有能力在php里做足够安全的过滤规则。
但对于chmod,并没有类似 对指定用户“提权”的方案。
当然,你可以提权/bin/chmod这个程序的s,但你没法对C API:chmod提权,这毋庸置疑。
#5
你想追求绝对的安全,
1:apache auth强制用户登录
2:自定义登录,强制用户登录
1:apache auth强制用户登录
2:自定义登录,强制用户登录
#6
我只是想让ftp用户可以修改某些文件的mod,不管这个文件是属于谁的;就像对一个文件设置一定acl规则,让ftp用户可以修改root的文件。
是这样的,使用acl,可以让指定用户(或用户组)有权限修改本属于其它用户的文件,即使是root用户的文件也可以。
所以我就假想了,是否chmod也有类似的方案。比如让ftp用户也可以对/var/www/html/ 下文件的chmod
现在看来linux中没有这样的手段。
"对于chmod,没有类似 对指定用户“提权”的方案。" -- 这样我就了解了
多谢指教!
#7
ACL果断不懂,掩面路过。
#8
大哥,你说笑的吧! 个人感觉ACL是非常有用的东西,不会是终生遗憾,呵呵~~
#9
目前还没遗憾过,让你失望了。