2009-06-18 16 views
11

Necesito que el archivo Bash se ejecute periódicamente, y debe ser como root.¿Es posible hacer que un archivo Bash se ejecute como root en crontab?

¿Es esto posible?

[[email protected] nutch-0.9]# locate crontab 
/etc/crontab 
/etc/sysconfig/crontab 
/usr/bin/crontab 
/usr/share/man/man1/crontab.1.gz 
/usr/share/man/man1p/crontab.1p.gz 
/usr/share/man/man5/crontab.5.gz 
/usr/share/vim/vim71/syntax/crontab.vim 
[[email protected] nutch-0.9]# 
+1

También podría intentar hacer esta pregunta en serverfault. –

Respuesta

18

Sí, simplemente agréguela a los usuarios de root 'crontab; ejecuta el comando crontab -e.

Los lugares que cron almacena sus archivos pueden ser un poco extravagantes, así que use el comando crontab -e que se asegurará de que esté en el lugar correcto, y creo que verifica la sintaxis.

+0

He enumerado todos los archivos crontab, ¿qué quiere decir que debo modificar? – omg

+3

En lugar de modificar directamente un archivo crontab usted mismo, whatsisname está sugiriendo que use el comando "crontab -e", que editará el crontab correcto. – ephemient

11

Usted sólo puede hacer

crontab -e 

como root.

0

Creo que todas las entradas en el crontab de root se ejecutan como root. Puede hacer que invoque un script de Bash como acción y debería hacer lo que quiera.

-1

Una forma de hacer esto (a través de sudo):

  1. Es necesario configurar prilvileges sudo para la cuenta para ejecutar sin entrar en las credenciales de usuario
  2. Agregar "sudo/ruta/a/mando "(sin el") para ejecutar el comando como root también puede agregar parámetros al comando
4

Sólo especifique root como el usuario para la entrada en /etc/crontab:..

0 0 * * * root somecommand 

Alternativamente, también puede agregar el comando al crontab personal de root usando crontab -e como raíz.

+0

Gracias, por cierto, ¿podría decirme para qué son los otros archivos crontab? – omg

+1

El archivo crontab en/usr/bin es el ejecutable que abre un editor si escribe "crontab -e". Los archivos a continuación/usr/share/man son las páginas de manual que se obtienen al escribir "man crontab". /usr/share/vim*/sytax/crontab.vim es un resaltado de sintaxis especial para vim (activado para archivos crontab). – sth

+0

Esto no funcionó para mí. Obtuve el mensaje/bin/sh: 1root: not found – Lumbee

4

No importa qué, tendrá que tener acceso a la cuenta de usuario raíz.

  1. puedes añadir a la crontab de root, como se sugiere
  2. puede utilizar sudo, como se sugiere
  3. puede utilizar el bit setuid. El problema con el bit de setuid es que debe ser un programa compilado. Si está compilado, puede "chmod 4755" y establecer el propietario del archivo en la raíz, y se ejecutará como raíz. Si no está compilado, puede escribir un envoltorio pequeño en C (o en cualquier otro lenguaje de programación compilado) que simplemente llame a su secuencia de comandos y ponerlo en el contenedor, y asegúrese de que el contenedor sea propiedad de root.

Mi consejo? Use el crontab raíz. Es para lo que está ahí.

Además, no hay ninguna entrada de usuario en crontab como sugiere algo ... la sintaxis es:

# .---------------- minute (0 - 59) 
# | .------------- hour (0 - 23) 
# | | .---------- day of month (1 - 31) 
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ... 
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat 
# | | | | | 
# * * * * * command to be executed 

Si desea introducir algo en crontab como root, simplemente ingrese a su cuenta raíz, " crontab -e "y voila ... root crontab.

+0

En algunas versiones (más antiguas) de cron, hay un usuario especificado en el crontab. Ver http://www.unixgeeks.org/security/newbie/unix/cron-1.html – jschmier

Cuestiones relacionadas