Я постоянно возвращаюсь к идеальным веб-разрешениям, я сделал это несколькими способами. Этот пост не такой сложный, поскольку он немного длинный, я хотел предоставить несколько примеров.
Я искал повсюду, но мне интересно, есть ли стандарт де-факто. Спасибо за уделенное время.
В: Кто-нибудь может посоветовать мне лучший подход в соответствии с основными целями разрешений ниже?
0777
Режимwww-data
липкий myself
палка (Если возможно, я не думаю, что в setfacl существует значение по умолчанию)Ubuntu 16.04
и 16.10
(Настольные версии на данный момент)Я установил это заранее, мне интересно, почему это выделяет мой файл оранжевым цветом, это меня беспокоит. Целью было сохранить текущие и новые файлы как www-data
.
sudo chgrp -R www-data /var/www
sudo chmod -R g+rws /var/www # <-- s or S?
Вышеупомянутое работает по большей части, но Я читал, что это плохо для использования, Зачем? Так что я попробовал 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
функция Это еще не совсем правильно, но идею вы поняли.
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
от того, чтобы стать им.
Любой совет будет признателен, если я ошибаюсь в этом. Кажется, я не могу найти хороший "Sticky Standard", который мне нравился бы.
Я не понимал, что этот пост все еще здесь, поэтому отвечал на свой вопрос. Попробуйте использовать 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.
Надеюсь это поможет.