我可以允许用户更改不属于他们的文件吗?


17

我想允许用户chmod由root或不是他们自己的某些用户拥有的文件。我已将文件更改为777,但出现“不允许操作”。我已将用户添加到文件组中并获得相同的信息。用户为什么不能chmod他们具有写权限的文件?


1
按照这种逻辑,为什么不以root用户身份运行所有内容?如果任何用户可以更改任何模式,则基本上可以破坏整个Unix权限模型...
克里斯·

1
你想让我做什么?也许您应该看看sudolinux.die.net/man/8/sudolinux.die.net/man/5/sudoers
xx4h 2013年

该文件的权限为777,用户可以转到“ mv file file.old; cat file.old> file”,他们现在将拥有该文件并可以对其进行chmod修改。为什么他们不能“ chmod 777文件”?
ashleysmithgpu

5
不,只有拥有对目录的写许可权,他们才能这样做。如果用户有权通过设置04777模式并将/ usr / bin / env复制到该文件中来更改他不拥有的文件的权限,则他可以以该用户身份运行任何命令。
斯特凡Chazelas

@StephaneChazelas这是一个奇怪的说法,因为内核可以轻松地决定(并且确实可以!)允许非所有者进行此类更改而不受该决定所允许的所有更改的约束。毕竟,当非所有者写入文件时,SUID甚至会重置。
Hauke Laging,

Answers:


8

用户为什么不能chmod他们具有写权限的文件?

对于正常的访问权限,这是设计决定。您需要richaclsWRITE_ACL也许WRITE_OWNER


1
并且您应该警告,richacls通常不可用。
sendmoreinfo 2013年

@sendmoreinfo Wikipedia文章说,显然我必须读它,因为我的答案没有解释什么是richacls以及如何使用它们。因此,考虑正确答案“无用”是荒谬的。特别是因为没有等效的替代方法。如果您认为有必要,下次进行编辑。
Hauke Laging

我知道,这是一个设计决定,谢谢
ashleysmithgpu

2
您显然使用了此功能,因此请用自己的话自己解释。
sendmoreinfo 2013年

10

Unix权限设计得很简单。您需要具有从文件读取的读取许可权,要写入文件的写入许可权和要执行文件的执行许可权。您需要拥有一个文件才能修改其元数据¹。

允许可以读取文件的用户向其他人授予读取权限,或者允许可以写入文件的用户向其他人授予写入权限,都不会改变安全模型。这是因为unix权限是自由决定的:可以读取文件的用户可以将其内容公开给其他用户,即使这些其他用户否则无法读取该文件(同样,对于写入,该用户也可以充当代理和代表他人写)。

另一方面,允许用户授予它没有的权限将完全破坏权限系统:用户可以向自己授予所有权限。

很少需要更改您不拥有的文件的权限。通常,您应该在文件创建后立即安排其具有正确的权限。如果确实需要,可以sudo chmod为特定模式和特定文件(例如joe: ALL = (ALL) chmod g+r /path/to/file)授予用户权限。

¹ 除了访问和修改时间外,这些时间之所以特别,是因为读取或写入文件也会对其进行设置。


在我的用例中,有一个Web进程(通过www-data)和一个cli进程(由我自己),它们都希望对文件设置权限。我已将自己添加到www-data组,但这还不够。
donquixote

即使将所有者/组更改为我自己:www-data也无济于事。(我没有设计尝试设置权限的机制,我无法控制它)
donquixote
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.