используя root to mkdir в домашнем каталоге другого пользователя


27

немного затруднившись, пытаясь создать папку в папке другого пользователя /home/devuser1/pubic_html. Я пытаюсь избежать использования sudoи ищу альтернативу. Разрешения для указанной папки читаются как:

drwxr-s--- 2 devuser1  www-data 4096 Apr 28 19:40 public_html

В качестве альтернативы, если я использую sudoпрефикс, каковы будут последствия? Я читал, что это плохая практика sudoдля создания папки. После того, как новая папка создана, я по-прежнему меняю владельца на данного пользователя. Пример:

chown -vR devuser1:www-data /home/devuser1/public_html/$vhost

Ответы:


31

С помощью installвы можете создать каталог с определенным владельцем, группой и режимом:

install -d -o <user> -g <group> -m <mode> <path>

29

sudo -u [username] mkdir /home/[username]/public_html/[folder_name] работает отлично.

Из того, что я вижу, права доступа и владельца совпадают, если я должен войти в систему под тем же пользователем и создать папку в public_html.

Вы также можете позвонить su -c "mkdir /home/[username]/public_html/[folder_name]" [username]


2
Когда вы запускаете sudo -u USERNAME mkdir DIRNAME, вы выполняете mkdirкоманду как пользователь USERNAME. Это не совсем то же самое USERNAME, что вход в систему, поскольку вход в систему также подразумевает настройку переменных среды и т. Д., Но это та часть, которая имеет значение, а именно выполнение процесса от имени конкретного пользователя.
Жиль "ТАК - перестань быть злым"

1
Также этот пользователь может не иметь разрешения.
mahemoff

1

С учетом этих разрешений только владелец каталога или суперпользователь может создавать подкаталоги.

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


да, это сложно. Это глупый вопрос, но каковы мои варианты?
MaGz

как насчет (как root) запуска команды от имени этого пользователя ?: sudo -u devuser1 mkdir /home/devuser1/public_html/test. Это не то же самое, что создание папки с sudoэтим? ls -alпоказывает:drwxr-sr-x 2 devuser1 www-data 4096 Apr 28 23:49 test
maGz

Может быть, я наивен, но я не вижу никакого зла в создании папки с sudo если после этого вы меняете владельца.
RSFalcon7

Из чего ls раскрывается в содержании пользователя public_html, кажется, что изменение владельца не требуется, хотя, возможно, и разрешения.
MaGz

Я думаю, что я также наивен, думая так: я не создаю папку как su вместо этого я использую ее для аутентификации себя как пользователя, который собирается создать папку ... это имеет смысл?
MaGz

0

Я пытался сделать, mkdir -p /srv/postgres/data/mydirно потому что

drwxr-xr-x 3 root root 4.0K Apr 7 08:26 srv имеет владельца root

ни install -d -o <user> -g <group> -m <mode> <path> @ user2313838

ни sudo -u postgres mkdir -p /srv/postgres/data/mydirработает @maGz

Поэтому я должен разделить его на две команды:

sudo mkdir -p /srv/postgres/data/mydir
sudo chown postgres:postgres /srv/postgres -R
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.