Come posso impostare una cartella in modo che tutto ciò che viene creato erediti le autorizzazioni?


18

Ho una cartella / data (in realtà una partizione) per tutti i dati che dovrebbero essere accessibili a tutti gli utenti (in questo caso i membri della famiglia). Tutti noi abbiamo account utente individuali e spesso siamo tutti collegati in qualsiasi momento su questo PC.

Come posso impostare le autorizzazioni in modo che tutti conserviamo l'accesso ai file lì, indipendentemente da chi li crea, comprese le nuove cartelle? Se creo una cartella ottiene il mio utente e il mio gruppo, quindi nessun altro può scriverci.


per i visitatori. Se si desidera solo ereditare il nome del gruppo chmod -R g+s /parentdir. Nota: eseguire chmod -R prima di questo, se necessario
Thamme Gowda,

1
Nota sopra: il -Rflag to chmodè molto raramente utile perché raramente desideriamo che le directory (che richiedono sempre alcune autorizzazioni di esecuzione) e i file regolari (che raramente richiedono autorizzazioni di esecuzione) abbiano le stesse autorizzazioni
Zanna,

Risposte:


17

Un altro approccio consiste nell'utilizzare gli elenchi di controllo di accesso, un superset di autorizzazioni per i file.

Prima di tutto, dobbiamo installare il pacchetto acl Installa acl :

sudo apt-get install acl

Prima di Ubuntu 14.04 , la partizione deve essere montata con l'opzione aclaffinché funzioni quanto segue. Potrebbe essere aggiunto in /etc/fstab, come in

UUID=<XXXX>  /media/shared  ext4  noatime,acl  0  2

o per un filesystem già montato

sudo mount -o remount,acl /media/shared

Successivamente, è necessario creare un nuovo gruppo al quale verranno aggiunti tutti gli utenti autorizzati ad accedere alla condivisione in modalità lettura / scrittura. Io lo chiamo usershare. È possibile utilizzare un gruppo già esistente.

sudo addgroup usershare

Ora aggiungiamo gli utenti enzotibe steevca quel gruppo:

sudo gpasswd -a steevc  usershare
sudo gpasswd -a enzotib usershare

(valido al prossimo accesso).

Quindi aggiungiamo un ACL con le rwxautorizzazioni per il gruppo usersharea tutti i file già presenti/media/shared

sudo setfacl -Rm g:usershare:rwX /media/shared

Infine aggiungiamo un ACL predefinito con rwxautorizzazioni per il gruppo usershareper tutti i file creati da ora in poi all'interno/media/shared

sudo setfacl -d -Rm g:usershare:rwX /media/shared

Ora tutti gli utenti del usersharegruppo dispongono delle autorizzazioni complete per tutti i file in /media/shared. Le autorizzazioni di ciascun utente sulle proprie home directory e su altre non sono interessate.

Ho testato questa soluzione e sembra funzionare, ma suggerimenti e correzioni sono i benvenuti.

Nota : i nuovi file e directory creati nella directory considerata avranno i permessi di scrittura per il usersharegruppo, ma i file copiati o spostati nella cartella manterranno le loro autorizzazioni originali. Se l'utente, a quanto ho capito, richiede solo l'accesso in scrittura alle directory appena create, questo non è un problema. Altrimenti dovrebbe modificare le autorizzazioni a mano. Vedi questa risposta su come superare questo, definendo l'umask degli utenti 002.


Non conosco molto bene acl, puoi testare e copiare un file con autorizzazioni come rw-r - r-- dalla tua cartella home alla cartella condivisa e vedere se le autorizzazioni cambiano nel tuo rwx predefinito per il usersharegruppo?
organizzare l'

@arrange: no, non funziona come previsto. Andando a sottolineare nella risposta. Grazie
enzotib,

Vorrei aggiungere che il /etc/fstab/ remountstep non è richiesto, perché ext4dovrebbe essere montato con l' aclopzione attiva di default.
enzotib,

8
  1. Crea cartella.

    Per esempio:

    mkdir /mnt/family
    

    Se avete bisogno di montare la partizione a loro ... se ext4 tutto ciò che serve a /etc/fstabIS

    UUID=xxx    /mnt/family ext4    **rw,exec,defaults,auto,async   0   2**
    
  2. Crea gruppo myfam.

    addgroup myfam
    
  3. Aggiungi alcuni utenti a quel gruppo

    adduser papa myfam  
    adduser mom myfam
    
  4. Ora prendi e dai il permesso.

    Penso che dovresti iniziare, dal cambiare umask.

    Autorizzazioni di file system predefinite e diritti di accesso in 12.04

    chown -R you.myfam /mnt/family  
    chmod -R g+rwx /mnt/family  
    

    Ora più importante. Quella riga crea setgidtutto ciò che crei in quella cartella con i tuoi utenti come proprietario e gruppo myfam. Ciò consente al sistema di sostituire il gruppo primario dell'utente.

    chmod -R g+s /mnt/family   
    

3

La cosa più semplice che viene in mente è quella di aggiungere ogni utente al gruppo di tutti gli altri utenti.

Quindi cambia umask di ogni utente da 022 a 002, questo potrebbe essere fatto /etc/profile.

modificare

Il primo passaggio potrebbe essere sostituito dal seguente: rendere tutti gli utenti appartenenti al usersgruppo come gruppo primario.

Edi2

Come suggerito da @James_Henstridge, può essere conveniente impostare il bit setgid nella directory principale, in modo che i nuovi file e directory creati abbiano lo stesso gruppo, indipendentemente dall'utente. In questo modo è possibile evitare il set userscome gruppo primario per gli utenti.


Potresti voler modificare la tua risposta per suggerire anche di impostare il bit setgid su tutte le directory in /datamodo che i nuovi file ereditino la proprietà del gruppo.
James Henstridge,

edit3 :) Se copi un file nella /datacartella, le autorizzazioni non vengono ereditate, quindi i vecchi file con autorizzazioni gw non saranno modificabili da altri. edit4: l'impostazione userscome gruppo principale e umask0002 non è sicuramente una buona idea in quanto chiunque di quel gruppo sarà in grado di modificare i file appena creati.
organizzare l'

@arrange: per quanto riguarda il tuo edit4, ho suggerito di mettere in usersgruppo solo gli utenti autorizzati ad avere accesso rw alla condivisione. Era una questione di convenienza, poteva anche creare un altro gruppo per quello. Per quanto riguarda il tuo edit3, non è corretto, il file copiato acquisisce il gruppo di cartelle.
enzotib,

@enzotib: per ribadire il mio punto in altre parole: edit4 - se usersè il mio gruppo principale e ci sono più utenti in questo gruppo, allora sono in grado di modificare i miei file anche al di fuori della directory condivisa; edit3 - Ho scritto le autorizzazioni , NON il gruppo di cartelle.
organizzare l'

@arrange: il tuo punto è corretto, ho appena scritto un'altra risposta, potrebbe essere interessante sentire la tua opinione.
enzotib,

2

Sembra un lavoro per ACL. Giles ha una risposta molto approfondita sul sito Unix e Linux SE che mi ha aiutato a risolvere lo stesso problema.


1
Ha funzionato! Ho visto altre risposte usando ACL, ma questa è l'unica che ho visto che cambia le autorizzazioni non solo dei nuovi file e directory creati nella directory condivisa, ma anche di quelli copiati o spostati in essa.
ダ ン ボ ー

0

Non capisco, sono tutti linux-linux, linux-windows, linux - ???, usando Samba ?, SSH?, Pigeons ?; in ogni caso, devi includere gli altri nel gruppo con il tuo nome utente (il tuo gruppo) e otterranno le stesse autorizzazioni di te.


Si tratta di più utenti su un PC. Sono sicuro che ci deve essere un modo per ottenere le autorizzazioni predefinite a qualcosa di utile.
Steevc,

0

Mi sono imbattuto in questa domanda durante la ricerca di risposte per il mio problema PERMESSO DI GRUPPO. Ho letto la domanda e sembra che stia già implementando ciò che la domanda cerca di realizzare.

Quindi mi sono preso la briga di rispondere.

Ho già impostato una condivisione per tutti gli utenti sulla mia lan con sola lettura ed esecuzione, e solo il mio account ha l'autorizzazione per scrivere sulle cartelle condivise.

Ho un server multiuso sulla mia lan che usa Ubuntu 12.04 LTS Desktop Edition. Ho un mix di macchine client di Linux e Windows.

Ecco come l'ho impostato:

1. Sul mio server, ho account utente con nome admineclientone

L' adminaccount è l'account creato quando ho installato Ubuntu e l' clientoneaccount è l'account creato utilizzando il menu ACCOUNTS UTENTE in Ubuntu. Ha solo un'autorizzazione standard, nessun privilegio di amministratore e viene aggiunto al usersgruppo. Ovviamente puoi farlo usando solo il terminale. Aggiungi altri account utente aggiuntivi per i tuoi computer client.

2.La partizione / cartella condivisa viene montata automaticamente in fstab usando solo l'opzione predefinita.

3.La mia rete si trova in un ambiente di gruppo di lavoro ed è su mylangruppo di lavoro.

Tutte le macchine nella mia lan sono impostate per utilizzare il mylangruppo di lavoro.

4.La mia cartella condivisa denominata contiene sharedgià dei file. Quindi cambio il proprietario e il gruppo per ricorsivamente usando il comando qui sotto.

 sudo chown -Rv admin:users /shared

5. Ho anche impostato l'autorizzazione per /sharedcartelle e file sulla cartella in modo ricorsivo utilizzando il comando

 sudo chmod -Rv 750 /shared

le macchine guest nel mio mylangruppo di lavoro non hanno accesso alla condivisione usando chmod 750

Puoi usare

 sudo chmod -Rv 755 /shared

Tutti gli account utente futuri all'interno del usersgruppo hanno solo l'autorizzazione di esecuzione in lettura.

6. Nella mia macchina client (windows xp) ho impostato un account utente chiamato clientone. Lo stesso nome utente e password di quello creato nel mio server Ubuntu. Un secondo account chiamato clienttwoviene anche creato nel server Ubuntu ed è lo stesso account utente usato nella mia seconda macchina (linuxmint 15).

7.Nella mia macchina client una dopo aver effettuato l'accesso utilizzando l' clientoneaccount, vado a eseguire il comando quindi invio

 //192.168.10.254/shared

192.168.10.254è l'indirizzo IP del mio server Ubuntu, /sharedè la cartella condivisa nel mio server Ubuntu Nella mia macchina client due (linuxmint 15), vado in Menu> Rete e nella Posizione: barra di dialogo ho digitato:

 smb://192.168.10.254/shared

Se ti è stata richiesta la password, inserisci la password del tuo account utente. E anche la password del tuo portachiavi se KEYRING è abilitato nelle tue macchine linux.

Questo funziona per me nella mia configurazione di rete. Il mio server è un server multiuso che funge da server squid, server xbmc e mediatomb e server amahi.

Sto ancora cercando modi su come migliorare la condivisione dei file parte della mia configurazione. Le istruzioni di cui sopra non sono una soluzione a prova di proiettile, acquista puoi provarlo. Ho testato e provato l'ACL ”insieme al montaggio automatico di cartelle condivise. Man mano che i requisiti di condivisione delle cartelle diventano complicati, le istruzioni sopra riportate non garantiscono il successo.

Informazioni aggiunte:

Ho installato Amahi Server sul mio server, l'ho anche usato per creare account utente a cui volevo avere accesso alle cartelle condivise. L'ho anche usato per creare nuove condivisioni di cartelle.

Quando si desidera un'autorizzazione utente più complessa per utenti diversi, è ACL a scegliere.


0

Ho file video sul mio nome, ma quando accedo con il nome delle mie figlie il suo account non riesce a vedere i file video. Quindi, quello che ho fatto è stato andare agli account utente, sbloccato (in alto a destra), quindi cambiato il suo tipo di account da "standard" a "amministratore (che è quello che è il mio account), e ora tutti i file video, davvero tutto, vengono visualizzati quando si è effettuato l'accesso con il suo account.

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.