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

Linux为将来的文件和文件夹设置用户和组所有权,linux,permissions,filesystems,file-permissions,ownership,Linux,Permissions,Filesystems,File Permissions,Ownership,我正在使用以下命令更改用户和组所有权: sudo chown -R apache:www /var/www 但是,我注意到,每当我向该目录添加新文件或文件夹时,所有者都是我当前的用户名,而不是预期的用户apache。如何修改上述命令,使所有未来的文件夹和文件都归apache:www所有?或者我需要使用额外的命令吗?我猜您需要在执行命令之前更改用户-类似于以下内容的脚本: $whoami user1 $ su - apache Password: $ whoami apache [add fil

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

sudo chown -R apache:www /var/www

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

我猜您需要在执行命令之前更改用户-类似于以下内容的脚本:

$whoami
user1
$ su - apache
Password:
$ whoami
apache
[add file]
$ exit

您可以使用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
权限(注意:它是大写)意味着它将只应用于目录而不是文件。

您可以通过使用
chmod
SETGID
(设置组ID)标志在组级别实现这一点:

chmod g+s <group> <directory>
将导致
/srv/www
中新创建的文件和目录具有组
www

您可以通过执行
ls-al
来验证,这将显示目录上组“execute”权限的
s
。e、 g

drwxr-sr-x.   5 apache www       4096 Mar 13 20:32 www
      ^
    SETGIT

有没有办法自动设置它,这样我就不需要切换用户名了?
drwxr-sr-x.   5 apache www       4096 Mar 13 20:32 www
      ^
    SETGIT