Назад | Перейти на главную страницу

Правильные разрешения для данных WWW

Я постоянно возвращаюсь к идеальным веб-разрешениям, я сделал это несколькими способами. Этот пост не такой сложный, поскольку он немного длинный, я хотел предоставить несколько примеров.

Я искал повсюду, но мне интересно, есть ли стандарт де-факто. Спасибо за уделенное время.

В: Кто-нибудь может посоветовать мне лучший подход в соответствии с основными целями разрешений ниже?

$ 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 файлы / каталоги setfacl отдельно

Так что у меня возникла безумная идея сделать .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.

Надеюсь это поможет.