Traduccions: English - Català


Doas és una utilitat que permet a un compte d'usuari executar ordres com a un altre compte d'usuari. Es pot interpretar com «do it as someone else», per tant doas; però realment el nom fou accidental.

Doas és una adaptació de l'ordre homònima de l'OpenBSD, que és a on primer aparegué. Està pensat com un substitut minimalista del popular sudo, oferint gairebé la mateixa funcionalitat, però amb molt menys codi, i per tant potencialment més segur. A més, l'estructura del seu fitxer de configuració és molt més simple.


Instal·lació

Doas està disponible en Debian 12.4 (bookworm), instal·lant el paquet doas. Un cop instal·lat podreu fer-lo servir des d'un terminal amb l'ordre doas.

Configuració

Bàsica

El doas recent instal·lat no serveix de res sense el fitxer de configuració. Obtindreu un missatge d'error si l'executeu.

doas: doas is not enabled, /etc/doas.conf: No such file or directory

Haureu de crear, com a administrador, el fitxer /etc/doas.conf, i afegir-hi les regles que vulgueu. Cada regla ocupa una línia. La prioritat de les regles és de sota a dalt; és a dir, la regla que s'aplicarà és l'última satisfeta. Per tant s'han d'escriure les regles més generals al principi, i les regles més específiques al final.

Una regla molt simple en /etc/doas.conf és

permit johnsmith as root

que dona permisos a l'usuari johnsmith per a executar qualsevol ordre del sistema com a l'usuari administrador (root), introduint la seva contrasenya, no la de root. És a dir, que l'usuari johnsmithde facto permisos d'administrador.

Aquesta regla tan simple consta de tres parts. La primera, acció, en aquest cas permit, però que també pot ésser deny per a denegar permisos en comptes de permetre'ls. Així doncs, si l'última regla del fitxer de configuració és

deny johnsmith as root

l'usuari johnsmith no pot executar absolutament res com a administrador, inclús encara que una regla anterior ho permetés. Això pot ésser útil si volem permetre a tots els membres d'un grup llevat d'un membre en concret.

La segona part, identitat, en aquest cas johnsmith. Pot ésser el nom d'un usuari, d'un grup (adscrivint-hi els dos punts «:» com prefix), o el seu identificador numèric.

La tercera part, objectiu, en aquest cas as root; l'usuari root es pot substituir per qualsevol altre nom d'usuari, grup o identificador numèric d'usuari del sistema operatiu. Aquesta part és opcional, si s'omet, s'interpreta que l'objectiu son tots els usuaris del sistema. Per tant, la regla

permit johnsmith

dona permisos a l'usuari johnsmith per a executar qualsevol ordre com a qualsevol usuari del sistema.

Els comentaris comencen amb coixinets (#) i abasten fins al final de la línia. Podeu trobar més detalls sobre les regles en la seva pàgina de manual doas.conf. Hi ha un fitxer de configuració d'exemple en /usr/share/doc/opendoas/examples/doas.conf que podeu prendre com a punt de partida per a crear el vostre fitxer doas.conf.

És recomanable que després de cada modificació del fitxer de configuració, comproveu que no té cap error sintàctic; vegeu Forma d'ús.

Avançada

Les regles de permisos tenen més opcions que permeten major flexibilitat. L'estructura completa de les regles és

permit|deny [options] identity [as target] [cmd command [args ...]]

i en podeu consultar els detalls en la pàgina de manual doas.conf. Aquí farem un tractament breu.

Opcions

Una de les opcions disponibles és nopass, que evita que doas pregunti la contrasenya a l'usuari. Per exemple

permit nopass johnsmith as root

permet a l'usuari johnsmith executar qualsevol ordre del sistema com a administrador, immediatament, sense contrasenya. Hi ha una alternativa intermèdia entre permit i permit nopass: l'opció persist. Amb aquesta opció doas demanarà la contrasenya a l'usuari només en la primera execució, després no la tornarà a demanar durant una estona.

Altres opcions disponibles son keepenv i setenv. La primera assegura que les variables d'entorn es mantenen quan es crea l'entorn del nou procés. La segona és per eliminar, mantenir o definir variables d'entorn per a l'execució de l'ordre. Per a setenv, la llista de variables es dona dins unes claus {}, totes separades per espais. Amb un signe igual (=) es defineix una variable, amb el nom sol es manté la variable, i amb un signe menys (-) davant la variable aquesta s'elimina.

Restriccions d'ordres i arguments

La part cmd d'una regla permet restringir-la per a permetre només l'execució d'una determinada ordre, potser restringint-ne també els arguments o subordres. Per exemple

permit johnsmith as root cmd apt args update

L'ordre s'escriu darrere de cmd, i els arguments o subordres darrere de args. La paraula clau args sola, sense res darrere, vol dir que l'ordre s'ha d'executar sense cap argument. Aquesta regla d'exemple, permet a l'usuari johnsmith executar com a root només l'ordre apt update. Qualsevol altre subordre o argument addicional, o l'absència d'algun d'ells, donarà com resultat un missatge d'error «Operation not permitted».

Exemple

Aquesta regla d'exemple mostra l'ús de diferents opcions avançades alhora

permit nopass setenv { -http_proxy APT_CONFIG=/etc/apt/apt.conf.d/50appstream } :updaters cmd apt args update

Això permet a qualsevol membre del grup updaters executar apt update sense contrasenya, alhora que s'elimina la variable d'entorn http-proxy, i es defineix la variable d'entorn APT_CONFIG amb el camí a un fitxer de configuració de l'Apt.

PAM

El paquet doas instal·la un fitxer de configuració bàsica de PAM, en /etc/pam.d/doas. Per tant no és necessari que n'escriviu cap vosaltres.


Forma d'ús

A banda del que s'ha dit en la secció Configuració, l'ordre doas incorpora certa funcionalitat estàndar.

De manera predeterminada, l'ordre doas assumeix que l'usuari objectiu és l'administrador (root). Amb l'opció -u podem definir explícitament l'usuari com a qui volem executar l'ordre. Per exemple

> doas -u juliasmith whoami

intentarà executar l'ordre whoami com a juliasmith. Si juliasmith existeix i tenim permisos per actuar com a ella, es mostrarà el seu nom d'usuari: juliasmith.

Amb l'opció -s podem obrir un intèrpret d'ordres com a l'usuari objectiu. Per exemple

> doas -s

obrirà un intèrpret d'ordres com a administrador (root), ja que és l'usuari objectiu per omissió. Altrament

> doas -u juliasmith -s

obrirà un intèrpret d'ordres com a juliasmith, ja que l'hem definida explícitament com usuari objectiu.

L'opció -n activa el mode no interactiu: si cal demanar contrasenya a l'usuari, doas ho interpretarà com un error. Això vol dir que amb aquesta opció només es poden executar regles del tipus permit nopass.

L'opció -C permet comprobar si un fitxer de configuració té errors de sintaxi. Per exemple, un cop enllestit el vostre fitxer /etc/doas.conf, executeu

> doas -C /etc/doas.conf

Si el fitxer està ben format, no mostrarà res; en canvi si hi ha errors de sintaxi, en mostrarà informació.

Addicionalment, l'opció -C és útil per a fer comprovacions lògiques: donada una ordre i uns arguments, quina regla s'aplicarà, sense realment executar l'ordre. Assumint un fitxer /etc/doas.conf de dues regles com el següent

# Permetre al grup «updaters» executar «apt» com a «root»,
# però només amb argument «update»
permit nopass :updaters as root cmd apt args update
# Permetre a l'usuari «johnsmith» executar «apt upgrade» com a administrador
permit persist johnsmith as root cmd apt args upgrade

suposant que ho executa johnsmith i que pertany al grup updaters

> doas -C /etc/doas.conf apt update
permit nopass
> doas -C /etc/doas.conf apt upgrade
permit

Això és perquè la primera ordre compleix només la primera regla; en canvi la segona ordre compleix ambdues regles, per tant s'aplica l'última (la segona). Per a qualsevol altre usuari del grup updaters, el resultat hagués sigut permit nopass i deny, respectivament.


Vegeu també

Enllaços externs


CategoryRoot | CategorySystemSecurity | CategorySystemAdministration