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

Добавлен новый пользователь в группу www-data и sudoers, но все еще не уверен, почему пользователь создает новые каталоги как root

Я новичок в системном администрировании Linux (работа с пользователями и группами), но у меня есть большой опыт работы с командной строкой в ​​качестве разработчика. Прямо сейчас я пытаюсь убедиться, что три пользователя, которых я добавил на свой сервер Debian в группе www-data, имеют соответствующие и ожидаемые разрешения. Цель состоит в том, чтобы все каталоги в / var / www / html / были как www-data: www-data (я думаю, что это то, что я хочу по крайней мере ... Я делаю это, чтобы у меня не было смешанных разрешений между вещи, созданные под root и www-данными).

Я добавил трех своих новых пользователей в файл sudoers с опцией ALL (такой же, как root).

Я не знаю, как думать о пользователях сейчас, и мне нужно в этом немного совета.

Например, когда я вхожу в систему как разработчик1 и запускаю команду mkdir, он сообщает мне, что у меня нет соответствующего разрешения для этого. Итак, я sudo и ввожу пароль для своего пользователя, а затем mkdir test ... и он отображается как каталог с root в качестве владельца и root в качестве группы.

Как я могу сделать developer1 пользователем, который может создавать каталоги с www-данными в качестве владельца и группы? Это правильный подход?

Спасибо.

Причина, по которой ваши созданные sudo каталоги принадлежат root: root, заключается в том, что sudo буквально позволяет вам запускать команды как другой пользователь, в данном случае как root (поскольку вы не указали другое имя пользователя).

Поместите developer1 в группу www-data, затем убедитесь, что каталог, в котором этот пользователь должен создавать файлы / каталоги, принадлежит группе www-data и доступен для записи указанной группе.

Теперь developer1 может создавать там файлы и каталоги, потому что членство в группах позволяет ему это делать.

Но затем вы заметите, что эти новые каталоги / файлы принадлежат developer1: developer1 (или, альтернативно, developer1: users или что-то в этом роде). Чтобы исправить это, вы можете сделать developer1's основная группа www-data, и в этом случае все, что он создает, будет принадлежать группе www-data.

Если ваша цель - заставить этого пользователя создавать файлы где-нибудь в другой группе (например, пользователей или разработчиков), но создавать их как www-данные, например, / var / www, ну, это то, чего я еще не понял. Пока что я застрял с одним из двух (ну, на самом деле трех: третий - просто жить с этим) обходных путей:

  1. Попросите пользователя (ов) вручную chgrp файлы и каталоги при их создании. Может выполняться рекурсивно и / или в пакетном режиме, поэтому вы можете, например, загрузить огромное количество файлов, а потом chgrp их всех сразу.
  2. Настройте задание cron, которое запускается время от времени (например, каждые 5-10 минут) и рекурсивно chgrps все, что находится под вашим веб-корнем (или чем-то еще, что вы пытаетесь контролировать) в www-data. Кроме того, вы можете использовать это задание cron для chown -R www-data:www-data /var/www чтобы убедиться, что все файлы / каталоги принадлежат пользователю www-data, а также группе www-data.

Я понимаю, что ни один из них не идеален, хотя после создания файла он сохранит свое право собственности независимо от того, кто его редактирует.

Это должно работать:

# chown -R www-data.www-data /var/www/html
# find /var/www/html -type d -print0 | xargs -0 chmod g+s
# useradd developer1 -G www-data
# useradd developer2 -G www-data

Что происходит Setgid и группы. Setgid позволяет всем файлам и каталогам, созданным в / var / www / html, принадлежать текущей группе (в данном случае www-data). Добавляя учетные записи разработчиков в группу www-data, вы гарантируете, что у них есть разрешение на запись.

Вы можете столкнуться с дополнительными проблемами, если разработчики копируют файлы в каталог без разрешений на запись для группы, но их можно исправить вручную с помощью chmod владельцем.