Изменение прав доступа к файлам пользователя для автоматизации создания Apache VirtualHost

Изменение прав доступа к файлам пользователя для автоматизации создания Apache VirtualHost

В настоящее время у меня есть небольшая машина Ubuntu Server 12.04 (тестовая среда) с примерно 3 пользователями без прав root. У каждого пользователя есть свой собственный public_htmlкаталог под его home..., что позволяет им развертывать несколько приложений как именованные виртуальные хосты. Каждый пользователь принадлежит к группе Apache www-data, настроенной следующим образом:

sudo usermod -a -G www-data [username]
sudo chown -R [username]:www-data /home/[username]/public_html
sudo chmod 2750 /home/[username]/public_html

Теперь, как пользователь root, я нахожусь в процессе создания скрипта bash, который автоматизирует создание папок для VirtualHost под запрошенным пользователем, public_htmlа также создаст связанную запись в /etc/apache2/sites-available/. Скрипт (запущенный с sudo) запросит пользователя ( $uzer) и желаемое имя виртуального хоста ( $vhost). Пока что после выполнения нескольких проверок я в конечном итоге получаю следующее...

mkdir -vp /home/$uzer/public_html/$vhost
mkdir -vp /home/$uzer/public_html/$vhost/www
mkdir -vp /home/$uzer/public_html/$vhost/logs
mkdir -vp /home/$uzer/public_html/$vhost/backups

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

chown -vR $uzer:www-data /home/$uzer/public_html/$vhost
chmod 2750 /home/$uzer/public_html/$vhost

Мои вопросы:

  • Правильная/идеальная ли у меня структура папок?
  • Я знаю, что использовал рекурсивный -Rпараметр (), но следует ли мне повторить то же самое для $vhost/www, $vhost/logsи $vhost/backups?
  • Правильно ли я понимаю, что указанный выше chmod, вероятно, избыточен?
  • Есть ли способ запустить mkdirкоманды от имени пользователя $uzer?

решение1

В: Правильна ли/идеальна ли моя структура папок?

A: Структура папок кажется правильной.

В: Я знаю, что использовал рекурсивную опцию (-R), но следует ли мне повторить то же самое для $vhost/www, $vhost/logs и $vhost/backups?

A: Было бы излишним запускать его в этих каталогах.

В: Правильно ли я понимаю, что указанный выше chmod, вероятно, избыточен?

Да, технически это избыточно, потому что ваш первоначальный sudo, который создает каталоги, устанавливает 'set group id bit', но установка этого бита (2 в 2750) не является гарантией. Я видел каталоги с этим, где пользователи либо перемещали файлы в каталог, либо случайно меняли группу в файлах, поэтому я бы оставил это.

Есть ли способ запустить команды mkdir от имени пользователя $uzer?

root$ su -u $user -c "mkdir ..."

Также вы можете сэкономить один шаг на chmod для /www, /log и /backups, используя переключатель mkdir --mode=....

Например

mkdir -vp --mode=2750 /home/$uzer/public_html/$vhost
mkdir -vp --mode=2750 /home/$uzer/public_html/$vhost/www
mkdir -vp --mode=2750 /home/$uzer/public_html/$vhost/logs
mkdir -vp --mode=2750 /home/$uzer/public_html/$vhost/backups

решение2

  1. На самом деле не имеет значения, какую структуру папок вы используете.
  2. Если вы используете -Rопцию в chown, она повлияет только на те файлы и каталоги, которые присутствуют на момент запуска команды.
  3. Нет, потому что вам всегда придется использовать chmodкоманду для изменения разрешения, если вы вносите какие-либо изменения вручную.
  4. Вы можете попросить /etc/sudoersфайл разрешить $user создать любой каталог с помощью mkdirкоманды.

Связанный контент