¿Existe alguna manera de eliminar los requisitos de root para un comando específico en Linux? En caso afirmativo, ¿cómo es eso?

¿Existe alguna manera de eliminar los requisitos de root para un comando específico en Linux? En caso afirmativo, ¿cómo es eso?

Estoy usando Ubuntu 12.04 LTS y estoy intentando que el comando específico

dhclient

no requiere privilegios de root. Investigué un poco lo que me lleva a creer que podría desbloquear un usuario "su", que no requeriría root para nada, pero temo romper algo de esa manera.

Quizás estoy haciendo dos preguntas por separado:

  1. ¿Dónde residen en mi sistema operativo todos los comandos que no requieren privilegios de root?

  2. ¿Puedo mover este comando allí?

En mi caso, cualquier forma funcionará y, para ser honesto, ni siquiera estoy seguro de si así es como se distinguen los comandos del usuario normal del resto.

Respuesta1

La mejor manera de hacerlo es con sudo, que es muy configurable con respecto a qué usuario puede ejecutar qué comandos. Úselo visudopara editar /etc/sudoers(nunca edite este archivo directamente; si comete un error, se bloqueará por completo). La siguiente entrada permitiría al usuario bobejecutar dhclientsin requerir una contraseña.

bob ALL = (root) NOPASSWD: /sbin/dhclient

Bob correría sudo dhclientcuando para ejecutarlo.

Respuesta2

Si un usuario específico puede o no ejecutar exitosamente un programa (binario o script) depende de dos cosas:

  • El usuario necesita privilegios de ejecución sobre el archivo.

    Esto no es un problema: ls -lrevela que cualquier usuario puede ejecutar /sbin/dhclient.

  • El usuario necesita privilegios de lectura, escritura y/o ejecución de los archivos a los que accede el programa.

    Esta parte es mucho, mucho más complicada y peligrosa, ya que puede implicar cambiar los permisos de muchos archivos.

Para más información, verChmod - Wikipedia.

La forma normal de ejecutar un comando con privilegios de root es sudo. Desde elpágina de manual:

sudopermite a un usuario autorizado ejecutar undominiocomo superusuario u otro usuario, según lo especificado en elsudoersarchivo. El uid y gid reales y efectivos se configuran para que coincidan con los del usuario de destino como se especifica en el archivo passwd y el vector de grupo se inicializa según el archivo de grupo (a menos que el-PAGse especificó la opción). Si el usuario que invoca es root o si el usuario de destino es el mismo que el usuario que invoca, no se requiere contraseña. De lo contrario,sudorequiere que los usuarios se autentiquen con una contraseña de forma predeterminada (NOTA: en la configuración predeterminada, esta es la contraseña del usuario, no la contraseña de root). Una vez que un usuario ha sido autenticado, se actualiza una marca de tiempo y el usuario puede usar sudo sin contraseña por un corto período de tiempo (5 minutos a menos que se anule ensudoers).

La sintaxis básica en su caso específico es:

sudo dhclient

Respecto a tus otras preguntas:

1.​ ¿Dónde residen todos los comandos que no requieren privilegios de root en mi sistema operativo?

La mayoría de los archivos binarios de todos los usuarios residen en /bin, /usr/biny /usr/local/bin.

La mayoría de los archivos binarios del sistema (requieren privilegios de root) residen en /sbin.

Esto es sólo una regla general. Puedes colocar binarios donde quieras.

Ver también:Estándar de jerarquía del sistema de archivos

2. ¿Puedo mover este comando allí?

Aparte de potencialmente romper algo, esto no tendría ningún efecto.

información relacionada