Ricerca nel sito web

Gestione di utenti e gruppi, permessi e attributi dei file e abilitazione dell'accesso sudo sugli account - Parte 8


Lo scorso agosto, la Linux Foundation ha avviato la certificazione LFCS (Linux Foundation Certified Sysadmin), un nuovissimo programma il cui scopo è quello di consentire alle persone ovunque e in qualsiasi luogo di sostenere un esame per ottenere la certificazione nel supporto operativo di base e intermedio per i sistemi Linux, che include il supporto di sistemi e servizi in esecuzione, insieme al monitoraggio e all'analisi generali, oltre a un processo decisionale intelligente per essere in grado di decidere quando è necessario inoltrare i problemi ai team di supporto di livello superiore.

Dai una rapida occhiata al seguente video che descrive un'introduzione al programma di certificazione Linux Foundation.

Questo articolo è la parte 8 di una lunga serie di 10 tutorial, qui in questa sezione ti guideremo su come gestire le autorizzazioni di utenti e gruppi nel sistema Linux, necessarie per l'esame di certificazione LFCS.

Poiché Linux è un sistema operativo multiutente (nel senso che consente a più utenti su diversi computer o terminali di accedere a un unico sistema), dovrai sapere come eseguire una gestione efficace degli utenti: come aggiungere, modificare, sospendere o eliminare account utente, oltre a concedere loro le autorizzazioni necessarie per svolgere le attività assegnate.

Aggiunta di account utente

Per aggiungere un nuovo account utente, puoi eseguire uno dei due comandi seguenti come root.

adduser [new_account]
useradd [new_account]

Quando un nuovo account utente viene aggiunto al sistema, vengono eseguite le seguenti operazioni.

1. Viene creata la sua directory home (/home/nomeutente per impostazione predefinita).

2. I seguenti file nascosti vengono copiati nella directory home dell'utente e verranno utilizzati per fornire variabili di ambiente per la sua sessione utente.

.bash_logout
.bash_profile
.bashrc

3. Viene creato uno spool di posta per l'utente in /var/spool/mail/nomeutente.

4. Viene creato un gruppo a cui viene assegnato lo stesso nome del nuovo account utente.

Comprendere /etc/passwd

Le informazioni complete sull'account sono memorizzate nel file /etc/passwd. Questo file contiene un record per account utente di sistema e ha il seguente formato (i campi sono delimitati da due punti).

[username]:[x]:[UID]:[GID]:[Comment]:[Home directory]:[Default shell]
  1. I campi [nome utente] e [Commento] sono autoesplicativi.
  2. La x nel secondo campo indica che l'account è protetto da una password nascosta (in /etc/shadow), necessaria per accedere come [nome utente] .
  3. I campi [UID] e [GID] sono numeri interi che rappresentano rispettivamente l'ID utente e l'ID gruppo primario a cui appartiene [nome utente] .
  4. La [Directory home] indica il percorso assoluto della directory home di [nome utente] e
  5. La [Shell predefinita] è la shell che verrà resa disponibile a questo utente quando accede al sistema.
Comprendere /etc/group

Le informazioni sul gruppo sono memorizzate nel file /etc/group. Ogni record ha il seguente formato.

[Group name]:[Group password]:[GID]:[Group members]
  1. [Nome gruppo] è il nome del gruppo.
  2. Una x in [Password gruppo] indica che le password del gruppo non vengono utilizzate.
  3. [GID]: come in /etc/passwd.
  4. [Membri del gruppo]: un elenco separato da virgole di utenti che sono membri di [Nome del gruppo].

Dopo aver aggiunto un account, puoi modificare le seguenti informazioni (per citare alcuni campi) utilizzando il comando usermod, la cui sintassi di base di usermod è la seguente.

usermod [options] [username]
Impostazione della data di scadenza per un account

Utilizza il flag –expiredate seguito da una data nel formato AAAA-MM-GG.

usermod --expiredate 2014-10-30 tecmint
Aggiunta dell'utente a gruppi supplementari

Utilizza le opzioni combinate -aG o –append –groups, seguite da un elenco di gruppi separati da virgole.

usermod --append --groups root,users tecmint
Modifica della posizione predefinita della directory home dell'utente

Utilizza le opzioni -d o –home, seguite dal percorso assoluto della nuova directory home.

usermod --home /tmp tecmint
Modifica della shell che l'utente utilizzerà per impostazione predefinita

Utilizza –shell, seguito dal percorso della nuova shell.

usermod --shell /bin/sh tecmint
Visualizzazione dei gruppi di cui un utente è membro
groups tecmint
id tecmint

Ora eseguiamo tutti i comandi di cui sopra in una volta sola.

usermod --expiredate 2014-10-30 --append --groups root,users --home /tmp --shell /bin/sh tecmint

Nell'esempio sopra, imposteremo la data di scadenza dell'account utente tecmint al 30 ottobre 2014. Aggiungeremo l'account anche alla root e al gruppo users. Infine, imposteremo sh come shell predefinita e cambieremo la posizione della directory home in /tmp:

Leggi anche:

  1. 15 esempi di comandi useradd in Linux
  2. 15 esempi di comandi usermod in Linux

Per gli account esistenti, possiamo anche fare quanto segue.

Disabilitare l'account bloccando la password

Utilizza l'opzione -L (L maiuscola) o –lock per bloccare la password di un utente.

usermod --lock tecmint
Sblocco della password utente

Utilizza l'opzione -u o -unlock per sbloccare la password di un utente precedentemente bloccata.

usermod --unlock tecmint

Creazione di un nuovo gruppo per l'accesso in lettura e scrittura ai file a cui devono accedere più utenti

Esegui la seguente serie di comandi per raggiungere l'obiettivo.

groupadd common_group # Add a new group
chown :common_group common.txt # Change the group owner of common.txt to common_group
usermod -aG common_group user1 # Add user1 to common_group
usermod -aG common_group user2 # Add user2 to common_group
usermod -aG common_group user3 # Add user3 to common_group
Eliminazione di un gruppo

Puoi eliminare un gruppo con il seguente comando.

groupdel [group_name]

Se sono presenti file di proprietà di group_name, questi non verranno eliminati, ma il proprietario del gruppo verrà impostato sul GID del gruppo che è stato eliminato.

Autorizzazioni file Linux

Oltre ai permessi di base di lettura, scrittura ed esecuzione di cui abbiamo discusso in Strumenti di archiviazione e impostazione degli attributi dei file – Parte 3 di questa serie, esistono altri permessi meno utilizzati (ma non meno importanti), a volte definiti "speciali". permessi”.

Come i permessi di base discussi in precedenza, vengono impostati utilizzando un file ottale o tramite una lettera (notazione simbolica) che indica il tipo di permesso.

Eliminazione degli account utente

Puoi eliminare un account (insieme alla sua directory home, se è di proprietà dell'utente, e tutti i file che risiedono al suo interno, e anche lo spool di posta) utilizzando il comando userdel con –remove opzione.

userdel --remove [username]

Gestione del gruppo

Ogni volta che un nuovo account utente viene aggiunto al sistema, viene creato un gruppo con lo stesso nome con il nome utente come unico membro. Altri utenti potranno essere aggiunti al gruppo in seguito. Uno degli scopi dei gruppi è implementare un semplice controllo dell'accesso ai file e ad altre risorse di sistema impostando le giuste autorizzazioni su tali risorse.

Ad esempio, supponiamo di avere i seguenti utenti.

  1. utente1 (gruppo primario: utente1)
  2. utente2 (gruppo primario: utente2)
  3. utente3 (gruppo primario: utente3)

Tutti necessitano dell'accesso in lettura e scrittura a un file chiamato common.txt situato da qualche parte sul tuo sistema locale, o magari su una condivisione di rete che utente1 ha creato. Potresti essere tentato di fare qualcosa del tipo:

chmod 660 common.txt
OR
chmod u=rw,g=rw,o= common.txt [notice the space between the last equal sign and the file name]

Tuttavia, ciò fornirà solo l'accesso in lettura e scrittura al proprietario del file e agli utenti che sono membri del gruppo proprietario del file (utente1 in questo caso). Ancora una volta, potresti essere tentato di aggiungere utente2 e utente3 al gruppo utente1, ma ciò darà loro anche accesso al resto dei file di proprietà per utente utente1 e gruppo utente1.

È qui che i gruppi tornano utili ed ecco cosa dovresti fare in un caso come questo.

Comprendere Setuid

Quando l'autorizzazione setuid viene applicata a un file eseguibile, un utente che esegue il programma eredita i privilegi effettivi del proprietario del programma. Dato che questo approccio può ragionevolmente sollevare problemi di sicurezza, il numero di file con permesso setuid deve essere mantenuto al minimo. Probabilmente troverai programmi con questa autorizzazione impostata quando un utente del sistema deve accedere a un file di proprietà di root.

Riassumendo, non solo l’utente può eseguire il file binario, ma può farlo anche con i privilegi di root. Ad esempio, controlliamo i permessi di /bin/passwd. Questo binario viene utilizzato per cambiare la password di un account e modifica il file /etc/shadow. Il superutente può modificare la password di chiunque, ma tutti gli altri utenti dovrebbero essere in grado di modificare solo la propria.

Pertanto, qualsiasi utente dovrebbe avere il permesso di eseguire /bin/passwd, ma solo root sarà in grado di specificare un account. Gli altri utenti possono modificare solo le password corrispondenti.

Comprendere Setgid

Quando il bit setgid è impostato, il GID effettivo dell'utente reale diventa quello del proprietario del gruppo. Pertanto, qualsiasi utente può accedere a un file con i privilegi concessi al proprietario del gruppo di tale file. Inoltre, quando il bit setgid è impostato su una directory, i file appena creati ereditano lo stesso gruppo della directory e anche le sottodirectory appena create erediteranno il bit setgid della directory principale. Molto probabilmente utilizzerai questo approccio ogni volta che i membri di un determinato gruppo necessitano di accedere a tutti i file in una directory, indipendentemente dal gruppo principale del proprietario del file.

chmod g+s [filename]

Per impostare setgid in forma ottale, anteponi il numero 2 ai permessi di base correnti (o desiderati).

chmod 2755 [directory]
Impostazione del SETGID in una directory

Comprendere lo Sticky Bit

Quando lo “sticky bit” è impostato sui file, Linux lo ignora, mentre per le directory ha l'effetto di impedire agli utenti di eliminare o addirittura rinominare i file in esso contenuti a meno che l'utente non sia il proprietario della directory, il file o è root.

chmod o+t [directory]

Per impostare lo sticky bit in forma ottale, anteponi il numero 1 ai permessi di base correnti (o desiderati).

chmod 1755 [directory]

Senza lo sticky bit, chiunque sia in grado di scrivere nella directory può eliminare o rinominare i file. Per questo motivo, lo sticky bit si trova comunemente nelle directory, come /tmp, che sono scrivibili da chiunque.

Attributi speciali dei file Linux

Esistono altri attributi che consentono ulteriori limiti alle operazioni consentite sui file. Ad esempio, impedisci che il file venga rinominato, spostato, eliminato o addirittura modificato. Vengono impostati con il comando chattr e possono essere visualizzati utilizzando lo strumento lsattr, come segue.

chattr +i file1
chattr +a file2

Dopo aver eseguito questi due comandi, file1 sarà immutabile (il che significa che non può essere spostato, rinominato, modificato o eliminato) mentre file2 entrerà in modalità di sola aggiunta (può essere solo aperto in modalità aggiunta per la scrittura).

Accesso all'account root e utilizzo sudo

Uno dei modi in cui gli utenti possono accedere all'account root è digitando.

su

e quindi inserendo la password di root.

Se l'autenticazione ha esito positivo, verrai loggato come root con la directory di lavoro corrente uguale a quella di prima. Se invece vuoi essere inserito nella directory home di root, esegui.

su -

e quindi inserisci la password di root.

La procedura di cui sopra richiede che un utente normale conosca la password di root, il che rappresenta un serio rischio per la sicurezza. Per questo motivo, l'amministratore di sistema può configurare il comando sudo per consentire a un utente normale di eseguire comandi come utente diverso (solitamente il superutente) in modo molto controllato e limitato. Pertanto, è possibile impostare restrizioni su un utente in modo da consentirgli di eseguire uno o più comandi privilegiati specifici e nessun altro.

Leggi anche: Differenza tra su e sudo User

Per autenticarsi utilizzando sudo, l'utente utilizza la propria password. Dopo aver inserito il comando, ci verrà richiesta la nostra password (non quella del superutente) e se l'autenticazione ha esito positivo (e se all'utente sono stati concessi i privilegi per eseguire il comando), viene eseguito il comando specificato.

Per concedere l'accesso a sudo, l'amministratore di sistema deve modificare il file /etc/sudoers. Si consiglia di modificare questo file utilizzando il comando visudo invece di aprirlo direttamente con un editor di testo.

visudo

Questo apre il file /etc/sudoers utilizzando vim (puoi seguire le istruzioni fornite in Installa e usa vim come editor – Parte 2 di questa serie per modificare il file).

Queste sono le linee più rilevanti.

Defaults    secure_path="/usr/sbin:/usr/bin:/sbin"
root        ALL=(ALL) ALL
tecmint     ALL=/bin/yum update
gacanepa    ALL=NOPASSWD:/bin/updatedb
%admin      ALL=(ALL) ALL

Diamo un’occhiata più da vicino a loro.

Defaults    secure_path="/usr/sbin:/usr/bin:/sbin:/usr/local/bin"

Questa riga ti consente di specificare le directory che verranno utilizzate per sudo e viene utilizzata per impedire l'utilizzo di directory specifiche dell'utente, che potrebbero danneggiare il sistema.

Le righe successive vengono utilizzate per specificare le autorizzazioni.

root        ALL=(ALL) ALL
  1. La prima parola chiave ALL indica che questa regola si applica a tutti gli host.
  2. Il secondo ALL indica che l'utente nella prima colonna può eseguire comandi con i privilegi di qualsiasi utente.
  3. Il terzo ALL significa che è possibile eseguire qualsiasi comando.
tecmint     ALL=/bin/yum update

Se non viene specificato alcun utente dopo il segno =, sudo presuppone l'utente root. In questo caso, l'utente tecmint sarà in grado di eseguire yum update come root.

gacanepa    ALL=NOPASSWD:/bin/updatedb

La direttiva NOPASSWD consente all'utente gacanepa di eseguire /bin/updatedb senza dover inserire la propria password.

%admin      ALL=(ALL) ALL

Il segno % indica che questa riga si applica a un gruppo chiamato “admin”. Il significato del resto della riga è identico a quello di un utente normale. Ciò significa che i membri del gruppo “admin” possono eseguire tutti i comandi come qualsiasi utente su tutti gli host.

Per vedere quali privilegi ti sono concessi da sudo, usa l'opzione “-l” per elencarli.

PAM (moduli di autenticazione collegabili)

I moduli di autenticazione collegabili (PAM) offrono la flessibilità di impostare uno schema di autenticazione specifico in base all'applicazione e/o al servizio utilizzando i moduli. Questo strumento presente su tutte le moderne distribuzioni Linux ha superato il problema spesso affrontato dagli sviluppatori agli albori di Linux, quando ogni programma che richiedeva l'autenticazione doveva essere compilato appositamente per sapere come ottenere le informazioni necessarie.

Ad esempio, con PAM, non importa se la tua password è archiviata in /etc/shadow o su un server separato all'interno della tua rete.

Ad esempio, quando il programma di login deve autenticare un utente, PAM fornisce dinamicamente la libreria che contiene le funzioni per il giusto schema di autenticazione. Pertanto, modificare lo schema di autenticazione per l'applicazione di accesso (o qualsiasi altro programma che utilizza PAM) è semplice poiché implica solo la modifica di un file di configurazione (molto probabilmente, un file che prende il nome dall'applicazione, situato all'interno di /etc/pam.d e meno probabilmente in /etc/pam.conf).

I file all'interno di /etc/pam.d indicano quali applicazioni utilizzano PAM in modo nativo. Inoltre, possiamo sapere se una determinata applicazione utilizza PAM controllando se la libreria PAM (libpam) è stata collegata ad essa:


ldd $(which login) | grep libpam # login uses PAM
ldd $(which top) | grep libpam # top does not use PAM

Nell'immagine sopra possiamo vedere che libpam è stato collegato all'applicazione di accesso. Ciò ha senso poiché questa applicazione è coinvolta nell'operazione di autenticazione dell'utente del sistema, mentre top no.

Esaminiamo il file di configurazione PAM per passwd – sì, la nota utility per modificare le password degli utenti. Si trova in /etc/pam.d/passwd:


cat /etc/passwd

La prima colonna indica il type di autenticazione da utilizzare con il module-path (terza colonna). Quando viene visualizzato un trattino prima del tipo, PAM non registrerà nel registro di sistema se il modulo non può essere caricato perché non è stato trovato nel sistema.

Sono disponibili i seguenti tipi di autenticazione:

  1. account: questo tipo di modulo controlla se l'utente o il servizio ha fornito credenziali valide per l'autenticazione.
  2. auth: questo tipo di modulo verifica che l'utente sia chi dichiara di essere e concede tutti i privilegi necessari.
  3. password: questo tipo di modulo consente all'utente o al servizio di aggiornare la propria password.
  4. session: questo tipo di modulo indica cosa dovrebbe essere fatto prima e/o dopo che l'autenticazione ha avuto successo.

La seconda colonna (chiamata control) indica cosa dovrebbe accadere se l'autenticazione con questo modulo fallisce:

  1. requisito: se l'autenticazione tramite questo modulo fallisce, l'autenticazione complessiva verrà immediatamente negata.
  2. required è simile a requisite, sebbene tutti gli altri moduli elencati per questo servizio verranno chiamati prima di negare l'autenticazione.
  3. sufficiente: se l'autenticazione tramite questo modulo fallisce, PAM garantirà comunque l'autenticazione anche se una precedente contrassegnata come richiesta non è riuscita.
  4. opzionale: se l'autenticazione tramite questo modulo fallisce o riesce, non succede nulla a meno che questo non sia l'unico modulo del suo tipo definito per questo servizio.
  5. include significa che le righe del tipo specificato dovrebbero essere lette da un altro file.
  6. substack è simile a include ma i fallimenti o i successi di autenticazione non causano l'uscita del modulo completo, ma solo del sottostack.

La quarta colonna, se esiste, mostra gli argomenti da passare al modulo.

Le prime tre righe in /etc/pam.d/passwd (mostrate sopra), caricano il modulo system-auth per verificare che l'utente abbia fornito credenziali valide (account) . In tal caso, gli consente di modificare il token di autenticazione (password) dando il permesso di utilizzare passwd (auth).

Ad esempio, se aggiungi


remember=2

alla riga successiva


password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok

in /etc/pam.d/system-auth:


password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=2

le ultime due password con hash di ciascun utente vengono salvate in /etc/security/opasswd in modo che non possano essere riutilizzate:

Riepilogo

Competenze efficaci di gestione degli utenti e dei file sono strumenti essenziali per qualsiasi amministratore di sistema. In questo articolo abbiamo trattato le nozioni di base e speriamo che tu possa usarlo come un buon punto di partenza su cui sviluppare. Sentiti libero di lasciare i tuoi commenti o domande qui sotto e ti risponderemo rapidamente.