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.
Transizione agevole da sudo a doas
Per una transizione agevole da sudo a doas e per mantenere la compatibilità con il passato, è possibile aggiungere al proprio ambiente:
alias sudoedit='doas rnano'
e posizionare un wrapper per doas dove si troverebbe normalmente sudo (tuttavia non fornisce il comando sudoedit):
/usr/local/bin/sudo
#!/bin/bash
exec doas "${@/--preserve-env*/}"
- Alcuni pacchetti come devtools hanno una dipendenza stretta da sudo.
- 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
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