używając root do mkdir w katalogu domowym innego użytkownika

27

trochę trudności z próbą utworzenia folderu w folderze innego użytkownika /home/devuser1/pubic_html. Staram się unikać używania sudoi szukania alternatywy. Uprawnienia do tego folderu brzmią następująco:

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

Alternatywnie, zakładając, że sudoużyję przedrostka, jakie będą tego konsekwencje? Czytałem, że złym zwyczajem sudojest tworzenie folderów. Po utworzeniu nowego folderu nadal zmieniam jego własność na danego użytkownika. Przykład:

chown -vR devuser1:www-data /home/devuser1/public_html/$vhost
maGz
źródło

Odpowiedzi:

31

Za pomocą installmożesz utworzyć katalog z określonym właścicielem, grupą i trybem:

install -d -o <user> -g <group> -m <mode> <path>
użytkownik2313838
źródło
29

sudo -u [username] mkdir /home/[username]/public_html/[folder_name] działa w porządku.

Z tego, co widzę, uprawnienia i własność są takie same, gdybym zalogował się jako ten sam użytkownik i utworzył folder pod public_html.

Możesz także zadzwonić su -c "mkdir /home/[username]/public_html/[folder_name]" [username]

maGz
źródło
2
Po uruchomieniu polecenie sudo -u USERNAME mkdir DIRNAMEwykonuje się mkdirjako użytkownik USERNAME. Nie jest to dokładnie równoważne z logowaniem jako USERNAME, ponieważ logowanie wiąże się również z ustawieniem zmiennych środowiskowych i tak dalej, ale jest to część, która ma znaczenie, a mianowicie wykonanie procesu jako konkretnego użytkownika.
Gilles „SO- przestań być zły”
1
Również ten użytkownik może nie mieć uprawnień.
mahemoff,
1

Biorąc pod uwagę te uprawnienia, tylko właściciel katalogu lub superużytkownik może tworzyć podkatalogi.

Jedynym sposobem, aby uniknąć korzystania z dodatkowych uprawnień do utworzenia folderu, jest zmiana własności do siebie (za pomocą sudo), utworzenie podkatalogu i wreszcie zwrot własności do właściciela, ale nie wydaje mi się to dobrym rozwiązaniem.

RSFalcon7
źródło
tak, to trudne. To głupie pytanie, ale jakie mam opcje?
maGz
co z (jako root) uruchomieniem polecenia jako ten użytkownik ?: sudo -u devuser1 mkdir /home/devuser1/public_html/test. To nie to samo, co tworzenie folderu, sudoprawda? ls -alujawnia:drwxr-sr-x 2 devuser1 www-data 4096 Apr 28 23:49 test
maGz
Może jestem naiwny, ale tak naprawdę nie widzę zła w tworzeniu folderu, o sudoile później zmienisz własność.
RSFalcon7
Z tego ls, co ujawnia treść użytkownika public_html, wydaje się, że zmiana właściciela nie jest wymagana, może nawet uprawnienia.
maGz
Wydaje mi się, że jestem naiwny, myśląc o tym: nie tworzę folderu, ponieważ suzamiast tego używam go do uwierzytelnienia się jako użytkownik, który zamierza utworzyć folder ... czy to ma sens?
maGz
0

Próbowałem zrobić mkdir -p /srv/postgres/data/mydirale, ponieważ

drwxr-xr-x 3 root root 4.0K Apr 7 08:26 srv ma właściciela root

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

ani nie sudo -u postgres mkdir -p /srv/postgres/data/mydirdziała @maGz

Więc muszę podzielić to na dwa polecenia:

sudo mkdir -p /srv/postgres/data/mydir
sudo chown postgres:postgres /srv/postgres -R
Hannes Ach
źródło