На моем сервере / vps после того, как я изначально получил учетные данные, я:
adduser meder
visudo
в visudo в самом низу:
meder ALL=(ALL) ALL
И с тех пор я использую meder
, вместе с sudo
команда. Это примерно то, как я должен это делать?
И по теме создания такой группы пользователей, чтобы www-data
и meder
может получить доступ к одним и тем же файлам, какие конкретные привилегии я должен предоставить, как мне настроить его, чтобы оба могли касаться одних и тех же файлов (было бы здорово, если бы был предоставлен образец кода, поскольку я еще не так бегло).
Да, добавление нового пользователя без полномочий root, а затем выполнение sudo от него - это «лучшая практика». Если у вас есть много команд, которые нужно запустить одновременно, многие люди говорят запускать sudo su -
. Однако у sudo есть опция -i, которая используется для предоставления вам корневой оболочки.
Кроме того, если вы хотите отключить интерактивный вход для root, вы можете изменить пароль в /etc/shadow
к '!'.
Чтобы два пользователя имели доступ к одним и тем же файлам, вы должны создать новую группу (назовем ее 'shared'):
$ sudo groupadd shared
Затем вы должны добавить в него своих пользователей:
$ sudo usermod -a -G shared meder
$ sudo usermod -a -G shared www-data
Затем для любого файла или каталога, к которому вы хотите получить доступ, вы должны изменить групповое владение файлом / каталогом:
$ sudo chgrp share [path-to-file]
Если вы хотите, чтобы у пользователя в группе были полные права доступа к файлам, вам, возможно, также придется изменить права доступа к файлам:
$ sudo chmod g+w [path-to-file]
или
$ sudo chmod 775 [path-to-dir]
Читать man chmod
для описания различных синтаксисов разрешений.
Наконец, вы часто захотите установить групповой бит, чтобы новые создаваемые файлы создавались с группой, владеющей каталогом, вместо вашей группы по умолчанию. Например, когда вы создаете пользователя meder, useradd создаст «личную группу пользователей», которая будет называться «meder», и пользователь «meder» будет единственным участником. Это означает, что когда вы создаете новые файлы, они будут принадлежать meder: meder (пользователь meder и группа meder). Если вы хотите, чтобы они принадлежали общей группе, вы должны установить бит идентификатора группы в каталоге. Для этого вам понадобится:
$ sudo chown g+s [path-to-dir]
Полный пример:
$ sudo -i
# mkdir /opt/shared
# groupadd shared
# usermod -a -G shared meder
# usermod -a -G shared www-data
# chgrp shared /opt/shared
# chmod 775 /opt/shared
# chmod g+s /opt/shared
# exit
Единственная проблема, с которой я столкнулся, заключается в том, что большинство файлов создаются с разрешениями 755 или 644, что означает, что вам всегда нужно вручную добавлять разрешения группы на запись для файлов в общей папке. Наверное, есть способ обойти это, просто я этого не знаю.
Наконец, вам не нужно создавать общую группу. Вы можете просто добавить «meder» в группу www-data, а остальное проделать с этой группой.
Если www-data - это учетная запись (вероятно, та, под которой работает apache?), То вам нужно либо добавить meder в соответствующую группу в / etc / group, либо вы можете создать новую группу с meder и www-data (с помощью используя groupadd).
После того, как вы это сделаете, при входе в систему вы можете запустить «newgrp», чтобы сделать эту группу «текущей», и тогда все созданные вами файлы будут иметь групповое владение общей группой.
В Debian обычно не нужно беспокоиться о создании www-данных, поскольку в большинстве случаев пакетировщик Debian предоставляет сценарии сопровождающего для автоматизации установки при установке пакетов deb.