使用 root 用户,我执行了以下命令:
setfacl -R -d -m u:MYUSER:rwx /myfolder
然后,当我更改为该用户 ( su MYUSER
) 并尝试删除文件时(rm /myfolder/somefile.sql
然后我收到此错误:
rm: cannot remove 'somefile.sql': Permission denied
我mv
也做不到;然后我得到这个错误:
mv: cannot move 'somefile.sql' to 'someotherfile.sql': Permission denied
我已经添加了MYUSER
, /etc/sudoers
- 所以当我运行: 时sudo rm /myfolder/somefile.sql
,系统会提示我输入MYUSER
s 密码;然后就可以了。但我需要它在没有 的情况下工作sudo
,所以我可以将它作为 crontab 作业运行。
如果我写getfacl /myfolder
,那么我会得到以下输出:
# file: /myfolder/
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
default:user::rwx
default:user:MYUSER:rwx <-- That looks right, doesn't it?
default:group::r-x
default:mask::rwx
default:other::r-x
...为什么以宙斯的名义我不能删除这个目录中的文件?
答案1
MYUSER
是默认所有者,但不是有效所有者。
你需要运行两者
setfacl -R -d -m u:MYUSER:rwx /myfolder
setfacl -R -m u:MYUSER:rwx /myfolder
请注意第二个命令没有默认 ( -d
/ --default
) 标志。
这个灵魂导致getfacl
给予
# file: /myfolder/
# owner: root
# group: root
user::rwx
user:MYUSER:rwx
group::r-x
other::r-x
default:user::rwx
default:user:MYUSER:rwx
default:group::r-x
default:mask::rwx
default:other::r-x
答案2
setfacl
(与firewalld
) 应该始终运行两次。一旦-d
设置默认权限,将影响新创建的文件,而没有设置默认权限则影响实际文件。