我一直在寻找完美的基于 Web 的权限,我已经用过几种方法了。这篇文章并不复杂,只是有点长,我想提供一些示例。
我搜索了很久,但不知道是否存在事实上的标准。谢谢您的时间。
问:有人可以根据以下基本权限目标建议我最好的方法吗?
- 权限目标:
- 预防
0777
模式 - 默认群组
www-data
具有粘性 - 默认用户
myself
保持原样(如果可能的话,我认为 setfacl 中不存在默认值)
- 预防
- 悬崖笔记
- 使用:
Ubuntu 16.04
和16.10
(目前为桌面版本)
- 使用:
$ chmod g + rws
我已经设置好了,我确实想知道为什么用橙色高亮显示我的文件,这让我很担心. 目标是保持当前文件和新文件尽可能一致www-data
。
sudo chgrp -R www-data /var/www
sudo chmod -R g+rws /var/www # <-- s or S?
上述方法大部分都有效,但是我读过它不好用,为什么?所以我尝试了setfacl
。
$ setfacl
在这里setfacl
,问题是它会+x
为用户制作所有当前文件,我不想要那样。
# For Current Files | User/Group
sudo setfacl -Rm u:myself:rwx /var/www
sudo setfacl -Rm g:ww-data:rwx /var/www
# For Future Files | User/Group
sudo setfacl -Rmd u:myself:rwx /var/www
sudo setfacl -Rm g:www-data:rwx /var/www
.bashrc 分别设置文件/目录
所以我有一个疯狂的想法,就是创建一个.bashrc
函数,虽然它还不完全正确,但你明白我的意思了。
function facl_file() {
echo "(+) Set ACL for $USER:www-data rw [Files Only, Persist]"
# Files cannot have defaults -d permissions
while IFS= read -r -d $'\0' file; do
echo " Setting $file"
# Default Mode: RW
mode="rw"
# If Executable, Add RWX
if [[ -x "$file" ]]; then
mode="rwx"
fi
sudo setfacl -m u:$USER:$mode $file
sudo setfacl -m g:www-data:$mode $file
done < <(find $CREATE -type f -print0)
echo "(+) Done with Files"
}
function facl_dir() {
echo "(+) Set ACL for $USER:www-data rwx [Directories Only, Persist]"
while IFS= read -r -d $'\0' dir; do
echo " Setting $dir"
sudo setfacl -m u:$USER:rwx $dir
sudo setfacl -dm u:$USER:rwx $dir
sudo setfacl -m g:www-data:rwx $dir
sudo setfacl -dm g:www-data:rwx $dir
done < <(find $CREATE -type d -print0)
echo "(+) Done with Directories"
}
上述的目标是防止Directories
丢失+x
,并防止不存在的文件+x
成为它。
如果我在这方面做错了,任何建议都会很感激。我似乎找不到一个感觉合适的“粘性标准”。
答案1
我没有意识到这个帖子还在这里,所以我会回答我自己的问题。尝试使用X
而不是x
。我会先用测试文件夹来做:
cd ~; mkdir test; touch test/{default,run.sh};chmod +x test/run.sh
# Ensure this fellow is in here!
sudo usermod -aG www-data $USER
sudo setfacl -R -m g:www-data:rwX ~/test
sudo setfacl -Rd -m g:www-data:rwX ~/test
sudo getfacl ~/test
这将设置保留文件夹 x 和 run.sh x——唯一可见的变化是末尾的 +,如:-rwxrwxr-x+
- 它只是意味着它有 addtl `facl set。
希望这可以帮助。