Come posso concedere autorizzazioni diverse per ciascun utente?


11

Quindi uso Linux da alcuni anni e dovrei davvero conoscere questa risposta, ma ho difficoltà a trovarla. In particolare sto usando le distro basate su Debian .... principalmente Ubuntu.

Se ho un server, che ha più di tre utenti, come posso impostare un diverso set di autorizzazioni su un file per ciascun utente.

Per esempio:

Se ho un file con queste autorizzazioni e proprietà:

rwx rw_ r__ user1:group1 file1.txt

e ho 3 utenti con queste autorizzazioni desiderate ....

  • user1 rwx
  • user2 rw_
  • user3 r__

Tutto quello che devo fare è avere user1 possedere il file, utente2 in Gruppo1 , e user3 può essere né - è corretto?

Ma, che cosa se ho un user4 e user5 .

  • user4 _wx
  • user5 __x

Come lo configurerei?

Non ho dovuto farlo prima, ma un amministratore di Windows mi ha fatto questa domanda e sinceramente non ho potuto rispondere.


8
Per quel tipo di granularità nelle autorizzazioni, dovrai utilizzare gli elenchi di controllo di accesso (ACL). Puoi trovare un breve tutorial qui . Sebbene sia una parola di cautela, una volta che inizi il percorso degli ACL invece delle autorizzazioni, è una pendenza molto scivolosa e le cose si complicano molto velocemente con alcune conseguenze indesiderate alla fine.
MelBurslan,

Risposte:


19

Le autorizzazioni unix tradizionali consentono solo all'utente, al gruppo, altre autorizzazioni come hai trovato. Questi possono comportare una combinazione imbarazzante di gruppi che devono essere creati ...

Quindi è stata affrontata una nuova forma di ACL (Access Control Lists). Ciò consente di specificare più utenti e più gruppi con autorizzazioni diverse. Questi sono impostati con il setfaclcomando e letti congetfacl

$ setfacl -m u:root:r-- file.txt
$ setfacl -m u:bin:-wx file.txt 
$ setfacl -m u:lp:--x file.txt 
$ getfacl file.txt
# file: file.txt
# owner: sweh
# group: sweh
user::rw-
user:root:r--
user:bin:-wx
user:lp:--x
group::r--
mask::rwx
other::r--

Puoi facilmente capire se un file ha un ACL guardando l' lsoutput:

$ ls -l file.txt
-rw-rwxr--+ 1 sweh sweh 0 Jul 26 10:33 file.txt

La +fine delle autorizzazioni indica un ACL.


2

Sì, ACL: s consente di impostare liberamente diritti diversi per utenti o gruppi diversi. IIRC le consuete autorizzazioni di gruppo limitano l'insieme di autorizzazioni che i gruppi e gli utenti possono avere tramite ACL: s (mostrato come maskin getfacl), ma setfacldevono occuparsene se si aggiungono autorizzazioni.

Ma in alcuni casi è necessario chiedere se l'insieme di autorizzazioni ha un senso.

Ho 3 utenti con queste autorizzazioni desiderate ....
- user1 rwx
- user2 rw_
- user3 r__

È possibile implementarlo con ACL: s o (approssimativamente) con le consuete autorizzazioni Unix rendendo user1 il proprietario del file, user2 un membro del gruppo e consentire ad altri, incluso user3, di accedere in lettura. Anche se poi tutti (con accesso alla directory) avrebbero anche accesso in lettura.

Consideriamo il significato di tali autorizzazioni. Hai un utente in grado di leggere e un altro in grado di leggere e scrivere. È del tutto normale. Nessuno di questi ha accesso per eseguire il file, ma anche un terzo utente dovrebbe essere in grado di farlo.

Non ha molto senso nella mia mente. Qualsiasi utente in grado di leggere il file, può crearne una copia (*), contrassegnarlo come eseguibile ed eseguirlo, senza accesso per eseguire il file originale. L'unica situazione che ha senso avere accesso per eseguire alcuni utenti, ma non per altri, è quando l'eseguibile ha privilegi elevati attraverso il suid. Ma se così fosse, non dovresti avere altri utenti con accesso in scrittura al file.

Allo stesso modo, user4 with -wxe user5 with --xnon hanno senso per me. L'accesso in sola scrittura potrebbe avere senso se esistesse la possibilità di autorizzare solo gli allegati , ma il sistema di autorizzazioni non è così preciso.

(* a meno che non possano scrivere da nessuna parte)


Tuttavia, se rimuoviamo lo strano requisito per il xbit, ci rimane un file in cui user1 e user2 dovrebbero avere accesso in scrittura e user3 dovrebbe avere accesso in lettura. Uno scrittore e più lettori sarebbero facili con il modello tradizionale, ma questo caso avrebbe bisogno di trucchi per combinare i permessi dei file con i permessi della directory contenente. Fortunatamente, in molti casi è sufficiente un utente con più autorizzazioni.

Senza il requisito sul bit di esecuzione, questo sembra un caso per usare ACL: s. Ma con questo, questo particolare esempio mi sembra piuttosto contorto.


Se l'utente può solo scrivere su un file system montato senza autorizzazione di esecuzione, non può eseguire una copia, anche se potrebbe eseguire l'originale se fossero impostate le autorizzazioni appropriate. Inoltre, solo l'esecuzione può avere senso se si desidera impedire loro di cercare exploit. -wxè decisamente strano, però.
Celtschk,

1
Alcuni sistemi hanno un meccanismo che consente solo gli accodamenti. Linux ha chattr +a, per esempio. E anche senza nulla di specifico per il sistema, potresti rendere il file un FIFO. --xe, per estensione -wx, ha senso anche per me le directory .
Casuale 832,
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.