Consentire a un utente di leggere le home directory di altri utenti


10

Sono nuovo nell'amministrazione del sistema e ho una query relativa alle autorizzazioni. Ho un gruppo chiamato administration. All'interno del administrationgruppo, ho gli utenti user1, user2, user3, superuser. Tutti gli utenti sono nel administrationgruppo. Ora, devo dare le autorizzazioni all'utente superuserper poter visualizzare la /homedirectory degli altri utenti. Tuttavia, non voglio user1, user2, user3per vedere la casa di un altro utente diverso da se stesso. (Cioè, user1dovrebbe essere in grado di vedere solo user1la casa e così via).

Ho creato utenti e gruppi e assegnato tutti gli utenti al gruppo. Come devo specificare le autorizzazioni per superuserora?

In altre parole, sto pensando di avere due gruppi (dire NormalUserse Superuser). Il NormalUsersgruppo avrà gli utenti user1, user2e user3. Il Superusergruppo avrà solo l'utente Superuser. Ora ho bisogno Superuserdi avere pieno accesso ai file degli utenti nel gruppo NormalUsers. È possibile in Linux?



Nella mia domanda precedente, ero più interessato a modificare il file / etc / sudoers e rendere l'utente come amministratore parziale. Qui, sto cercando di modificare le autorizzazioni di un utente locale. Sì, è simile a ciò che sto cercando di ottenere, ma sto provando ad avvicinarmi a un metodo diverso qui.
Ramesh,

Risposte:


10

Se gli utenti sono cooperativi, è possibile utilizzare gli elenchi di controllo di accesso (ACL). Imposta un ACL nella home directory di user1(e amici) a cui concedi l'accesso in lettura superuser. Imposta anche l'ACL predefinito, per i file appena creati, e anche l'ACL sui file esistenti.

setfacl -R -m user:superuser:rx ~user1
setfacl -d -R -m user:superuser:rx ~user1

user1 può cambiare l'ACL sui suoi file se lo desidera.

Se si desidera consentire sempre l' superuseraccesso in lettura ai user1file, è possibile creare un'altra vista delle directory home degli utenti con autorizzazioni diverse, con bindfs .

mkdir -p ~superuser/spyglass/user1
chown superuser ~superuser/spyglass
chmod 700 ~superuser/spyglass
bindfs -p a+rX-w ~user1 ~superuser/spyglass/user1

I file accessibili tramite ~ superuser / spyglass / user1 sono leggibili in tutto il mondo. Oltre alle autorizzazioni, ~superuser/spyglass/user1è una vista della user1home directory. Poiché superuserè l'unico utente che può accedere ~superuser/spyglass, solo questo superuserpuò trarne vantaggio.


Sul mio sistema, le autorizzazioni e il nome utente vengono scambiati: setfacl -R -m user:superuser:rx ~user1.
Aurélien Ooms,

10

È possibile utilizzare ACL per concedere l'accesso a una determinata directory a un gruppo arbitrario.

Ad esempio, se eseguito setfacl -m g:dba:rwx /home/foo, i membri del gruppo dba avrebbero le autorizzazioni rwx su di esso, indipendentemente dal gruppo che possiede la directory.

Probabilmente vorrai anche impostare l'ACL "predefinito" (l'ACL per gli oggetti appena creati all'interno della directory) per includere anche questa autorizzazione.


sì, esattamente ... Ho scoperto anche lo stesso, ma non sono ancora sicuro che sia una buona idea concedere ACL nel server agli utenti LDAP.
Ramesh,

@Ramesh Beh, se sono utenti nel sistema (perché stai usando nss-ldap, sssd, ecc.), Allora non sono sicuro del perché non sarebbe OK.
derobert,

Stavo cercando di replicare questo nel banco di prova. Quando eseguo l'accesso come utente (ad esempio piè di pagina), visualizzo un messaggio di avviso come "le autorizzazioni devono essere impostate su 644". Credo che l'avvertimento possa essere ignorato. Ma non voglio che gli utenti del laboratorio sappiano che i loro account utente sono stati compromessi. Quando cambio rwx in solo r nel comando setfacl, non riesco a vedere la directory di foo.
Ramesh,

2
@Ramesh È necessario + x per passare effettivamente alle directory. Non sono sicuro di cosa ti stia dicendo che una directory dovrebbe essere 644, è sciocco, dovrebbe essere 755 o simile. Ma in entrambi i casi, l'utente vedrà un + nel campo di autorizzazione di ls e potrà eseguire getfacl per vederlo, non è un segreto.
derobert,

Bene, stavo ricevendo il messaggio di avviso, la directory $ HOME dell'utente deve essere di proprietà dell'utente e non scrivibile da altri utenti. Ho rimosso il permesso di scrittura nel comando setacl e ora non vedo il messaggio di avviso.
Ramesh,

0

Sfortunatamente, non c'è davvero alcun modo per farlo direttamente su Linux vanilla.

Potresti essere in grado di creare un nuovo gruppo in sudoer per gli amministratori parziali con una lista bianca di comandi accettabili che vuoi consentire loro di eseguire.

Tuttavia, per ottenere esattamente ciò che stai chiedendo, dovresti usare Apparmor o SELinux per ottenere ciò che desideri. Sfortunatamente, nessuno di questi strumenti è facile da configurare e utilizzare e gli esempi sono molto al di fuori dell'ambito di una risposta rapida qui.


1
Linux supporta gli ACL da un po 'di tempo. Gli ACL ti consentono di farlo.
derobert,

Sì, ho appena trovato quella soluzione e ho aggiornato la risposta. Tuttavia, non so ancora se può essere utilizzato nel server e anche per gli utenti LDAP.
Ramesh,

@derobert Da quanto ho capito, è impossibile concedere a qualcuno le autorizzazioni a livello di root tramite sudo mentre contemporaneamente si utilizzano gli ACL per limitare l'accesso. Per farlo devi usare SELinux o un altro MAC.
Swiss

1
Penso che quando OP dice l'utente "superutente", intende letteralmente - non root.
derobert,
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.