Concedi autorizzazioni di scrittura a più utenti su una cartella in Ubuntu


80

Esiste una cartella di proprietà dell'utente tomcat6:

drwxr-xr-x 2 tomcat6 tomcat6 69632 2011-05-06 03:43 document

Voglio consentire a un altro utente (ruser) autorizzazioni di scrittura sulla cartella documenti. I due utenti (tomcat6 e ruser) non appartengono allo stesso gruppo. Ho provato ad usare setfacl:

sudo setfacl -m  u:ruser:rwx document

ma questo mi dà setfacl: document: Operation not supportederrore. Gentilmente mi aiuti.

Risposte:


144

Esistono due modi per farlo: impostare la directory su "world" scrivibile o creare un nuovo gruppo per i due utenti e rendere la directory scrivibile per quel gruppo.

Ovviamente renderlo scrivibile nel mondo è una cosa negativa, quindi la seconda opzione è preferibile.

Gli utenti in Linux possono appartenere a più di un gruppo. In questo caso vuoi creare un nuovo gruppo, chiamiamolo tomandruser:

sudo groupadd tomandruser

Ora che il gruppo esiste, aggiungi i due utenti:

sudo usermod -a -G tomandruser tomcat6
sudo usermod -a -G tomandruser ruser

Ora non resta che impostare le autorizzazioni sulla directory:

sudo chgrp -R tomandruser /path/to/the/directory
sudo chmod -R 770 /path/to/the/directory

Ora solo i membri del gruppo tomandruser possono leggere, scrivere o eseguire qualsiasi cosa all'interno della directory. Nota l'argomento -R ai comandi chmod e chgrp: questo dice loro di ricorrere in ogni sottodirectory della directory di destinazione e modificare ogni file e directory che trova.

Potresti anche voler cambiare 770 in qualcosa del tipo 774se vuoi che gli altri siano in grado di leggere i file, 775se vuoi che gli altri leggano ed eseguano i file, ecc. Le modifiche alle assegnazioni di gruppo non avranno effetto fino a quando gli utenti non si disconnettono e tornano indietro nel.

Se vuoi anche (probabilmente lo fai) che i nuovi file creati all'interno della directory da uno degli utenti siano automaticamente scrivibili da altri nel gruppo, vedi qui .


2
Probabilmente vuoi anche impostare il flag set-group-ID per le directory, in modo da creare automaticamente nuovi file e sottodirectory di proprietà del gruppo giusto:sudo find /path/to/the/directory -type d -exec chmod 2770 '{}' \;
Marcello Nuccio,

8
Eviterei di usare chmod 770, 775 o altro. Ciò incasina le autorizzazioni di tutti i file. Usa invece qualcosa di simile chmod -R g+wper aggiungere permessi di scrittura senza confondere tutto il resto.
Christian Varga,

2
Se un utente crea un nuovo file lì (diciamo, mysql by SELECT INTO OUTFILE), imposta le autorizzazioni per il suo gruppo primario ( mysqlin questo caso) e il file non è comunque accessibile da un altro utente. Come aggirare questo?
Olexa,

2
Cosa succede se si desidera concedere agli utenti l'accesso in scrittura a una cartella senza modificare la proprietà della cartella, ad esempio se non si desidera pasticciare con le autorizzazioni di apache su una cartella public_html?
codecowboy,

2
Nota: "Le modifiche alle assegnazioni di gruppo non avranno effetto fino a quando gli utenti non si disconnettono e accedono nuovamente." L'ho perso :)
Vladimir Vukanac il

3

Lo script di esempio mostra un esempio per w (write)/ r (read) / x (execute)autorizzare il percorso della cartella specificato /path/to/the/directoryper USER1e USER2. Se si desidera fornire solo l'accesso in scrittura, sostituire rwxcon w.


#!/bin/bash

# Block others and people in the same group to do read/write/execute on give folder:    
sudo chmod 700 /path/to/the/directory 

#Give read/write/execute access to USER1 on give folder:
sudo setfacl -R -m user:USER1:rwx  /path/to/the/directory 

#Give read/write/execute access to USER2 on give folder:
sudo setfacl -R -m user:USER2:rwx  /path/to/the/directory 
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.