doas (Italiano)
OpenDoas è una versione portabile del comando doas di OpenBSD, nota per avere dimensioni sostanzialmente ridotte rispetto a sudo. Come sudo, doas viene utilizzato per assumere l'identità di un altro utente sul sistema.
Installazione
Installare il pacchetto opendoas.
Uso
Per iniziare a usare doas come utente non privilegiato, è necessario configurarlo correttamente. Si veda #Configurazione.
Per utilizzare doas, è sufficiente anteporre il comando doas e uno spazio al comando e ai suoi argomenti:
$ doas cmd
Ad esempio, per usare pacman:
$ doas pacman -Syu
Per accedere a una shell interattiva come altro utente (omettendo -u utente si userà root per impostazione predefinita):
$ doas -su utente
L'accesso come altro utente è necessario per alcuni comandi, si veda Sudo#Login shell.
Per ulteriori informazioni, consultare doas(1).
Configurazione
Dopo l'installazione di OpenDoas, esso risulterà collegato a PAM, ma non sono inclusi file di configurazione predefiniti o esempi.
Per consentire ai membri del gruppo wheel di eseguire comandi come altri utenti, creare un file di configurazione con il seguente contenuto:
/etc/doas.conf
permit setenv {PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin} :wheel
- Il file di configurazione deve terminare con una riga vuota.
- L'opzione
setenvserve a mitigare un problema derivante dall'origine BSD di OpenDoas, dove i pacchetti di sistema aggiuntivi sono memorizzati in/usr/local/bin. In Linux,/usr/local/binè generalmente usato per sovrascrivere gli eseguibili, quindi precede/usr/binche contiene gli eseguibili dei pacchetti.
Il proprietario e il gruppo per /etc/doas.conf devono essere entrambi root e i permessi del file devono essere impostati a 0400:
# chown -c root:root /etc/doas.conf # chmod -c 0400 /etc/doas.conf
Per verificare la presenza di errori di sintassi in /etc/doas.conf, eseguire:
# if doas -C /etc/doas.conf; then echo "config ok"; else echo "config error"; fi
/etc/doas.conf sia privo di errori di sintassi!Per consentire ai membri del gruppo plugdev di eseguire smartctl senza password come utente root:
/etc/doas.conf
permit nopass :plugdev as root cmd /usr/bin/smartctl
La forma sintattica generale di /etc/doas.conf è:
permit|deny [opzioni] identità [as target] [cmd comando [argomenti ...]]
L'ultima regola corrispondente determina l'azione intrapresa, pertanto le regole devono essere ordinate di conseguenza.
Per maggiori dettagli, leggere doas.conf(5).
Trucchi e consigli
Funzionalità persist di doas
doas fornisce una funzione di persistenza: dopo che l'utente si è autenticato con successo, non gli verrà richiesto nuovamente la password per 5 minuti. È disattivata per impostazione predefinita; la si può abilitare con l'opzione persist:
/etc/doas.conf
permit persist setenv {PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin} :wheel
L'esecuzione di doas -L cancella un'autenticazione persistente prima del suo timeout automatico.
Sbarazzarsi di sudo
Una volta che si è deciso di sostituire del tutto il pacchetto sudo, installare il pacchetto doas-sudo-shimAUR, che fornisce opzioni compatibili con sudo per una transizione agevole a doas. È possibile aggiungere ai propri file di configurazione:
alias sudoedit='doas rnano'
Per impostazione predefinita sudo preserva alcune variabili d'ambiente mentre doas no, in particolare XAUTHORITY, LANG e LC_ALL. Ciò significa che non sarà possibile avviare applicazioni grafiche sotto X né accedere alla localizzazione dell'utente senza ulteriore configurazione. Ad esempio, per consentire ai membri del gruppo wheel di eseguire applicazioni grafiche e accedere alla localizzazione dell'utente usando l'opzione setenv:
/etc/doas.conf
permit setenv { XAUTHORITY LANG LC_ALL } :wheel
doas-sudo-shimAUR imposta SUDO_UID, SUDO_GID e SUDO_USER prima di invocare doas, per ragioni di compatibilità con gli strumenti che leggono queste variabili (impostate incondizionatamente dal vero sudo) in modo da indentificare l'utente originale che l'ha invocato, ad es. per localizzare la loro sessione D-Bus per le notifiche desktop. Come con le precedenti XAUTHORITY, LANG e LC_ALL, doas le rimuoverà a meno che non siano state espressamente consentite tramite setenv o keepenv:
/etc/doas.conf
permit setenv { SUDO_UID SUDO_GID SUDO_USER } :wheel
Si ricordi che queste variabili sono impostate da shim stesso, per cui ciò ha effetto solo quando si invocano comandi tramite lo shim di sudo. Usare doas direttamente non le popola, perché doas non ha equivalenti integrati come gli export SUDO_* automatici di sudo.
Si consulti la documentazione ENVIRONMENT di doas-sudo-shim per i dettagli.
Si tenga anche presente che shim non supporta tutte le opzioni gestite da sudo (in particolare, -k è approssimato) e alcune applicazioni potrebbero non funzionare.
PACMAN_AUTH=(doas -n)
-
-E/--preserve-envnon è supportato da shim, perché non un diretto equivalente in doas. Gli script e i comandi che si affidano asudo -Eper inoltrare l'ambiente di chiamata non si comporteranno sotto shim come ci si aspetterebbe; usare invece le opzionisetenvekeepenvindoas.confper consentire in modo esplicito le variabili di cui si ha bisogno.
Completamento tab su Bash
Per impostazione predefinita, Bash eseguirà il completamento automatico con tab solo per file e directory all'interno della cartella corrente o referenziata. Per istruire Bash a completare gli argomenti come se fossero comandi separati (sfruttando anche le impostazioni di completamento di altri comandi), si può aggiungere quanto segue al file .bashrc dell'utente o a quello globale /etc/bash.bashrc:
~/.bashrc
complete -cf doas
Se bash-completion è installato, è possibile utilizzare invece il seguente comando per consentire il completamento aggiuntivo del comando di destinazione:
~/.bashrc
complete -F _command doas