¿Hay alguna forma de permitir que el usuario ejecute comandos solo durante 2 días?

13

¿Cómo dar permiso a un comando sudo por un tiempo específico? ¿Hay alguna forma de otorgar derechos para ejecutar un comando específico durante 2 días solo en el archivo sudoers?

Abbas Kapasi
fuente

Respuestas:

18

El archivo sudoers no admite restricciones basadas en el tiempo, pero hay un método fácil. Cree un archivo con sus modificaciones en /etc/sudoers.d/(con sudo visudo -f /etc/sudoers.d/yourfile):

Agregue a un archivo (ejemplo:) file.shlo siguiente

mv /etc/sudoers.d/yourfile /etc/sudoers.d/.yourfile

Y esto deshabilitará sus alteraciones:

 sudo at -f file.sh 2pm + 2 days

Ejemplo:

at -f file.sh 2pm + 2 days
warning: commands will be executed using /bin/sh
job 4 at Thu Oct 15 14:00:00 2015

En este caso, movería el archivo a las 2 p. M. 2 días después de emitir el comando. El at manual tiene algunas opciones (puede usar una hora, días, semanas, meses, años, palabras clave como siguiente o sumar / restar períodos). Realice algunas pruebas con la opción de asegurarse de que lo comprende (Algo que debe tener en cuenta: es importante que comience atantes o después de las 2 p. M. Del mismo día).

attambién sobrevive a los reinicios, por lo que es una buena herramienta para este tipo de cosas. Y puedes alternar el acceso ...

sudo mv /etc/sudoers.d/.yourfile /etc/sudoers.d/yourfile | at 2pm + 2 days
sudo mv /etc/sudoers.d/yourfile /etc/sudoers.d/.yourfile | at 2pm + 4 days
sudo mv /etc/sudoers.d/.yourfile /etc/sudoers.d/yourfile | at 2pm + 6 days
sudo mv /etc/sudoers.d/yourfile /etc/sudoers.d/.yourfile | at 2pm + 8 days

y hacer que ese usuario se vuelva loco (wtf ahora puedo hacer esto).

El LÉAME en /etc/sudoers/:

# As of Debian version 1.7.2p1-1, the default /etc/sudoers file created on
# installation of the package now includes the directive:
# 
#   #includedir /etc/sudoers.d
# 
# This will cause sudo to read and parse any files in the /etc/sudoers.d 
# directory that do not end in '~' or contain a '.' character.
# 
# Note that there must be at least one file in the sudoers.d directory (this
# one will do), and all files in this directory should be mode 0440.
# 
# Note also, that because sudoers contents can vary widely, no attempt is 
# made to add this directive to existing sudoers files on upgrade.  Feel free
# to add the above directive to the end of your /etc/sudoers file to enable 
# this functionality for existing installations if you wish!
#
# Finally, please note that using the visudo command is the recommended way
# to update sudoers content, since it protects against many failure modes.
# See the man page for visudo for more information.

Si leo esto correctamente, no ejecutará ningún archivo con un "." en cualquier parte del nombre. Entonces el primer mvcomando puse el "." en frente haciéndolo también invisible. Si se asume correctamente, puede colocar un "." en cualquier sitio. Cuidado con el "~", ese es usado como una función de "respaldo" por editores como gEdit.


atno está instalado por defecto Instalar

sudo apt-get install at
Rinzwind
fuente
Gracias, ya lo pensé, pero la situación es que varios usuarios usan el archivo para su propio propósito, por lo que no es posible hacer una copia de seguridad y restaurar el archivo sudoers cada vez que otros usuarios también están modificando el mismo archivo sudoers, por lo que cuando restauro el archivo antiguo los cambios realizados por los usuarios de ohter desaparecerán ...
Abbas Kapasi
2
¿Qué tal este señor? Ah, y podría sugerir a sus múltiples usuarios que también usen los sudoers.d con su propio nombre de archivo. Parece mucho mejor que editar sudoers.
Rinzwind
@AbbasKapasi crea un nuevo archivo /etc/sudoers.dque no será utilizado por tus otros usuarios.
muru
Creo que el comando utilizado en toda la respuesta debería haber sido mv, no cp.
Cthulhu
3
donde ves cp? silba inocentemente
Rinzwind