Come specificare il gruppo con chmod?


34

Mi è stato chiesto di aggiungere autorizzazioni group-wrx a una directory nella cartella home di un altro utente.

Credo che ciò che dovrei fare sia eseguire chmod 771 -R directorynamenella directory principale. Quello che non riesco a trovare da nessuna parte sui tubi è come specificare a quale gruppo voglio dare queste autorizzazioni. Sono personalmente in un certo numero di gruppi e in un gruppo che non conosco come root.

Nel caso in cui sia importante, il sistema esegue Redhat 5.4.

Risposte:


37

La chmod()chiamata di sistema e, per estensione, il chmodprogramma, non influisce sul gruppo di un file o directory (o altro tipo di file: blocco speciale, carattere speciale, socket, ... symlink è qualcosa di un caso speciale). Pertanto, il gruppo a cui viene concessa l'autorizzazione sarà il gruppo a cui appartiene il file o la directory.

Per aggiungere rwxautorizzazioni di gruppo , è necessario utilizzare:

chmod -R g+rwx DirectoryName

Tuttavia, questo aggiunge le autorizzazioni per ogni file e per ogni directory e non tutti i file dovrebbero essere eseguibili. Personalmente, sarei molto infelice se qualcuno fornisse l'autorizzazione alla scrittura di gruppo su tutte (o su qualsiasi) delle mie directory, ma questa è un'altra storia.

Per influire solo sulle directory, utilizzare findinvece:

find DirectoryName -type d -exec chmod g+rwx {} +

(La +notazione è POSIX 2008; non tutti i sistemi Unix lo supportano, sebbene Linux lo faccia.)


1
Se usi + X (maiuscola X) aggiungerai l'autorizzazione di esecuzione (o 'ricerca') solo se il file è una directory o aveva già l'autorizzazione di esecuzione per alcuni utenti. linux.die.net/man/1/chmod
Dave,

@Dave: chmod +Xè supportato anche su BSD (Mac OS X), a quanto pare. Un attento esame di POSIX chmodindica che +Xdopo tutto è una funzione POSIX: il simbolo perm X deve rappresentare la parte di esecuzione / ricerca dei bit della modalità file se il file è una directory o se i bit della modalità file corrente (non modificata) hanno almeno uno dei i bit di esecuzione (S_IXUSR, S_IXGRP o S_IXOTH) impostati. Deve essere ignorato se il file non è una directory e nessuno dei bit di esecuzione è impostato nei bit della modalità file corrente. Nota la logica di seguito.
Jonathan Leffler,

12

Ogni file su un filesystem ext ha:

  1. Un utente proprietario
  2. Un gruppo di proprietari
  3. Autorizzazioni per questo utente, questo gruppo e tutti gli altri.

Se si stanno impostando le autorizzazioni del gruppo rwx su un file, solo il gruppo proprietario di quel file può leggerlo / scriverlo / eseguirlo. Puoi, tuttavia, cambiare utente e proprietario con:

chown username file1 file2 ...
chown -R username somedir
chgrp groupname file1 file2 ....
chgrp -R groupname somedir
chown username:groupname file1 file2 ...

Esistono diverse implementazioni per i privilegi di filesystem estesi, ad esempio ACL (Access Control Lists) su Mac OS X, ma poiché non sono un esperto di Linux, probabilmente dovresti chiedere in Server Fault .


"quindi se stai impostando i permessi del gruppo rwx su un file, solo il gruppo proprietario di quel file può leggerlo / scriverlo / eseguirlo" mi rendo conto che potrebbe essere fuorviante, prima di tutto se sei l'utente proprietario, ovviamente il le regole dell'utente proprietario hanno la precedenza, se l'utente non è proprietario, né nel gruppo proprietario, si applicano le regole per gli altri.
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.