web-dev-qa-db-fra.com

utiliser root pour mkdir dans le répertoire de base d'un autre utilisateur

avoir un peu de mal à créer un dossier sous un autre utilisateur /home/devuser1/pubic_html dossier. J'essaie d'éviter d'utiliser Sudo et de chercher une alternative. Les autorisations sur ledit dossier se lisent comme suit:

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

Sinon, en supposant que j'utilise le préfixe Sudo, quelles seraient les implications? J'ai lu que c'est une mauvaise pratique d'utiliser Sudo pour créer un dossier. Une fois le nouveau dossier créé, je change toujours la propriété de celui-ci à l'utilisateur en question. Exemple:

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

Sudo -u [username] mkdir /home/[username]/public_html/[folder_name] fonctionne très bien.

D'après ce que je peux voir, les autorisations et la propriété sont les mêmes si je devais me connecter en tant que même utilisateur et créer le dossier sous public_html.

Vous pouvez également appeler su -c "mkdir /home/[username]/public_html/[folder_name]" [username]

29
maGz

Avec install, vous pouvez créer un répertoire avec un propriétaire, un groupe et un mode spécifiques:

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

Compte tenu de ces autorisations, seul le propriétaire du répertoire ou le super utilisateur peut créer des sous-répertoires.

La seule façon d'éviter d'utiliser des privilèges supplémentaires pour créer le dossier est de changer la propriété pour vous-même (avec Sudo), de créer le sous-répertoire et enfin de rendre la propriété au propriétaire, mais cela ne ressemble pas à un bon solution pour moi.

1
RSFalcon7

J'ai essayé de faire un mkdir -p /srv/postgres/data/mydir mais parce que

drwxr-xr-x 3 root root 4.0K Apr 7 08:26 srv a le propriétaire root

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

ni Sudo -u postgres mkdir -p /srv/postgres/data/mydir fonctionne @ maGz

Je dois donc le diviser en deux commandes:

Sudo mkdir -p /srv/postgres/data/mydir
Sudo chown postgres:postgres /srv/postgres -R
0
hannes ach