Ci sono due cose qui in gioco, permessi di stile POSIX (basati su * nix) e ACL NFSv4 (Access Control List) usati sul tuo server.
Li si imposta su AFP dopo i problemi in corso con SMB. Le cose sembrano diventare pelose quando si usa AFP e Apple ha cambiato moltissimo SMB dopo aver rotto i legami con SAMBA e implementato la propria versione, anche se minore, di SMB (tu Mac geek là fuori, correggimi se sbaglio - voglio sapere. ..)
La maggior parte dei sistemi UNIX utilizza le autorizzazioni standard POSIX (Portable Operating System Interface) durante la gestione dell'accesso ai file. Le autorizzazioni POSIX standard sono indipendenti dal sistema di file su cui sono utilizzate (a condizione che il sistema le supporti), e chiunque abbia familiarità con Linux o UNIX avrà familiarità con loro poiché sono il modo standard per impostare il controllo di accesso molto semplice su file e directory.
In sostanza, puoi definire il proprietario di un file o di una directory, il gruppo che lo possiede e "altro" (chiunque non sia l'utente proprietario o un membro del gruppo proprietario). È inoltre possibile definire se ognuno di questi ha letto, scritto o eseguito il permesso sul file o sulla directory. Con un file, queste autorizzazioni significano che l'utente può leggere il file, scriverlo, modificarlo o cancellarlo o eseguirlo come un programma. Per le directory, queste autorizzazioni significano che l'utente può leggere il contenuto di una directory (ma non necessariamente il contenuto dei file nella directory), può scrivere nella directory (creare ed eliminare file), o eseguire (consente all'utente di attraversare quell'albero di directory per accedere a file o sottodirectory, anche se non consente di vedere i contenuti della directory da solo.
La maggior parte dei sistemi operativi supporta anche alcune forme di Access Control List (o ACL). Spesso questo dipende anche da quale filesystem è in uso, o da quale implementazione può essere usata su quale file system (i due tipi di ACL primari sono ACL POSIX.1e e ACL NFSv4). Mac OS X non è diverso e, a partire da OS X 10.4, ha supportato gli ACL NFSv4 quando utilizzato con il file system HFS +. Usare questi ACL su OS X è abbastanza semplice; potresti persino usarli senza saperlo.
Gli ACL sono costituiti da voci ACE (voci di controllo di accesso) e ogni ACL può contenere più di un ACE. Le ACL offrono molta più flessibilità e un controllo preciso sulle autorizzazioni di file e directory rispetto alle autorizzazioni POSIX standard. Ad esempio, alcune delle funzionalità fornite dagli ACL per i file includono le autorizzazioni di lettura, scrittura, esecuzione e aggiunta (append consente solo di aggiungere a un file esistente, non modificare il contenuto esistente o rimuoverlo). Alcune funzionalità per le directory includono voci nell'elenco, ricerca di voci, aggiunta di un file, aggiunta di una sottodirectory o eliminazione di contenuti. Un'altra caratteristica interessante degli ACL è chiamata "ereditarietà", in cui è possibile impostare un permesso di ereditarietà in modo che il contenuto dei file di una directory possa ereditare un set di ACL, mentre le directory ereditano un altro set.
Come puoi vedere, gli ACL sono molto potenti. Ad esempio, se disponi di una directory che contiene manuali dello sviluppatore, puoi rendere la directory scrivibile agli sviluppatori e di sola lettura per gli addetti alle vendite. Potresti anche voler dare accesso ai tirocinanti ad alcuni dei file, ma non vuoi renderli parte dello sviluppatore o del gruppo di vendita perché questi due gruppi hanno accesso a troppi altri file. In questo scenario, è possibile rendere la directory di proprietà di un particolare utente, dell'utente root (amministratore) e del gruppo "sviluppatori" del gruppo, con i file e le directory scrivibili sia dal proprietario sia dal gruppo. Dovresti quindi utilizzare gli ACL per applicare autorizzazioni di sola lettura a determinati file per il gruppo "vendite" e anche utilizzare gli ACL per applicare l'accesso di sola lettura agli utenti espliciti che sono stagisti (invece di creare un nuovo gruppo per stagisti) . Con permessi POSIX standard, questo non sarebbe facilmente possibile.
Se hai utilizzato il comando Trova informazioni del Finder su un file o una directory, molto probabilmente hai notato la condivisione & amp; Riquadro delle autorizzazioni in basso. Per impostazione predefinita, mostra le voci delle autorizzazioni POSIX standard:
Queste autorizzazioni, sulla riga di comando, equivarrebbero a una proprietà di "vdanen: staff" e alla modalità 0750 (o 0640 se si trattasse di un file). Questo può essere visto sulla riga di comando come:
drwxr-xr-x 2 vdanen staff 68 Mar 11 22:30 New
Per aggiungere ACL a questa directory, puoi utilizzare i comandi chown e chmod o il Finder. L'uso di chown / chmod offre molta più flessibilità in quanto il Finder ti limita un po 'e fa alcune supposizioni per te. Ad esempio, per dare accesso a questa directory ai membri del gruppo admin come Sola lettura, fai clic sul pulsante + nella sezione Condivisione & amp; Riquadro Autorizzazioni, selezionare l'utente o il gruppo, quindi impostare il privilegio appropriato:
Ora i membri del gruppo admin hanno accesso in sola lettura a questa cartella. Non è molto difficile da impostare nel Finder, vero? Possiamo anche osservare gli ACL sulla riga di comando, usando l'opzione -le al comando ls:
% /bin/ls -le
total 288
drwxr-xr-x+ 2 vdanen staff 68 Mar 11 22:30 New
0: group:admin allow list,search,readattr,readextattr,readsecurity
Il Finder ha dato più permessi rispetto alle sole autorizzazioni di "lista" o "ricerca"; consente inoltre al gruppo di amministratori di leggere attributi e ACL estesi.
Per ottenere lo stesso risultato sulla riga di comando, dovresti usare:
% mkdir New2
% /bin/chmod +a "admin allow read,readattr,readextattr,readsecurity" New2
% /bin/ls -le
total 288
drwxr-xr-x+ 2 vdanen staff 68 Mar 11 23:06 New2
0: group:admin allow list,readattr,readextattr,readsecurity
% /bin/chmod +a "admin allow search" New2
% /bin/ls -le
total 288
drwxr-xr-x+ 2 vdanen staff 68 Mar 11 23:06 New2
0: group:admin allow list,search,readattr,readextattr,readsecurity
Come puoi vedere, il comando chmod iniziale ha mancato un ACL; è abbastanza facile aggiungere una nuova voce più tardi. E se è necessario rimuoverne uno, anche questo è facile:
% /bin/chmod -a "admin allow search" New2
Il gruppo admin ora non ha più permessi di ricerca su questa directory. Noterai che in ogni caso, sto specificando un percorso esplicito per i comandi ls e chmod. Questo perché Fink è installato e gli strumenti GNU installati tramite Fink non comprendono gli ACL OS X, e questi comandi non funzioneranno con loro (il PATH predefinito sul sistema pone / sw / bin prima / bin /, quindi quando digito "ls", è "/ sw / bin / ls" che viene eseguito, piuttosto che "/ bin / ls").
Mac OS X Server (e presumibilmente anche Lion) ha un front-end GUI più sofisticato per la manipolazione degli ACL rispetto al Finder, ma per la maggior parte delle attività di base, il Finder sarà sufficiente. Tuttavia, non gestisce l'ereditarietà, il che è un peccato. Ti consente di applicare le autorizzazioni impostate su una directory ai file e alle directory al suo interno utilizzando la voce di menu "Applica a elementi inclusi ..." dal menu a discesa dell'ingranaggio, che può probabilmente portare a qualcosa di simile; tuttavia, se si modificano i permessi della directory, è necessario riapplicarli e anche se sono state aggiunte nuove cartelle o file, ecc.
La manpage chmod ("man chmod") fornisce un'ottima spiegazione degli ACL e come applicarli. Gli ACE in una ACL osservano l'ordine, quindi puoi usare chown per specificare dove deve essere posizionato uno specifico ACE all'interno dell'ACL e, naturalmente, puoi ottenere molto più specifico di quanto potresti con il Finder.
Gli ACL su OS X funzionano in modo molto simile agli ACL su altri sistemi POSIX, incluso Linux. Le autorizzazioni possono essere leggermente diverse, così come il meccanismo per implementarle e gestirle, ma i benefici sono identici. Questo supporto ACL in OS X è anche compatibile con alcune versioni di Windows e Windows Server.