Linux组权限未正确实施。


18

我正在运行Ubuntu 10.04服务器,并且对用户/组有一些非常违反直觉的体验。例如:

sudo touch test_file                    # create empty file

sudo groupadd test                      # create 'test' group

sudo chown root:test test_file          # change group of file to 'test'

sudo chmod g+rwx test_file              # give write permissions to group

sudo usermod -a -G test {my-user}       # add my user to 'test' group

touch test_file                         # touch the file as my current user

最后一行产生权限错误。

我已确保我的用户属于“测试”组(groups {my-user}对此进行确认)。test_file的组也肯定设置为“ test”,并且组的权限也已设置。

我的用户为什么不能写入文件测试文件?

Answers:


29

将用户添加到新组时,将不会将其应用到任何当前正在运行的进程中,而只会应用到新进程中。您需要注销,然后重新登录。


4
或入侵su - username您正在运行的控制台。您不必注销即可以这种方式登录:)
matthias krull 2010年

5

注销和重新启动服务器方法都对我不起作用。

但是,此方法对我有用:(参考此答案

chmod g+rwxs <parent folder>

1
+s零件做什么?谢谢。
tommy.carstensen

1
它设置setuid位。这允许文件以文件所有者的身份运行。假设您有一个要以root用户身份运行的文件,无论该文件的运行者是谁,都将为该文件设置setuid位。
朱利叶斯

关键是x:看起来需要执行权touch才能工作。
asac-恢复莫妮卡

0

您可以使用该newgrp命令来更改用户的当前组ID。来自man newgrp

newgrp命令用于在登录会话期间更改当前组ID。如果-给出了可选标志,则用户的环境将被重新初始化,就像用户已经登录一样,否则当前环境(包括当前工作目录)保持不变。


1
这也具有替换当前组的作用。这并不总是一个好主意。
丹妮丝

如果可以的话,我会拒绝投票。覆盖组将来可能会非常令人沮丧...尤其是。有-R选择!
爱德华

0

重新启动计算机,以确保没有卡死的进程阻止您在注销和登录期间正确执行用户和组。

这些步骤应为您的组用户test授予写权限test_file

sudo touch test_file 
sudo groupadd test
sudo chown root:test test_file
sudo chmod g+rwx test_file
sudo usermod -a -G test {my-user}

重新启动计算机或注销用户的操作系统。终端重启还不够。

touch test_file

用户可以写入文件,因为它是“测试”组的一部分,并且该组具有rwx权限。


3
不需要必须重新启动计算机。
凯文·潘科
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.