Sudo/it

The command provides a simple and secure way to configure privilege escalation — i.e., letting normal users execute certain (or even all) commands as  or another user, either with or without giving a password.

When you want some people to perform certain administrative steps on your system without granting them total root access, using is your best option. With you can control who can do what. This guide offers you a small introduction to this powerful tool.

Questo articolo intende essere una veloce introduzione a. Il pacchetto è molto più potente di quanto si descritto in questo documento. Infatti, ha funzionalità speciali per modificare file come differente utente, eseguire dall'interno di uno script (lanciato in background, leggere la password dallo standard-in in alternativa alla tastiera, ...), ecc.

Per favore leggi le pagine del manuale di e di  per avere maggiori informazioni.

Attività di log
Un vantaggio addizionale di è che può scrivere sul log ogni tentativo (con successo o senza successo) di eseguire una applicazione. Questo è molto utile se si vuole tenere traccia di chi fa un errore fatale che potrebbe richiedere 10 ore per la risoluzione.

Ottenimento dei permessi
Il pacchetto permette all'amministratore del sistema di ottenere i permessi di altri utenti per eseguire una o più applicazioni di cui solitamente non si hanno i diritti. Diversamente dall'uso del bit  su queste applicazioni,  dà un grana di controllo molto fine su chi può eseguire certi comandi e quando questo può essere fatto.

With you can make a clear list of who can execute a certain application. If you set the setuid bit on an executable, any user would be able to run the application (or any user of a certain group, depending on the permissions used). With you can (and probably should) require the user to provide a password in order to execute the application.

The configuration is managed by the  file. This file should never be edited through or, or any other editor you would normally use. When you want to alter the file, you should always use. This tool makes sure that no two system administrators are editing this file at the same time, preserves the permissions on the file, and performs some syntax checking to make sure you make no fatal mistakes in the file.

Sintassi di base
The most difficult part of is the  syntax. The basic syntax is as follows:

This line tells that the user, identified by   and logged in on the system , can execute the command   (which can also be a comma-separated list of allowed commands).

A more real-life example might make this more clear: To allow the user to execute  when he is logged in on :

The user name can also be substituted with a group name, in which case the name is prefaced by a  sign. For instance, to allow any one in the group to execute :

To enable more than one command for a given user on a given machine, multiple commands can be listed on the same line. For instance, to allow to not only run  but also  and  as root:

You can also specify a precise command line (including parameters and arguments) not just the name of the executable. This is useful to restrict the use of a certain tool to a specified set of command options. The tool allows shell-style wildcards (AKA meta or glob characters) to be used in path names as well as command-line arguments in the sudoers file. Note that these are not regular expressions.

Here is an example of from the perspective of a first-time user of the tool who has been granted access to the full power of :

La password che richiede è la password dell'utente stesso. Questo è per rendere sicuro che altri utenti non possano abusare con intenti maliziosi di alcun terminale lasciato accidentalmente aperto.

Sintassi di base con LDAP
Le USE flag  e   sono entrambe necessarie per il supporto a LDAP.

Quando si usa LDAP, sudo leggerà la configurazione dea un Server LDAP. E' necessario quindi modificare due files.

{{FileBox|filename=/etc/ldap.conf.sudo|title=Please chmod 400 when done|1= host ldap.example.com port 389 base dc=example,dc=com uri ldap://ldap.example.com/ ldap_version 3 sudoers_base ou=SUDOers,dc=example,dc=com bind_policy soft }}
 * 1) See ldap.conf(5) and README.LDAP for details
 * 2) This file should only be readable by root
 * 1) supported directives: host, port, ssl, ldap_version
 * 2) uri, binddn, bindpw, sudoers_base, sudoers_debug
 * 3) tls_{checkpeer,cacertfile,cacertdir,randfile,ciphers,cert,key
 * 1) uri ldapi://%2fvar%2frun%2fopenldap%2fslapd.sock
 * 1) ssl start_tls
 * 1) sudoers_debug 2

E' necessario aggiungere la seguente voce a LDAP per Sudo.

Le configurazioni su un sudoers su LDAP sono simili a file con qualche differenza. Si legga in aggiunta Sudo con LDAP nel link seguente.

è un alias di tutte le possibili configurazioni.

Un esempio di uso dell'alias  per permettere ad ogni (any) utente di eseguire il comando  se è loggato localmente è:

Un altro esempio è permettere all'utente di eseguire il comando  come root, senza considerare da dove si è loggato:

Più interessante è definire un insieme di utenti che possono eseguire software amministrativo (come e ) su un sistema e un gruppo di amministratori che possono cambiare la password di ogni utente ad eccezione di root:

Esecuzione non-root
E' anche possibile avere un utente che esegue una applicazione com e un differente utente non-root. Questo può essere molto interessante per eseguire applicazioni come differente utente (per esempio per il server web) e permettere a certi utenti di eseguire operazioni di amministrazione come tali utenti (tipo uccidere processi Zombie).

All'interno di sono elencati gli utenti tra   e   prima dell'elenco dei comandi:

Per esempio, per permettere all'utente di eseguire il tool  come utente  o :

Con questo insieme, l'utente può eseguire per selezionare l'utente con cui vuole eseguire l'applicazione:

E' possibile configurare un alias per permettere all'utente di eseguire una applicazione tramite la direttiva. Il suo uso è identico alle altre direttive  viste precedentemente.

Password e configurazioni di default
Di default, chiede all'utente di identificarsi tramite la propria password. Una volta inserita la password, la ricorda per 5 minuti, permettendo all'utente di concentrarsi sulle  sue attività e di non inserire ripetitivamente la sua password.

Ovviamente, questo comportamento può essere cambiato: è possibile impostare la direttiva  nel file  per cambiare il comportamento di default per un utente.

Per esempio, per cambiare il valore di default da 5 minuti a 0 (non ricordare mai):

Un valore di  permetterà di ricordare la password per tempo indefinito (sino al riavvio del sistema).

Un configurazione differente potrebbe richiedere la password dell'utente con cui il comando dovrebbe essere richiesto in alternativa alla password personale dell'utente. E' possibile ottenere questo usando. Nell'esempio seguente è stato configurato il numero dei tentativi (quante volte l'utente può reinserire la password prima che fallisca) a   invece del default  :

Un'altra interessante funzionalità quella di mantenere la variabile  impostata in modo da poter eseguire strumenti grafici.

E' possibile cambiare dozzine di valori di default usando la direttiva. Si faccia riferimento alle pagine di manuale di per la direttiva.

Comunque, se si vuole permettere ad un utente di eseguire un certo insieme di comandi senza fornire alcuna password, è necessario iniziare i comandi con , ad esempio:

Completamento Bash
Gli utenti che vogliono avere il completamento bash con sudo devono eseguire il seguente comando almeno una volta.

Completamento ZShell
Gli utenti che vogliono il completamento zsh per sudo possono configurare i file e, rispettivamente, con gli script seguenti:

Con le modifiche di spora, tutti i comandi nelle locazioni, e  saranno disponibile alla shell per il completamento quando il comando è prefissato con 'sudo'.

Elencare i privilegi
Per ottenere la lista dei privilegi dell'utente corrente, si esegua il comando :

Se si ha un qualsiasi comando in che non richiede una password, questa non richiederò la password per elencare le voci di completamento. Altrimenti, verrà richiesta la password se questa non è stata precedentemente inserita.

Prolungare il timeout della password
Di default, se un utente ha inserito una password per autenticarsi su, questa è ricordata per 5 minuti. Se l'utente vuole prolungare questo periodo, può eseguire per resettare il time stamp guadagnando ulteriori 5 minuti prima che  richieda nuovamente la password.

L'inverso è uccidere la stampa temporale usando.