听起来您好像在描述setgid位功能,其中设置了目录的功能将强制其中创建的所有新文件将其组设置为与父目录上设置的组相同的组。
例
$ whoami
saml
$ groups
saml wheel wireshark
设置具有烫发+所有权的目录
$ sudo mkdir --mode=u+rwx,g+rs,g-w,o-rwx somedir
$ sudo chown saml.apache somedir
$ ll -d somedir/
drwxr-s---. 2 saml apache 4096 Feb 17 20:10 somedir/
在此目录中以saml格式触摸文件
$ whoami
saml
$ touch somedir/afile
$ ll somedir/afile
-rw-rw-r--. 1 saml apache 0 Feb 17 20:11 somedir/afile
这将大致为您提供所需的声音。如果您确实想要您所描述的内容,我认为您需要借助访问控制列表功能来获得该(ACL)。
如果要对在目录下创建的文件的权限进行更多控制somedir
,可以添加以下ACL规则来设置默认权限,如下所示。
之前
$ ll -d somedir
drwxr-s---. 2 saml apache 4096 Feb 17 20:46 somedir
设定权限
$ sudo setfacl -Rdm g:apache:rx somedir
$ ll -d somedir/
drwxr-s---+ 2 saml apache 4096 Feb 17 20:46 somedir/
请注意+
结尾处的,这表示此目录已应用ACL。
$ getfacl somedir
# file: somedir
# owner: saml
# group: apache
# flags: -s-
user::rwx
group::r-x
other::---
default:user::rwx
default:group::r-x
default:group:apache:r-x
default:mask::r-x
default:other::---
后
$ touch somedir/afile
$ ll somedir/afile
-rw-r-----+ 1 saml apache 0 Feb 17 21:27 somedir/afile
$
$ getfacl somedir/afile
# file: somedir/afile
# owner: saml
# group: apache
user::rw-
group::r-x #effective:r--
group:apache:r-x #effective:r--
mask::r--
other::---
请注意,设置了默认权限(setfacl -Rdm
),以便默认情况下()的权限为r-x
(g:apache:rx
)。这将强制所有新文件仅r
启用其位。