Linux为未来的文件和文件夹设置用户和组所有权

时间:2015-08-07 20:34:05

标签: linux permissions filesystems file-permissions ownership

我正在使用以下命令更改用户和组所有权:

sudo chown -R apache:www /var/www

但是,我注意到每当我向该目录添加新文件或文件夹时,所有者将是我当前的用户名而不是目标用户apache。如何修改上述命令,以便将来所有文件夹和文件都归apache所有:www?或者我需要使用额外的命令吗?

3 个答案:

答案 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表示它将是一个修改操作

之后,它非常直接

  • U:用户名:权限
  • G:GROUPNAME:权限

这些条目必须用逗号分隔。

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