usando root per mkdir nella home directory di un altro utente


27

avendo un po 'di tempo difficile cercando di creare una cartella sotto la cartella di un altro utente /home/devuser1/pubic_html. Sto cercando di evitare di usare sudoe cercare un'alternativa. Le autorizzazioni su detta cartella sono le seguenti:

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

In alternativa, supponendo che io utilizzi il sudoprefisso, quali sarebbero le implicazioni? Ho letto che è una cattiva pratica usare sudoper creare una cartella. Dopo aver creato la nuova cartella, sto ancora cambiando la proprietà dell'utente in questione. Esempio:

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

Risposte:


31

Con install, è possibile creare una directory con un proprietario, un gruppo e una modalità specifici:

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

29

sudo -u [username] mkdir /home/[username]/public_html/[folder_name] funziona bene.

Da quello che posso vedere le autorizzazioni e la proprietà è la stessa se dovessi accedere come lo stesso utente e creare la cartella in public_html.

Puoi anche chiamare su -c "mkdir /home/[username]/public_html/[folder_name]" [username]


2
Quando esegui sudo -u USERNAME mkdir DIRNAME, stai eseguendo il mkdircomando come utente USERNAME. Questo non è esattamente equivalente all'accesso come USERNAME, perché l'accesso implica anche l'impostazione delle variabili di ambiente e così via, ma è la parte che conta, vale a dire l'esecuzione di un processo come un particolare utente.
Gilles 'SO- smetti di essere malvagio' il

1
Inoltre, quell'utente potrebbe non essere autorizzato.
mahemoff,

1

Date queste autorizzazioni, solo il proprietario della directory o il superutente può creare sottodirectory.

L'unico modo per evitare l'uso di privilegi extra per creare la cartella è cambiare la proprietà a te stesso (con sudo), creare la sottodirectory e infine restituire la proprietà al proprietario, ma non mi sembra una buona soluzione.


sì, uno duro questo. Questa è una domanda sciocca, ma quali sono le mie opzioni?
martedì

che dire di (come root) eseguire il comando come quell'utente ?: sudo -u devuser1 mkdir /home/devuser1/public_html/test. Non è lo stesso della creazione della cartella con, sudovero? ls -alrivela:drwxr-sr-x 2 devuser1 www-data 4096 Apr 28 23:49 test
maGz

Forse sono ingenuo, ma in realtà non vedo alcun male nel creare una cartella con sudoil tempo che dopo cambi la proprietà.
RSFalcon7,

Da quanto lsrivelato sui contenuti dell'utente public_html, sembra che non sia necessario modificare la proprietà, forse autorizzazioni.
martedì

Penso anche di essere ingenuo nel pensare questo: non sto creando la cartella come su, invece la sto usando per autenticarmi come l'utente che sta per creare la cartella ... ha senso?
martedì

0

Ho provato a fare un mkdir -p /srv/postgres/data/mydirma perché

drwxr-xr-x 3 root root 4.0K Apr 7 08:26 srv ha il proprietario root

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

sudo -u postgres mkdir -p /srv/postgres/data/mydirfunziona @maGz

Quindi devo dividerlo in due comandi:

sudo mkdir -p /srv/postgres/data/mydir
sudo chown postgres:postgres /srv/postgres -R
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.