我是几个群组的成员,比如 Master、Student、Web。问题是,默认情况下,无论我做什么,都是先在学生群组下创建的。我需要将其设置为与 Web 群组一起创建。
我需要写入文件的文件夹www/
已经是模式 770。但是因为它选择了我的学生组,所以不允许我写入该文件夹。
有什么方法可以改变我创建文件的组吗?
如果我执行,groups
它会列出所有组,所以我是正确组的成员,但我只是无法写入该文件夹。
任何人?
答案1
如果您输入“id”,您将看到您的主要组,其列表类似于 gid=1000(student)。默认情况下,所有文件都将使用该组创建。
但这不是你的问题。如果你是某个组的成员,并且该组对某个目录有写权限,那么你就可以创建新文件。
您确定 www 上的权限正确吗?请执行“ls -ld www”。
答案2
您确定您处于正确的 web 组中吗?在 Ubuntu 上,这可能意味着usermod -a -G www-data yourname
交替运行,www 可能具有不正确的权限。确保已将其设置为组成员具有读/写访问权限:chmod -R 770 /var/www
。
答案3
如果要永久更改用户的默认组,请使用usermod
(手册页):
# set "web" as the primary group for user "username"
$ sudo usermod -g web username
或者,您可以将newgrp web
(或任何组名)放入.bashrc
文件末尾附近的某个位置,以便在每次登录时“登录到”Web 组 - 而无需更改用户的主要组。 newgrp
(手册页)设置“有效组ID”。观看:
# what's my current effective GID?
$ id -g
1000
# "login" to another group
$ newgrp www-data
# now what's my effective GID?
$ id -g
33
答案4
除非 Ubuntu 有什么不寻常的地方,否则如果您对目标目录“SGID”设置权限,那么在该目录中创建的所有文件都将属于拥有该目录的组:
chmod g+s /var/www
现在,所有文件都/var/www
将默认由(我假设)拥有该目录的“web”组创建。
即使目录上未设置 SGID 位,MacOS X 也默认采用这种行为。