为了备份服务器的“/home”目录树,我创建了一个“备份”帐户并使用 setfacl 使其可以读取整个目录。我的 cron 作业每晚都以 root 身份运行此命令:
setfacl -R -m u:backup:rx,d:u:backup:rx /home
Run Code Online (Sandbox Code Playgroud)
很好,除了一个问题:每当我运行此命令时,它都会更改我的 ssh 密钥的组权限。
me@myserver:~/.ssh$ ls /home/me/.ssh/id_rsa -l
-rw-r-x---+ 1 me me 1679 Jan 8 18:35 /home/me/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)
好吧,这会导致我的 ssh 程序停止运行,因为它现在是组可读的。奇怪的是,getfacl 不同意这些权限。
me@myserver:~/.ssh$ getfacl /home/me/.ssh/id_rsa
getfacl: Removing leading '/' from absolute path names
# file: home/me/.ssh/id_rsa
# owner: me
# group: me
user::r--
user:backup:r-x
group::---
mask::r-x
other::---
Run Code Online (Sandbox Code Playgroud)
getfacl 认为该文件不是组可读的。如果我运行明显的命令
chmod 400 id_rsa
Run Code Online (Sandbox Code Playgroud)
权限是固定的,但每次我重新运行原始命令时都会恢复(setfacl -R -mu:backup:rx,d:u:backup:rx /home)。这是怎么回事?
注意:我确实希望我的 id_rsa 备份,所以我们不用担心这些安全隐患。
用户vi和rust共享组rust并希望以共享方式使用某些文件。
rust$ ls -l myfile
-rw-rw-r-- 1 vi rust 0 May 30 03:48 myfile
rust$ stat myfile | grep Gid
Access: (0664/-rw-rw-r--) Uid: ( 1000/ vi) Gid: ( 1057/ rust)
rust$ id
uid=1048(rust) gid=1057(rust) groups=1057(rust),...
rust$ cat myfile
rust$ touch myfile
touch: cannot touch ‘myfile’: Permission denied
rust $ dd of=myfile
dd: failed to open ‘myfile’: Permission denied
vi$ id
uid=1000(vi) gid=1000(vi) groups=1000(vi),{many unrelated groups skipped},1057(rust),{many unrelated groups skipped}
vi$ touch myfile
vi$
Run Code Online (Sandbox Code Playgroud)
尽管有 …
我正在尝试使用 ACL 为各种 mercurial 存储库设置细粒度的访问控制。当我将更改推送到存储库时,在其下创建的任何新文件/myrepo/.hg/store/data都没有默认权限,用户无法访问它们。
该问题是可重现的。假设用户“myuser”是 www-data 组的一部分。在服务器上:
hg init /tmp/test
chown root:root /tmp/test
chmod 770 /tmp/test
setfacl -Rdm g:www-data:rwx /tmp/test
setfacl -Rm g:www-data:rwx /tmp/test
Run Code Online (Sandbox Code Playgroud)
在带有 TortoiseHg 的 Windows 机器上,设置为使用plink.exe共享密钥用于 ssh:
hg clone ssh://myuser@servername//tmp/test test
#add file test1.txt and commit to test
hg push ssh://myuser@server//tmp/test
cd ..
hg clone ssh://myuser@servername//tmp/test test2 <---FAIL
Run Code Online (Sandbox Code Playgroud)
回到服务器上检查 ACL
getfacl /tmp/test/.hg/store/data/test1.txt.i
# file: tmp/test/.hg/store/data/test1.txt.i
# owner: myuser
# group: myuser
user::rw-
group::rw-
other::r--
Run Code Online (Sandbox Code Playgroud)
所以新文件不是使用我添加到父文件夹的默认权限创建的/tmp/test。当您hg pull在服务器和hg serve …
所以这就是情况:为 Web 开发人员获取服务器。有很多开发人员。所有developers+ PHP+Apache所属的www组。有一个开发目录 - development.
目标是development目录中的每个文件都有755权限,每当任何开发人员创建、修改development目录中的文件时,文件仍然具有755.
所以我已经阅读了许多acl教程、指南和操作方法,但我仍然无法得到我想要的结果。
aclchown -R www:www developmentchmod g+s development我acl在development目录上设置了许多规则并得到了这个:
$ getfacl development
# file: development
# owner: www
# group: www
# flags: -s-
user::rwx
user:www:rwx
group::rwx
group:www:rwx
mask::rwx
other::r-x
default:user::rwx
default:user:www:rwx
default:group::rwx
default:group:www:rwx
default:mask::rwx
default:other::r-x
p.s. I know its messy, was doing a number of tests …Run Code Online (Sandbox Code Playgroud)我正在使用 ACL 来控制对不同 Apache 实例和不同管理员组的 Web 根的访问。我有一个 Unix 组,admins-web22用于特定网站的管理员和apache-web22特定 apache 实例的用户。这些是在 web 根目录上设置的权限:
# file: web22
# owner: root
# group: root
user::rwx
user:apache-web22:r-x
group::rwx
group:webmaster:rwx
group:admins-web22:rwx
mask::rwx
other::---
default:user::rwx
default:user:apache-web22:r-x
default:group::rwx
default:group:admins-web22:rwx
default:mask::rwx
default:other::r-x
Run Code Online (Sandbox Code Playgroud)
有一个用户fred是 的成员admins-web22。该用户具有对该目录的完全读写访问权限(如上所述)。这工作正常。但是,该用户无法授予用户apache-web22对某些文件和目录的写权限,这一点很重要(例如,Web 管理员想要为 Drupal 设置上传目录)。该setfacl命令给出“不允许操作。”。
我的问题是,谁可以使用 授予权限setfacl,我怎样才能让组的用户自己admins-web22更改权限(为apache-web22)?
我正在运行 Debian Wheezy,如果它很重要,它是一个 ext4 分区。
ls -l列表中的文件具有以下权限:
-rw-r-----+
Run Code Online (Sandbox Code Playgroud)
如何找到由+?表示的扩展访问控制列表 (ACL) 权限?
这是此Q/A的后续问题。
我在我的笔记本电脑上尝试了这个命令,它起作用了:
setfacl -m 'u:programX:rwx' /etc/NetworkManager
Run Code Online (Sandbox Code Playgroud)
我检查了我的嵌入式设备是否已acl安装并标记为正确。
但是我发现在嵌入式设备上使用命令时我得到了setfacl: /etc/NetworkManager: Operation not supported.
当我检查man setfacl我的版本时acl似乎支持该-m标志。
为什么acl在我的笔记本电脑上运行正常时,设备上不支持该操作?
结果mount | grep -w /:
/dev/block/mtd/by-name/linuxroot on / type ext4 (rw,relatime,barrier=1,data=ordered)
Run Code Online (Sandbox Code Playgroud) 当我在目录中应用默认 ACL 时,我看到default:mask或仅mask在以下两种情况下。
场景一
-bash-4.2$ ls -ld test/
drwxr-x---. 2 test test 4096 Oct 15 19:12 test/
-bash-4.2$ setfacl -d -m u:arif:rwx test/
-bash-4.2$ getfacl --omit-header test
user::rwx
group::r-x
other::---
default:user::rwx
default:user:arif:rwx
default:group::r-x
default:mask::rwx
default:other::---
Run Code Online (Sandbox Code Playgroud)
场景二
-bash-4.2$ ls -dl dir/
drwxr-x---. 2 test test 4096 Oct 15 18:17 dir/
-bash-4.2$ getfacl dir
# file: dir
# owner: test
# group: test
user::rwx
group::r-x
other::---
-bash-4.2$ setfacl -m user:arif:rwx dir
-bash-4.2$ getfacl --omit-header dir
user::rwx
user:arif:rwx
group::r-x …Run Code Online (Sandbox Code Playgroud) 我想找到所有设置了 acl 的文件。我知道这个肮脏的解决方案:查找目录中设置了 acl 的所有文件。/ETC
sudo ls -lhR /etc|grep +
Run Code Online (Sandbox Code Playgroud)
有人知道更优雅的解决方案吗?
我知道这个setfacl是给予权限:
setfacl -m u:user:rwx myfolder
Run Code Online (Sandbox Code Playgroud)
但是是否有一个人可以获取以下权限:
setfacl -m u:user:-rwx myfolder
Run Code Online (Sandbox Code Playgroud) acl ×10
permissions ×7
linux ×3
backup ×1
files ×1
ls ×1
mercurial ×1
privileges ×1
reiserfs ×1
umask ×1