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

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

né 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.