我正在使用以下命令更改用户和组所有权:
sudo chown -R apache:www /var/www
但是,我注意到每当我向该目录添加新文件或文件夹时,所有者将是我当前的用户名而不是目标用户apache。如何修改上述命令,以便将来所有文件夹和文件都归apache所有:www?或者我需要使用额外的命令吗?
答案 0 :(得分:0)
我的猜测是你需要在执行命令之前更改用户 - 这样的脚本:
$whoami
user1
$ su - apache
Password:
$ whoami
apache
[add file]
$ exit
答案 1 :(得分:0)
您可以使用ACL执行此操作。例如:
$ ls -ld /var/www
drwxr-xr-x 2 apache www 4096 Aug 7 13:53 /var/www
$ sudo setfacl -dRm u:apache:rwX,g:www:rwX /var/www
$ ls -ld /var/www
drwxr-xr-x+ 2 apache www 4096 Aug 7 13:53 /var/www
$ getfacl /var/www
# file: var/www
# owner: apache
# group: www
user::rwx
group::r-x
other::r-x
default:user::rwx
default:user:apache:rwx
default:group::r-x
default:group:www:rwx
default:mask::rwx
default:other::r-x
当创建新文件时,它们仍将由您的用户拥有,但也会在其上设置ACL,授予apache用户权限:
$ touch donkey
$ ls -l donkey
-rw-rw-r--+ 1 gene gene 0 Aug 7 13:57 donkey
$ getfacl donkey
# file: donkey
# owner: gene
# group: gene
user::rw-
user:apache:rwx #effective:rw-
group::rwx #effective:rw-
group:www:rwx #effective:rw-
mask::rw-
other::r--
命令概述:
setfacl -dRm u:apache:rwX,g:www:rwX /var/www
-d
标志指定应用于默认ACL的操作。-R
标志设置要递归应用的操作-m
表示它将是一个修改操作之后,它非常直接
这些条目必须用逗号分隔。
X
权限(注意:它的大写)表示它只会应用于目录而不是文件。
答案 2 :(得分:0)
您可以使用SETGID
的{{1}}(SET组ID)标记在组级别实现此目的:
chmod
设置完成后,chmod g+s <group> <directory>
内新创建的文件和目录将设置为<directory>
。 e.g。
<group>
将导致chmod g+s www /srv/www
中新创建的文件和目录包含组/srv/www
。
您可以通过执行www
验证这一点,该ls -al
将显示s
对该目录的组“执行”权限。 e.g。
drwxr-sr-x. 5 apache www 4096 Mar 13 20:32 www
^
SETGIT