GNU/Linux >> Linux Esercitazione >  >> Linux

Ottenere nuovi file per ereditare le autorizzazioni di gruppo su Linux?

Ho un problema con le autorizzazioni su un server Linux. Sono abituato a BSD. Quando una directory è di proprietà di un gruppo in cui l'utente che la possiede non si trova, ad esempio www-data, i file creati in essa saranno di proprietà di quel gruppo. Questo è importante perché voglio che i file siano leggibili dal server web (che non eseguirò come root), ma così un utente può comunque inserire nuovi file nella directory. Non posso inserire gli utenti in www-data perché possono leggere tutti i siti Web degli altri utenti.

Voglio che il server web legga tutti i siti web, voglio che gli utenti possano cambiare i propri.

I permessi sono impostati in questo modo sulle cartelle al momento….

drwxr-x--- 3 john www-data 4096 Feb 17 21:27 john

È un comportamento standard su BSD che le autorizzazioni funzionino in questo modo. Come posso convincere Linux a farlo?

Risposta accettata:

Sembra che tu stia descrivendo la funzionalità di setgid bit in cui quando una directory che lo ha impostato, forzerà tutti i nuovi file creati al suo interno ad avere il loro gruppo impostato sullo stesso gruppo impostato nella directory principale.

Esempio

$ whoami
saml

$ groups
saml wheel wireshark

imposta una directory con permessi + proprietà

$ sudo mkdir --mode=u+rwx,g+rs,g-w,o-rwx somedir
$ sudo chown saml.apache somedir
$ ll -d somedir/
drwxr-s---. 2 saml apache 4096 Feb 17 20:10 somedir/

tocca un file come saml in questa directory

$ whoami
saml

$ touch somedir/afile
$ ll somedir/afile 
-rw-rw-r--. 1 saml apache 0 Feb 17 20:11 somedir/afile

Questo ti darà approssimativamente quello che sembra che tu voglia. Se vuoi davvero esattamente ciò che hai descritto, penso che dovrai ricorrere alla funzionalità degli elenchi di controllo di accesso per ottenerlo (ACL).

ACL

Se vuoi avere un po' più di controllo sui permessi sui file che vengono creati nella directory, somedir , puoi aggiungere la seguente regola ACL per impostare le autorizzazioni predefinite in questo modo.

prima

$ ll -d somedir
drwxr-s---. 2 saml apache 4096 Feb 17 20:46 somedir

imposta le autorizzazioni

$ sudo setfacl -Rdm g:apache:rx somedir
$ ll -d somedir/
drwxr-s---+ 2 saml apache 4096 Feb 17 20:46 somedir/

Nota il + alla fine, ciò significa che a questa directory sono applicati ACL.

$ getfacl somedir
# file: somedir
# owner: saml
# group: apache
# flags: -s-
user::rwx
group::r-x
other::---
default:user::rwx
default:group::r-x
default:group:apache:r-x
default:mask::r-x
default:other::---

dopo

$ touch somedir/afile
$ ll somedir/afile 
-rw-r-----+ 1 saml apache 0 Feb 17 21:27 somedir/afile
$ 

$ getfacl somedir/afile
# file: somedir/afile
# owner: saml
# group: apache
user::rw-
group::r-x              #effective:r--
group:apache:r-x        #effective:r--
mask::r--
other::---

Avviso con le autorizzazioni predefinite (setfacl -Rdm ) impostato in modo che i permessi siano (r-x ) per impostazione predefinita (g:apache:rx ). Questo costringe tutti i nuovi file ad avere solo il loro r bit abilitato.

Correlati:Cheat Sheet di ShellScript
Linux
  1. Ho aggiunto un utente a un gruppo, ma le autorizzazioni di gruppo sui file non hanno ancora alcun effetto?

  2. Linux:come impostare le autorizzazioni file predefinite per tutte le cartelle/file in una directory?

  3. Forzare nuove autorizzazioni sui file dopo Rsync da Seedbox?

  4. Elenca i membri di un gruppo in Linux

  5. Come impostare i permessi Linux per la cartella WWW?

Comando Rm in Linux

Come modificare ricorsivamente le autorizzazioni dei file in Linux

Come trovare file in base alle loro autorizzazioni in Linux

8 comandi fondamentali di gestione dei file Linux per i nuovi utenti

Crea nuovi gruppi in Linux con il comando Groupadd

Comprendere le autorizzazioni di base dei file e la proprietà in Linux