Verwenden von root für mkdir in dem Ausgangsverzeichnis eines anderen Benutzers


27

Es ist schwierig, einen Ordner unter dem /home/devuser1/pubic_htmlOrdner eines anderen Benutzers zu erstellen . Ich versuche zu vermeiden, sudonach einer Alternative zu suchen. Die Berechtigungen für diesen Ordner lauten wie folgt:

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

Angenommen, ich verwende das sudoPräfix. Was wären die Auswirkungen? Ich habe gelesen, dass es eine schlechte Übung ist sudo, einen Ordner zu erstellen. Nachdem der neue Ordner erstellt wurde, ändere ich immer noch den Besitz des betreffenden Benutzers. Beispiel:

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

Antworten:


31

Mit installkönnen Sie ein Verzeichnis mit einem bestimmten Eigentümer, einer bestimmten Gruppe und einem bestimmten Modus erstellen:

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

29

sudo -u [username] mkdir /home/[username]/public_html/[folder_name] funktioniert gut.

Soweit ich sehen kann, sind die Berechtigungen und der Besitz identisch, wenn ich mich als derselbe Benutzer anmelden und den Ordner unter erstellen würde public_html.

Sie können auch anrufen su -c "mkdir /home/[username]/public_html/[folder_name]" [username]


2
Wenn Sie ausführen sudo -u USERNAME mkdir DIRNAME, führen Sie den mkdirBefehl als Benutzer aus USERNAME. Dies entspricht nicht genau dem Anmelden als USERNAME, da das Anmelden auch das Festlegen von Umgebungsvariablen usw. beinhaltet, aber es ist der Teil, der zählt, nämlich das Ausführen eines Prozesses als bestimmter Benutzer.
Gilles 'SO- hör auf böse zu sein'

1
Dieser Benutzer hat möglicherweise auch keine Berechtigung.
Mahemoff

1

Mit diesen Berechtigungen kann nur der Eigentümer des Verzeichnisses oder der Superuser Unterverzeichnisse erstellen.

Die einzige Möglichkeit, zusätzliche Berechtigungen zum Erstellen des Ordners zu vermeiden, besteht darin, den Eigentümer selbst zu ändern (mit sudo), das Unterverzeichnis zu erstellen und den Eigentümer schließlich an den Eigentümer zurückzugeben, sieht für mich jedoch nicht nach einer guten Lösung aus.


Ja, das ist eine schwierige Frage. Dies ist eine dumme Frage, aber was sind meine Optionen?
MAGZ

Was ist mit (als Root) Ausführen des Befehls als dieser Benutzer ?: sudo -u devuser1 mkdir /home/devuser1/public_html/test. Das ist nicht dasselbe wie das Erstellen des Ordners, sudooder? ls -alenthüllt:drwxr-sr-x 2 devuser1 www-data 4096 Apr 28 23:49 test
maGz

Vielleicht bin ich naiv, aber ich sehe kein Übel darin, einen Ordner mit zu erstellen, sudosolange Sie danach den Besitzer wechseln.
RSFalcon7

Aus den lsAngaben zum Inhalt des Benutzers geht hervor public_html, dass ein Eigentümerwechsel nicht erforderlich ist. Möglicherweise sind jedoch Berechtigungen erforderlich.
MAGZ

Ich denke, dass ich auch naiv bin, wenn ich Folgendes denke: Ich erstelle den Ordner nicht als su, sondern benutze ihn, um mich als der Benutzer zu authentifizieren , der den Ordner erstellen wird. Macht das Sinn?
MAGZ

0

Ich habe versucht, ein, mkdir -p /srv/postgres/data/mydiraber weil zu tun

drwxr-xr-x 3 root root 4.0K Apr 7 08:26 srv hat besitzer root

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

noch sudo -u postgres mkdir -p /srv/postgres/data/mydirfunktioniert @maGz

Also muss ich es in zwei Befehle aufteilen:

sudo mkdir -p /srv/postgres/data/mydir
sudo chown postgres:postgres /srv/postgres -R
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.