我需要该目录/var/www/
(以及其中的所有内容)只能由授权用户修改。
我尝试这样做的方法是:
sudo groupadd webmasters
sudo usermod -G webmasters pi # My user is pi
sudo chown -R root:webmasters /var/www/
sudo chmod -R ug+rw /var/www/
...但我无法修改 中的任何内容/var/www/
,也无法在其中创建新文件。
我究竟做错了什么?我该如何按照需要的方式进行设置?
我的设想是:
- 群组中的每个人
webmasters
都可以创建、删除和编辑文件/var/www/
- 所有新创建的文件/文件夹都属于
root:webmasters
- 所有新创建的文件都有权限775:
-rwxrwxr-x
- 伊斯兰国必不可少的那没有人未经授权就能够拥有写入权限,或任何类型的 Setuid/Setgid 能力。 (写访问权限只能由 Root 授予。)
我对此采取了错误的方法吗?我的想法是正确的,但我只是把事情搞砸了?出了什么问题?
答案1
/etc/group
通过命令将用户添加到文件中的组是不够的usermod -G
。这会更新“数据库”,但在此更新之前已创建的任何 shell/进程将不会反映出拥有它们的用户pi
已添加到此新组。
getent
通常,您在询问 shell 时不想使用命令,而是使用命令id
,或更具体地说id -a
。
例子
在这里,我刚刚将我的用户名添加saml
到组中newgrp
。该命令getent
确认了这一点:
$ getent group newgrp
newgrp:x:10000:saml
但该命令id -a
在我已经打开的一个 shell 中讲述了一个不同的故事:
$ id -a
uid=500(saml) gid=501(saml) groups=501(saml),502(vboxusers),503(jupiter)
如果我启动一个新 shell,我会看到newgrp
:
$ ssh localhost
Last login: Fri Jun 28 00:17:13 2013 from localhost.localdomain
$ id -a
uid=500(saml) gid=501(saml) groups=501(saml),502(vboxusers),503(jupiter),10000(newgrp)