无法写入我的用户有写权限的文件夹

无法写入我的用户有写权限的文件夹

在我说任何话之前,我知道组和用户的权限是如何运作的。

我的设置是:

a. 我的用户是monkey并且属于该组www-data

groups monkey

monkey : monkey adm cdrom sudo dip www-data plugdev lpadmin sambashare

b. apache 的根文件夹是,并且具有所有者和组的/home/monkey/var/www权限0775www-datawww-data

ls -la /home/monkey/var/www

total 8 drwxrwxr-x 2 www-data www-data 4096 Aug 12 10:37 . drwxr-xr-x 3 root root 4096 Aug 12 10:37 ..

c. 但我无法写入/home/monkey/var/www/

monkey@ubuntu:~$ cp robots.txt var/www/robots.txt

cp: cannot create regular file âvar/www/robots.txtâ: Permission denied

robots.txt文件是在monkey用户下创建的。

我错过了什么?

答案1

您的父文件夹权限(var设置为 755 且所有者为 root)限制了您的子文件夹。您需要将您的权限更改为 var 或将所有者更改为 www-data:www-data 并将权限更改为 775

编辑

经过一番挖掘,用户需要newgrp <group-name>在执行任何操作之前切换组。要返回该 shell 上的默认组,请键入 exit 或Ctrl+D

答案2

用户有一个主组,可以有多个附加组。用户主组在 /etc/passwd 中设置,即:

www-data:x:30:40:www-data:/var/www:/usr/sbin/nologin

表示用户 'www-data' 是组 ID 40 的成员。

您可以在 /etc/group 中将用户添加到其他组,但是当您创建文件时,默认情况下系统将设置用户基本的组作为所有者,而不是其他组之一。某些 Unix 会检查目录组,如果用户是该组的成员,则新文件的组所有者将取自目录,而不是用户。

所以当你创造一个文件,默认情况下,您以用户“monkey”和组“monkey”的身份执行此操作。并且由于文件夹归以下人员所有:

  • 用户“www-data”,不是由“monkey” - 未使用用户权限
  • 组“www-data”,不是由“monkey”创建的 - 组权限也未被使用
  • 使用了“其他”权限,并且

使用 newgr 命令,您可以将主要组切换到附加组之一,从而有效地为新文件创建设置组所有者。

使用 umask 命令您可以调整用于新文件创建的权限。

现在有帮助吗?

相关内容