I keep coming back to perfect web-based permissions, I've done it a few ways. This post isn't as complex as it is a little long, I wanted to provide some samples.
I've searched far and wide but I am wondering if there is a de-facto standard. Thank you for your time.
Q: Can anyone please advise me the best approach according to the basic Permission Goals below?
- Permission Goal:
- Prevent
0777mode - Default group
www-datais sticky - Default user as
myselfis stick (If possible, I don't think a default exists in setfacl)
- Prevent
- Cliff Notes
- Using:
Ubuntu 16.04and16.10(Desktop Versions at the Moment)
- Using:
$ chmod g+rws
I have set this prior, I do wonder why this highlights my file an orange color, it concerns me. The goal was to keep current and new files as www-data.
sudo chgrp -R www-data /var/www
sudo chmod -R g+rws /var/www # <-- s or S?
The above works for the most part but I have read it's bad to use, why? So I tried setfacl.
$ setfacl
Here I setfacl, the problem is that it will make all current files +x for the user, I don't want that.
# 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 setfacl files/dirs separately
So a crazy idea I had was to make a .bashrc function It's not fully correct yet, but you get the idea.
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"
}
The goal of the above was to prevent Directories from losing the +x, and prevent files that were not +x from becoming it.
Any advice would be appreciated if I am going the wrong way about this. I can't seem to find a good "Sticky Standard" that feels right.
Aucun commentaire:
Enregistrer un commentaire