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:
Per executar comandes com a superusuari cal posar davant la comanda sudo. Per exemple:
$ sudo /etc/init.d/networking restart
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:
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:
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
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
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:
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:
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
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 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.
...
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.
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.
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
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
$ 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
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.
Paquet que substitueix a sudo:
$ sudo apt-get install sudo-ldap
Consulteu també Ldap.
Poden haver-hi múltiples raons: