IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)

Sudo a Ubuntu

De SergiTurWiki
Share/Save/Bookmark
(S'ha redirigit des de: Sudo)
Dreceres ràpides: navegació, cerca

Contingut

sudo

A Linux i Unix en general totes les màquines tenen un superusuari anomenat root. El superusuari pot fer-ho tot i per tant treballar amb aquest usuari per fer les tasques del dia a dia pot ser molt perillós. És molt fàcil carregar-se un sistema pel simple fet d'executar un comanda incorrecta.

Per defecte a Ubuntu el compte de root està bloquejat. Això significa que no ens podem autenticar com a superusuari. Ubuntu utilitza sudo. Durant la instal·lació Ubuntu dóna permís a l'usuari principal per executar comandes com a superusuari.

Notes:

  • La contrasenya que cal introduir és la del usuari no la del superusuari (per aquesta raó no cal contrasenya de root a Ubuntu).
  • La contrasenya és emmagatzemada per defecte durant 15 minuts. Passat aquest temps és necessari posar un altre cop la contrasenya.
  • NOTA: La contrasenya no es mostra per pantalla ni tan sols amb els asteriscs!.
  • Les aplicacions dels menús que necessitin permisos de superusuari i preguntaran una contrasenya.
  • Per a les aplicacions gràfiques cal utilitzar gksu. Amb kde cal utilitzar kdesu.

Per executar comandes com a superusuari cal posar davant la comanda sudo. Per exemple:

$ sudo /etc/init.d/networking restart

Avantatges de sudo

  • L'instal·lador d'Ubuntu ha de fer menys preguntes.
  • Els usuaris no han de recordar una contrasenya extra.
  • Evita que els usuaris ho puguin fer tot per defecte. Abans de fer cap canvi important es pregunta una contrasenya. Això permet pensar en les conseqüències del que fem abans de fer-ho.
  • sudo afegeix un entrada en un fitxer de registre (/var/log/auth.log).
  • La paraula de pas de root no la sap ningú. Augmenta la seguretat ja que els atacants no poden utilitzar l'usuari root.
  • Permet administrar de forma més granular els permisos dels usuaris i per tant la política de seguretat de ela màquina.

Inconvenients de sudo

  • Algunes comandes no es poden utilitzar amb sudo (com per exemple la comanda cd o les redireccions).

L'ordre cd no funciona per què es tracta d'una ordre interna de bash, i no la podem executar com un ordre amb sudo per què el procés fill (sudo) no pot accedir al directori de treball actual (CWD) del procés pare (la shell on s'ha executat sudo). S'executa una shell dins d'un altre, i per seguretat una subshell no pot modificar l'entorn de la shell pare.

Recursos:

Executar cd i redireccions

Per a les redireccions:

Afegir:

$ sudo sh -c 'echo letter >> /etc/papersize'

Sobreescriure:

$ sudo sh -c 'echo letter > /etc/papersize'

Una alternativa és utilitzar l'ordre tee:

Per afegir:

$ echo letter | sudo tee -a /etc/papersize 

Per sobreescriure:

$ echo letter | sudo tee /etc/papersize

I per als cd:

$ sudo mkdir /root/restricted
$ sudo touch /root/restricted/a
$ sudo chmod 700 /root/restricted
$ sudo sh -c 'cd /root/restricted'
NOTA: El problema és que s'executa el cd en una bash i es finalitza el procés bash, per tant ens quedem igual

Normalment quan fem un cd és per després executar un altre ordre. Aleshores cal indicar també l'ordre:

$ sudo bash -c 'cd /root/restricted;ls -la'
total 8
drwx------  2 root root 4096 2009-11-14 11:49 .
drwx------ 13 root root 4096 2009-11-14 11:49 ..

També podeu fer:

$ sudo bash

Però equival a entrar com a root.

Un altre exemple:

$ sudo sh -c "cd /home ; du -s * | sort -rn > USAGE"


Recursos:

Instal·lar sudo

Passeu a superusuari:

$ su

I executeu:

# visudo

Afegiu la línia:

%admin ALL=(ALL) ALL

Al final del fitxer. Ara afegiu el vostre usuari al grup admin:

# groupadd admin
# usermod -a -G admin etseib

Per exemple, si l'usuari és etseib, hauríeu d'executar:

# usermod -a -G admin etseib

Sortiu de root:

# exit

I comproveu que podeu utilitzar sudo:

$ sudo ls
NOTA: és possible que hageu de sortir de l'entorn gràfic i tornar a entrar. També podeu executar su nom_usuari per iniciar una nova sessió que 
ja tingui en compte el nou grup. 

Comproveu els grups amb:

$ groups

Afegir un usuari als grups de sudoers

Tal i com podeu veure a la secció Fitxer /etc/sudoers el grup que dona permisos per executar sudo és el grup admin. Podem afegir un usuari al grup admin amb el gestor d'usuaris d'Ubuntu (Aplicació Usuaris i Grups del menú Sistema/Administració) o executant la comanda:

$ sudo usermod -a -G admin usuari

A l'aplicació Usuaris i Grups cal anar a la pestanya Privilegis i seleccionar la opció Administració del sistema:

Si a més voleu que tingui els mateixos permisos que la majoria d'usuaris del sistema, consulteu primer els grups d'un usuari existent, per exemple:

$ sudo groups sergi
sergi adm dialout cdrom plugdev lpadmin sambashare admin

I feu:

$ sudo usermod -a -G adm,dialout,cdrom,plugdev,lpadmin,sambashare,admin usuari

Fitxer:Sudo.png

Fitxer /etc/sudoers

En aquest fitxer s'indiquen els usuaris que tenen permís per executar sudo. Veiem un exemple:

NOTA IMPORTANT: No editeu mai directament aquest fitxer. Utilitzeu visudo. Un error durant la edició pot implicar una pèrdua completa del 
control de la màquina.
$ sudo cat /etc/sudoers 
Password:
# /etc/sudoers

# This file MUST be edited with the 'visudo' command as root.

# See the man page for details on how to write a sudoers file.

# Host alias specification  

# User alias specification
 
# Cmnd alias specification  

# Defaults

Defaults        !lecture,tty_tickets,!fqdn

# User privilege specification
root    ALL=(ALL) ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

Aquest fitxer és el típic fitxer sudoers a Ubuntu. La sintaxi és la següent:

  • Root: Nom de l'usuari amb permisos de root. Aquí hi podem posar també una llista d'usuaris o grups Unix.
  • ALL=(ALL):
  • ALL: La tercera columna són les comandes que es poden executar.

Per indicar un grup Linux en comptes d'un usuari s'afegeix un % a l'inici del nom de grup com a l'exemple anterior:

%admin ALL=(ALL) ALL

Amb sudo i el fitxer de configuració sudoers podem controlar amb molt de detall que poden o que no poden fer els usuaris. Per exemple, les següents línies permetrien apagar o reiniciar la màquina sense la necessitat de posar el password:

Cmnd_Alias SHUTDOWN_CMDS = /sbin/shutdown, /sbin/halt, /sbin/reboot
sergi ALL=(ALL) NOPASSWD: SHUTDOWN_CMDS

El fitxer sudoers permet una gran varietat d'opcions. Les podeu consultar al manual Unix(man sudoers) o a Internet. Per exemple podeu consultar la wiki d'Ubuntu:

visudo

Permet editar el fitxer sudoers de forma segura ja que impedeix que guardem el fitxers amb errors.

Es pot canviar el editor amb:

$ sudo -i
# export EDITOR=${EDITOR:-/bin/nano}
# visudo

Gksu i kdesu

Cal evitar executar aplicacions gràfiques amb la comanda sudo. Per aquest tipus d'aplicacions hem d'utilitzar les comandes gksu per a gnome o kdesu per a KDE.

Si executem aplicacions gràfiques amb sudo podem provocar el següent error a l'intentar autenticar-nos:

"Unable to read ICE authority file"

Per solucionar aquest problema cal esborrar el fitxer /home/el_teu_usuari/.{ICE,X}authority:

" rm /home/el_teu_usuari/.{ICE,X}authority Media:Exemple.ogg

man sudo_root

$ man sudo _root
                                                                                                                                                      
sudo_root - How to run administrative commands

SYNOPSIS 
       sudo command

       sudo -i 

INTRODUCTION
       By  default, the password for the user "root" (the system administrator) is locked. This means you cannot login as root or 
       use su. Instead, the installer will set up
      sudo to allow the user that is created during install to run all administrative commands.
...

Exemples de configuració de sudo

Utilitzar la paraula de pas de root en comptes de la del usuari

Això es pot fer amb l'opció targetpw. Si afegiu la línia:

Defaults targetpw

Ara veureu que quan executeu sudo:

$ sudo ls
root's password:

Us demana la paraula de pas de root.

Alias de comandes

Es poden especificar alies de comandes (com grups de comandes) amb:

## Command Aliases
## These are groups of related commands... 

## Networking
Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool

## Installation and management of software
Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum 

## Services
Cmnd_Alias SERVICES = /sbin/service, /sbin/chkconfig

## Updating the locate database
Cmnd_Alias LOCATE = /usr/bin/updatedb

## Storage
Cmnd_Alias STORAGE = /sbin/fdisk, /sbin/sfdisk, /sbin/parted, /sbin/partprobe, /bin/mount, /bin/umount

## Delegating permissions
Cmnd_Alias DELEGATING = /usr/sbin/visudo, /bin/chown, /bin/chmod, /bin/chgrp 

## Processes
Cmnd_Alias PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall 

## Drivers
Cmnd_Alias DRIVERS = /sbin/modprobe

Així es pot delegar en alguns usuaris tasque concretes, com per exemple les tasques de xarxa.

Permetre a un usuari executar certa comanda sense demanar paraula de pas

Amb sudo i el fitxer de configuració sudoers podem controlar amb molt de detall que poden o que no poden fer els usuaris. Per exemple, les següents línies permetrien apagar o reiniciar la màquina sense la necessitat de posar el password:

Cmnd_Alias SHUTDOWN_CMDS = /sbin/shutdown, /sbin/halt, /sbin/reboot
sergi ALL=(ALL) NOPASSWD: SHUTDOWN_CMDS

Caducar la paraula de pas

Un cop introduida la paraula de pas amb sudo, a les pròximes comandes no es torna a demanar la paraula de pas fins que no passa un temps determinat. Podem forçar que caduqui "la sessió" amb:

$ sudo -k

Grup wheel

$ cat /etc/sudoers
...
# Uncomment to allow people in group wheel to run all commands
# %wheel	ALL=(ALL) ALL

# Same thing without a password
# %wheel	ALL=(ALL) NOPASSWD: ALL


   The wheel group is a unix legacy thing...  it allows users in the
   wheel group to have access to root ( su sudo ) in a more controlled way.
Sorry forgot something important...

... you will need to add the pam wheel.so module to the auth config of su and
sudo in the directory /etc/pam.d

Sudo a altres distribucions Linux

Linkat

A Linkat (al menys la versió 3) sudo ja es troba instal.lat però no funciona amb la configuració típica d'Ubuntu. Si observeu el fitxer de configuració:

# cat /etc/sudoers

Veureu les línies:

# In the default (unconfigured) configuration, sudo asks for the root password.
# This allows use of an ordinary user account for administration of a freshly
# installed system. When configuring sudo, delete the two
# following lines:
Defaults targetpw   # ask for the password of the target user i.e. root
ALL	ALL=(ALL) ALL   # WARNING! Only use this together with 'Defaults targetpw'!

És a dir s'utilitza la opció targetpw. És a dir qualsevol usuari pot utilitzar sudo, si sap la comanda de root.

sudo-ldap

Paquet que substitueix a sudo:

$ sudo apt-get install sudo-ldap

Consulteu també Ldap.

Resol·lució de problemes

Sudo lent (slow sudo) o en general qualsevol autenticació

Poden haver-hi múltiples raons:

  • El nom de màquina no es correcta o no es pot resoldre: Sovint passa al canviar el nom de màquina però no la seva corresponent entrada al fitxer /etc/hosts
  • Si esteu utilitzant una font d'autenticació externa aleshores pot ser degut al rendiment en l'accés a aquest font. Per exemple amb autenticació client amb Ldap podeu tenir en compte el següent:
  • Oco amb els loggings. Per exemple si activeu el log del servidor Ldap baixarà molt el rendiment ja que es fan un munt de escriptures a disc al actualitzar el fitxer de log.
  • Sempre val la pena que la base de dades Ldap sigui local (es pot utilitzar syncrepl per tal de tenir) en comptes de remota. Si la base de dades és remota qualsevol congestió en la xarxa pot ser un problema (a més de tenir en compte el tema de estar transferint per la xarxa informació d'autenticació --> si utilitzeu remot aleshores heu de xifrar per a la seguretat empitjorant encara més el rendiment)
  • Podeu utilitzar índexs Ldap per millora el rendiment. El fitxer de log normalment indica aquelles peticions al servidor Ldap que es poden millorar amb un índex

Vegeu també

Recursos

OpenFPnet
IES Nicolau Copèrnic