在我的网络服务器上,我有一个具有权限drwxrwxr--
和用户:组的目录“www” root:www-data
,以便 Apache 可以访问它。
现在我已将我的帐户添加到 www-data 组
sudo usermod -g www-data myuser
如果我groups
这样做,那么www-data
它就在其中,但是当我尝试简单地通过 cd 进入它时,我得到“权限被拒绝”的信息。
如果我将用户更改为“myuser”或将组设置为我所属的其他组,我就可以进入。
我是否遗漏了什么?
答案1
您的进程在登录时设置了其组列表,因此您需要再次登录才能使更改生效。
我还建议您将其添加www-data
为补充组而不是主要组(主要组设置为仅您是其成员的组)。您应该能够使用以下命令执行此操作:
# Reset to your original primary group
sudo usermod -g myuser myuser
# Add an extra supplementary group
sudo usermod --append -G www-data group
如果您希望您创建的文件可由组内的其他成员读取www-data
,请相应地调整您的 umask:
umask 002
由于您的主要群组成员身份是个人群组,因此这不会影响您创建的文件的安全性。
还值得在setgid
您将在其中创建文件的目录中设置位:这将导致文件继承父目录的组所有权:
chmod g+s www/
答案2
对我来说,这是导致此错误的另一件事
具有两个不同 UID 的同一用户名
我在本地配置了用户“apache”,其 UID=123,在 NIS 目录中也配置了相同的名称(“apache”),但 UID=456。根据启动顺序和服务依赖性,本地用户可能先于 NIS 用户使用。这也意味着,当您显示用户名时,这会造成混淆,两者都将显示为“apache”。只有当您查看数字 UID 时(例如,通过执行此操作,ls -ln
您才会看到差异。示例:
[root@mymachine]# ls -l drwxr-x--- 4 apache ggg1 88 May 31 17:12 file1 drwxr-x--- 4 apache ppp2 88 May 31 17:12 file2
查看 file2 的 UID 是否不同(456 而不是 123):
[root@mymachine]# ls -ln drwxr-x--- 4 123 48 88 May 31 17:12 file1 drwxr-x--- 4 456 48 88 May 31 17:12 file2
Apache 配置中定义的不同组
我遇到的另一个问题是用户不匹配和由此导致的权限错误,当时我使用组“httpd”限制对文件的访问。这是用户“apache”的主要组(使用id
或显示)Apache 以 root 身份启动,然后切换到配置的用户并放弃权限。切换到的用户由参数getent
定义。但问题在于 - 进程将按原样运行的组 (GID)/etc/httpd/conf/httpd.conf
User
不是该用户的主要组。该组在同一配置文件中通过参数定义Group
。
所以就我的情况来说(/etc/httpd/conf/httpd.conf):
User apache Group apache
并且目录被授予这样的访问权限:
drwxr-x--- 4 someuser httpd 88 May 31 17:12 mydir
因为 httpd(GID=444)是该用户的主要组:
[root@somemachine]# id apache uid=48(apache) gid=444(httpd) groups=444(httpd)
这导致我花了一些时间进行调试,直到我意识到Group
配置文件中是“apache”而不是“httpd”。
错误来自/var/log/httpd/错误日志:
[Fri May 31 17:13:40.070343 2019] [authz_core:debug] [pid 2527] mod_authz_core.c(809): [client 11.22.32.21:53824] AH01626: authorization result of Require all granted: granted [Fri May 31 17:13:40.070367 2019] [authz_core:debug] [pid 2527] mod_authz_core.c(809): [client 11.22.32.21:53824] AH01626: authorization result of <RequireAny>: granted [Fri May 31 17:13:40.070396 2019] [core:error] [pid 2527] (13)Permission denied: [client 11.22.32.21:53824] AH00132: file permissions deny server access: /var/www/html/somedir/otherdir/css/file1.txt
我希望这有帮助。
答案3
要将您的用户名添加到群组:
sudo usermod --append -G groupname username
要在不注销/登录的情况下刷新您的登录权限:
su - $USER