Jump to content

doas (Italiano)

From ArchWiki

Stato della traduzioneQuesto articolo è la versione tradotta di Doas. Data dell'ultima traduzione: 2026-08-12. Se ci sono cambiamenti nella versione inglese, è possibile dare una mano a sincronizzarne la traduzione.

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

Nota
  • Il file di configurazione deve terminare con una riga vuota.
  • L'opzione setenv serve 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/bin che 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
Attenzione È fondamentale che /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.

Nota La funzione persist è disabilitata per impostazione predefinita perché potenzialmente pericolosa. Nel doas originale, viene utilizzata un'API del kernel per impostare e azzerare i timeout. Questa API è specifica di OpenBSD e non è disponibile in altri sistemi operativi. Come soluzione alternativa, la funzione persist è implementata utilizzando file di timestamp simili a sudo.

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'
Nota

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.

  • makepkg va configurato per l'uso diretto di doas [1]:
PACMAN_AUTH=(doas -n)
  • -E/--preserve-env non è supportato da shim, perché non un diretto equivalente in doas. Gli script e i comandi che si affidano a sudo -E per inoltrare l'ambiente di chiamata non si comporteranno sotto shim come ci si aspetterebbe; usare invece le opzioni setenv e keepenv in doas.conf per 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