2010-08-06 22 views
6

Quiero agregar una línea en el crontab (en mi máquina local) que se ejecutará cada cinco minutos. Mi problema es el comando que voy a utilizar sudo requiere:¿Cómo ejecutar un comando sin sudo?

sudo indexer --config /usr/local/etc/sphinx.conf --all --rotate 

¿Hay alguna manera de ejecutar el comando sudo sin usar y sin solicitar la contraseña?

Gracias!

+3

pertenece a superuser.com – Philipp

Respuesta

3

ponerlo en el crontab de root

sudo crontab -e 

No se puede poner

indexer --config /usr/local/etc/sphinx.conf --all --rotate 

Todos los comandos de este crontab serán ejecutadas como root. Si acaba de usar crontab -e como su usuario actual, se ejecutarán bajo los permisos de los usuarios.

+0

Esto parece resolver el problema. Pero aún así quiero saber cómo algunos comandos se pueden ejecutar sin la palabra sudo en ellos .. Un ejemplo de ello podría ser: sudo apt-get install ¿Cómo puedo entonces hacer precisamente apt-get install ?? Agregarme al archivo sudoers? Gracias! – r2b2

+3

@ r2b2: No se puede, es un asunto de seguridad básico. Para ejecutar comandos como 'root ', necesita probar que está autorizado para hacerlo. 'sudo' te permitirá ejecutar comandos como' root' (generalmente después de pedirte tu contraseña) * porque estás en el archivo 'sudoers' *. Otra forma de ejecutar un comando como 'root' es con el comando' su', que le solicita la contraseña 'root'. Los comandos en el crontab de 'root' se ejecutan como' root' ya que 'root' debe haberlos escrito. – Gilles

0

ejecutarlo como una raíz? o usuario de esfinge? intente averiguar qué usuario necesita que se ejecute y añádalo a los usuarios cron

1

Es extremadamente peligroso poner aplicaciones en el crontab raíz a menos que la caja esté bien protegida de piratas informáticos. Si por casualidad alguien reemplaza los binarios (incluidas las bibliotecas), ¡ya te has ido!

Una mejor manera sería aislar todos los archivos que el binario accede a un usuario sin privilegios y ejecutar el trabajo como el usuario sin privilegios.

Cualquiera de los archivos binarios que utiliza la aplicación no debe ser escribible por nadie excepto root.

+0

@Nilesh: ¿eh? cualquier sistema Unix tiene comandos en el crontab del sistema, para ser ejecutados por 'root'. No hay un peligro particular al hacerlo. Lo que sería peligroso sería ejecutar un programa cuyo archivo binario (o biblioteca cargada) pueda ser escrito por otro usuario, ya que ese usuario podría ejecutar código arbitrario como 'raíz' sobrescribiendo el archivo. Eso solo es vulnerable a los usuarios locales. – Gilles

+0

@Gilles: cierto. Debería haber dicho binarios en lugar de binarios :) Editado. – Nilesh

+0

@Nilesh: Creo que el problema está claro en nuestras mentes pero no en lo que escribiste, así que déjame sugerirte algunos cambios. En primer lugar, la parte sobre "protegido de piratas informáticos" no es realmente relevante: el punto clave es que root no debe ejecutarse (a través de cron o de otro modo) una aplicación cuyo ejecutable puede ser sobrescrito por otro usuario. En segundo lugar, de hecho, no se trata solo de archivos binarios y bibliotecas, sino de todo lo que se ejecutará (incluido el código binario cargado desde las bibliotecas, pero también toda clase de scripts). – Gilles

0

Puede configurar sudo para no pedir contraseña. Lee sudoers para hombres para saber cómo hacer eso. Busque la cadena NOPASSWD.

2

Sólo anexar su comando a la lista de archivos sudoer utilizando visudo cmd (esto cmd requiere privilegio de la raíz) de la siguiente manera:

<YOUR_USER_NAME> ALL = NOPASSWD:<ABSOLUTE-PATH-TO-CMD> 

Cuida del ABSOLUTO-path-to-CMD, puede convertirse en una agujero de seguridad

Cuestiones relacionadas