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

применить схему разрешений unix к структуре каталогов

Мне нравится исправлять разрешения на нашем файловом сервере через cron. В общем, мне нравится устанавливать все на umask 027, игнорируя любые изменения, сделанные пользователем. Для определенных подпапок мне нравится применять umask 077.

Вопрос не в том, как установить и использовать umask, а в том, чтобы неоднократно исправлять разрешение через cronjob, если пользователь что-то изменил.

например, в итоге должно получиться так

drwx ------ /home/user/.ssh
drwxr-x --- / hom / user / foobar
drwx ------ / hom / пользователь / почта

Сложный путь (которого я хочу избежать) выглядит так:

chmod -R o-rwx /home/user  
chmod -R g+r /home/user  
find /home/user -typer d -exec chmod g+x '{}' \;  
chmod go-rwx /home/user/{Mail,.ssh}

Простите меня, если я упустил суть, но похоже, что вам нужна запись crontab, которая довольно часто запускает следующие команды:

chmod -R go-rwx /home/user/.ssh
chmod -R g-w /home/user/foobar
chmod -R o-rwx /home/user/foobar
chmod -R go-rwx /home/user/Mail

или это не то, что вы спрашивали, как делать?

Вот что мы используем для чего-то похожего (для всех папок, не принадлежащих root). Казалось бы ненужным find команды должны гарантировать, что мы не устанавливаем разрешения для какой-либо папки, которая уже была установлена ​​правильно. Более ранний сценарий, который слепо chmod-ed все папки приводили к тому, что некоторые из моих резервных копий думали, что файлы изменились в середине резервного копирования, и я тратил кучу носителей на резервное копирование одних и тех же файлов каждый день.

Результирующий набор разрешений:

  • Домашние каталоги имеют режим 711 для предотвращения случайного просмотра, но все же позволяют Apache видеть в папке public_html пользователя.
  • public_html - это режим 755, как и все папки внутри public_html Кроме для частной папки верхнего уровня, которую мы используем для хранения вещей, которые в противном случае были бы гигантскими вложениями электронной почты
  • все файлы в public_html имеют режим 644

#!/bin/sh

cd /home/CAE
# For all directories except those owned by root
for user in `ls -l | grep -v ' root ' | egrep '^d' | awk '{print $NF}'`; do
    cd /home/CAE
    # Fix top-level permissions to avoid people browsing accounts, but
    # to allow normal Web access to public_html
    find . -mindepth 1 -maxdepth 1 -name ${user} -type d ! -perm 0711 -print0 |    xargs -r -0 chmod 711

    # Make sure user has a Web directory (and a private one, also)
    if [ ! -d ${user}/public_html/private ]; then
        mkdir -p ${user}/public_html/private
        chown -R ${user}:users ${user}/public_html
    fi

    cd ${user}/public_html

    # Set top-level private folder to mode 711 if it isn't already
    find . -mindepth 1 -maxdepth 1 -name private -type d ! -perm 0711 -print0 | xargs -r -0 chmod 711

    # Set all directories except top-level private to mode 755 that aren't already
    find . -maxdepth 1 -type d ! -name private ! -perm 0755 -print0 | xargs -r -0 chmod 755
    find . -mindepth 2 -type d ! -perm 0755 -print0 | xargs -r -0 chmod 755

    # Set all files mode 644 that aren't already
    find . -type f ! -perm 0644 -print0 | xargs -r -0 chmod 644

done

Вы можете смонтировать раздел с поддержкой acl и использовать команды getfacl и setfacl для создания и восстановления резервных копий.