Autor Tema: Comando Sudo  (Leído 2455 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado DarkBios

  • The Communiter-
  • *
  • Mensajes: 2329
  • El conocimiento no tiene limites
    • Rivera Center System
Comando Sudo
« : junio 07, 2008, 11:54:06 am »

Sudo

sudo  es una herramienta del sistema que permite a los usuarios especificados en el archivo de configuración  /etc/sudoers,  la ejecución de comandos con los privilegios de otro usuario ( incluido root), al que denominaremos "ususario privilegiado", de acuerdo a como se haya especificado en el mencionado archivo de configuración. En  /etc/sudoers,  se especifica quien está autorizado a hacer que con los privilegios de quien.

De hecho, la finalidad de  sudo  es reemplazar a  su .

Por defecto,  sudo  requiere que los usuarios se identifiquen con su propia clave de acceso ( nunca con la clave de acceso de root o del usuario a "nombre del quien" ejecutarán el comando).

Una vez se ha identificado correctamente, el usuario podrá utilizar nuevamente  sudo  sin necesidad de una nueva identificación durante un periodo de tiempo, determinado en  /etc/sudoers, . ( por defecto: 5 minutos).
Con el comando  sudo -v   podra reiniciarse el citado periodo.

El "prompt" de la contraseña también se desactiva si en un determinado tiempo no se ha introducido ésta. Por defecto este periodo es de 5 minutos.

Si un usuario no contemplado en  /etc/sudoers,  intenta ejecutar un comando via  sudo , se advierte del ello al administrador del sistema ( o a quien se determine en  /etc/sudoers, ; por defecto, root ) mediante el envio de un mail.

Debe tenerse en cuenta que el mencionado mail no será enviado si el usuario no autorizado intenta la ejecución de un comando via  sudo  con las opciones  -l   o   -v   . Esto permite a los usuarios comprobar por si mismos si están o no autorizados a utilizar  sudo .

Sudo puede registrar los intentos de acceso, exitosos y fallidos, asi como los errores, en syslog, en otro archivo log que determinemos o en ambos. Por defecto, sudo utiliza syslog para los mencionados registros, aunque esto también es configurable en  /etc/sudoers .

La sintaxis básica de la órden  sudo  es:

$ sudo opción comando

Tras pulsar  Enter  sudo pedirá al usuario que se identifique con su propia contraseña (configuración por defecto)

La secuencia de la ejecución de un comando via  sudo  (sin opciones), sería la siguiente:

asd53@ubuntu-p:~$ sudo apt-get update

Tras pulsar  Enter  , se nos solicita la introducción de nuestra contraseña:

asd53@ubuntu-p:~$ sudo apt-get update
Password:

Una vez introducida la contraseña correcta, se ejecuta el comando  (en el ejemplo:  apt-get update).

Opciones del comando sudo

-H
(Home)

Asigna la variable de entorno  HOME  al homedir del usuario privilegiado ( por defecto, root) tal como se especifica en passwd. Por defecto,  sudo  no modifica la variable  HOME  ( ver:  set_home,  y  always_set_home, .)

-K

Análoga a la opción  -k, con la diferencia que  -K  elimina completamente el tiempo de vigencia de la contraseña del usuario, establecido en  timestamp_timeout, , para la sesión corriente.

Como  -k, , esta opción no precisa contraseña.

-L
(list defaults)

Con esta opción se nos presenta una lista con las  Opciones de Configuración (Defaults),  de  /etc/sudoers), , con una corta descripción de cada una de ellas.

asd53@ubuntu-p:~$ sudo -L

Available options in a sudoers ``Defaults'' line:
syslog: Syslog facility if syslog is being used for logging
syslog_goodpri: Syslog priority to use when user authenticates successfully
syslog_badpri: Syslog priority to use when user authenticates unsuccessfully
long_otp_prompt: Put OTP prompt on its own line
ignore_dot: Ignore '.' in $PATH
mail_always: Always send mail when sudo is run
mail_badpass: Send mail if user authentication fails
mail_no_user: Send mail if the user is not in sudoers
......................................................

-P
(preserve group vector)

Da lugar a que  sudo  conserve el grupo vector del usuario que lo invoca.

-S
(stdin)

Da lugar a que  sudo  lea la contraseña desde standard input en lugar de hacerlo desde la terminal.

-V
(version)

Con esta opción,  sudo  nos muestra la versión utilizada y sale.
Si se ejecuta  sudo -V  como root, nos muestra las opciones con las que fué compilado sudo, asi como las direcciones , en la red local, de las distintas máquinas.

Ejecutado como usuario normal:

asd53@ubuntu-p:~$ sudo -V
Sudo version 1.6.8p12
asd53@ubuntu-p:~$

Ejecutado como root:

root@ubuntu-p:~# sudo -V
Sudo version 1.6.8p12
Authentication methods: 'pam'
Syslog facility if syslog is being used for logging: authpriv
Syslog priority to use when user authenticates successfully: notice
Syslog priority to use when user authenticates unsuccessfully: alert
Send mail if the user is not in sudoers
............................................
Environment variables to check for sanity:
XAUTHORIZATION
XAUTHORITY
..............................................
Environment variables to remove:
PERL5OPT
PERL5LIB
PERLLIB
...............................................
Local IP address and netmask pairs:
192.168.0.12 / 0xffffff00
root@ubuntu-p:~#

-a
(authentication type)

Da lugar a que  sudo  utilice el tipo de identificación de usuario especificado en  /etc/login.conf. El administrador del sistema puede especificar una relación de métodos de identificación específicos para  sudo , añadiendo una entrada "auto-sudo" en  /etc/login.conf. En sistemas que soportan identificación BSD, esta opción sera operativa solo si  sudo  ha sido configurado con la opción  --with-bsdauth.

-b
(background)

Da lugar a que  sudo  ejecute el comando en cuestión en segundo plano (background). Debemos tener en cuenta que si utilizamos esta opción, no podremos utilizar el control de tareas de shell ( shell job control) para manipular el proceso.

-c
(class)

Da lugar a que  sudo  ejecute el comando especificado con recursos limitados por la login class especificada. El argumento de  -c  puede ser tanto un nombre de clase definido en  /etc/login.conf  , o un simple caracter  - . Especificando  -  se indica que el comando puede ejecutarse con las restricciones por defecto para el usuario. Si el argumento de  -c  especifica una class existente, el comando debe ser ejecutado como root, o el comando  sudo  debe ser ejecutado desde una shell root.
En sistemas que con BSD login class, esta opción sera operativa solo si  sudo  ha sido configurado con la opción  --with-logincap.

-e
(edit)

Con esta opción se indica a  sudo  que, en lugar de ejecutar un comando, lo que se desea es editar uno o mas archivos.

Si el usuario esta autorizado en  /etc/sudoers), , se seguiran las siguientes etapas:

   1. Se realizarán copias temporales de los archivos editados, con los parámetros del usuario .
   2. El se usará editor especificado en las variables de entorno  VISUAL  o  EDITOR  para editar los archivos temporales. Si no se ha especificado editor en las citadas variables, se usará uno de los especificados en la opción de configuración  editor, .
   3. Una vez modificadas, los archivos temporales serán copiados en su localización original y se eliminarán las versiones temporales creadas.

Si el archivo especificado no existe, será creado.

A diferencia de muchos comandos ejecutados via  sudo , el editor usado se ejecuta sin modificación del entorno del usuario.

Si por alguna razón  sudo  no puede actualizar un archivo con su versión editada, el usuario recibirá un mensaje de alerta y la copia editada permanecerá como un archivo temporal.

En el siguiente ejemplo, se utiliza el editor  nano  para editar el archivo  /etc/fstab :

asd53@ubuntu-p:~$ sudo -e /etc/fstab
Password:
GNU nano 1.3.10 Fitxer: /var/tmp/fstab.XX43RwPD
# /etc/fstab: static file system information.
# #
proc /proc proc defaults 0 0
/dev/hda1 / ext3 defaults,errors=remount-ro 0 1
/dev/hda4 /media/hda4 ext3 defaults 0 2
/dev/hda5 none swap sw 0 0
/dev/hdc /media/cdrom0 udf,iso9660 user,noauto 0 0

-h
(help)

Da lugar a que  sudo  muestre un mensaje con información referente a su uso.

asd53@asd53:~> sudo -h
usage: sudo -K | -L | -V | -h | -k | -l | -v
usage: sudo [-HPSb] [-p prompt] [-u username|#uid]
{ -e file [...] | -i | -s | }
asd53@asd53:~>

-i
(simulate initial login)

Mediante esta opción se ejecuta la shell especificada en la entrada  /etc/passwd  del usuario a nombre del cual se ejecutan los comandos.
En el ejemplo siguiente, al ejecutarse los comandos via sudo a nombre de root, con sudo -i aparecerá la shell de root:.

asd53@asd53:~$ sudo -i
root@asd53:~#

-k
(kill)

Invalida el tiempo de vigencia de la contraseña del usuario, establecido en  timestamp_timeout, .
La proxima vez que el usuario desee ejecutar un comando via  sudo  se le requerirá la introduccion de su contraseña.
Esta opción no requiere contraseña. Puede considerarse la opción "opuesta" a   -v

-l
(list)

Nos muestra una relación de los comandos que el usuario puede ejecutar en el presente host.

asd53@asd53:~$ sudo -l
Password:
User asd53 may run the following commands on this host:
(ALL) ALL
asd53@asd53:~$

-p
(prompt)

Nos permite anular prompt por defecto mediante el cual se nos solicita la introducción de la contraseña de usuario y sustituirlo por uno personalizado.

La sintaxis del comando  sudo  cuando se utiliza esta esta opción es:

$ sudo -p prompt comando

En el siguiente ejemplo vemos como sustituimos el prompt por defecto  Password:   por la palabra  Hola: 

asd53@asd53:~$ sudo -p Hola: date
Hola:
dc jun 14 15:08:20 CEST 2006
asd53@asd53:~$

Soporta los siguientes escapes % :

%u
    Lo expande al nombre del usuario que ejecuta  sudo
%U
    Lo expande al nombre del usuario privilegiado (por defecto, root)
%h
    Lo expande al nombre host local, sin nombre de dominio.
%H
    Lo expande al nombre host local, con nombre de dominio.
%%
    Lo reduce a un simple %

En el siguiente ejemplo vemos como se ha sustituido el prompt por defecto  Password:   por  %

asd53@asd53:~$ sudo -p %% date
%
dc jun 14 15:04:39 CEST 2006
asd53@asd53:~$

-s
(shell)

Ejecuta la shell especificada en la variable de entorno  SHELL   o, si no esta especificada en la citada variable, la shell especificada en  /etc/passwd  .

-u
(user)

Permite ejecutar el comando como un usuario privilegiado distinto de root.

La sintaxis de  sudo  cuando se utiliza esta opción es:

$ sudo -u usuario comando

En lugar del nombre del usuario, puede especificarse su  uid . En este caso la sintaxis seria:

$ sudo -u #uid comando

Debemos tener en cuenta que si la opción de configuración (Defaults)  targetpw,  está activada, no será posible ejecutar comandos con una uid no listada en la base de datos de password.

-v
(validate)

Prolonga la vigencia de la contraseña, reiniciando la marca del tiempo. De este modo podemos disponer de otros 5 minutos de vigencia ( o del periodo establecido en la opción de configuración (Defaults)  timestamp_timeout, . Puede considerarse la opción "contraria" a  -k  y  -K .

--

Indica a  sudo  que debe parar el proceso que se esté llevando a cabo en la linea de comandos.
II  sudoedit

Si lo que pretendemos no es ejecutar un comando sino editar un archivo, podemos invocar  sudo  como  sudoedit .
En este caso es como si ejecutáramos  sudo -e.

La sintaxis de  sudoedit  es:

$ sudoedit opciones archivo

Las opciones que pueden utilizarse con sudoedit son :  -S;   -a;  -p  y   -u

asd53@asd53:~$ sudoedit -p %h /etc/fstab
localhost
GNU nano 1.3.10 Fitxer: /var/tmp/fstab.XX43RwPD
# /etc/fstab: static file system information.
# #
proc /proc proc defaults 0 0
/dev/hda1 / ext3 defaults,errors=remount-ro 0 1
/dev/hda4 /media/hda4 ext3 defaults 0 2
/dev/hda5 none swap sw 0 0
/dev/hdc /media/cdrom0 udf,iso9660 user,noauto 0 0

( En el ejemplo anterior se ha sustituido el prompt por defecto de la contraseña por  localhost  mediante la opción  -p %h )

III Variables de entorno de sudo

 sudo  utiliza las siguientes variables de entorno:

EDITOR
    Editor por defecto que se utilizará en modo  -e  ;  ( sudoedit )  si la variable  VISUAL   no ha sido establecida.
HOME
    En modo  -s  o  -H  ( si  sudo  fué configurado con la opción  --enable-shell-sets-home   ) el homedir del usuario privilegiado ( por defecto, root).
PATH
    Si  sudo  fué configurado con la opción  ---with-secure-path   , tendrá un valor correcto y seguro.
SHELL
    Se utiliza para determinar la shell a utilizar con la opción  -s
SUDO_PROMPT
    Se utiliza para fijar el prompt por defecto de la petición de contraseña.
SUDO_COMMAND
    Asignada al comando ejecutado por  sudo
SUDO_USER
    Asignada al login del usuario que ha invocado  sudo .
SUDO_UID
    Asignada al uid del usuario que ha invocado  sudo
SUDO_GID
    Asignada al gid del usuario que ha invocado  sudo
SUDO_PS1
    Si se ha configurada, PS1 será asignado a esos valores
USER
    Asignada al usuario privilegiado ( root, salvo que se utilice la opción  -u )
VISUAL
    Editor por defecto a utilizar en modo  -e  ( sudoedit )

Tomado de: http://www.rpublica.net/sudo/sudo.html