¿Es posible ejecutar un script en Linux como propietario del archivo?

¿Es posible ejecutar un script en Linux como propietario del archivo?

Lamento no saber si este es el lugar correcto o no. Tengo prisa, corro con el tiempo. Tengo un archivo que tiene los siguientes atributos en una máquina Linux. (núcleo 2.6.26)

-rwxrwxrwx 1 root root 25 2015-06-01 08:08 /usr/bin/runme

No tengo privilegios de root en la máquina y no sé la contraseña de root. ¿Es posible ejecutar este script como propietario? Escribí y compilé algo de código C en un archivo diferente, pero no funcionó. El código que he usado;

#include <unistd.h>
#include <errno.h>

int main(void) {        
     setuid(0);
     system("/bin/bash /usr/bin/runme"); 
}

Entonces alguien dijo que se usa execve, pero el resultado no cambia. Aquí está el código cuando uso execve;

#include <unistd.h>
#include <errno.h>

int main(void) {        
        extern char * const environ[];
    char * const command[] = {"runme", NULL, NULL, NULL, NULL,NULL, NULL};
    execve("/usr/bin/runme", command, environ);
}

Respuesta1

Es posible, pero debes tener mucho cuidado con esto: tu script tiene privilegios globales de lectura y escritura, lo que significaalguienpodría cambiarlo, y por lo tanto podría hacercualquier cosacomo raíz.

Es una especie de agujero de seguridad que pone los pelos de punta. Si quieres conseguir unnormalbinario para ejecutarse como usuario, debe agregar la setuidbandera al binario con chmod g+s. Esto tendrás que hacerlo como root, porque si no lo haces, también se abrirá un enorme agujero de seguridad.

Si quieres hacerlo con un script... depende del lenguaje de script. Algunos (de hecho, muchos) simplemente se negarán a trabajar debido a la forma en que se implementan; nuevamente, un riesgo para la seguridad.

Sugeriría que la raíz (sic) a la que ir aquí sea para mirar sudo: es un "superusuario" y permite a los usuarios sin privilegios ejecutar comandos como cuentas privilegiadas (o raíz). Luego, una vez configurado, podrá:

sudo /path/to/script

Aunque, todavía no dejaría que se pueda escribir en ese mundo del guión. Eso sigue siendo un riesgo para la seguridad.

Si no tiene root, ni contraseña de root ni acceso de administrador... entonces sugeriría que eso es porque NO es su sistema, y ​​deje de intentar hacer esto, porque probablemente sea un uso indebido de la computadora y puede ser un delito dependiendo de dónde. tu vives.

Respuesta2

No hay forma (sin utilizar una vulnerabilidad) de ejecutar un script (o cualquier ejecutable) como otro usuario a menos que ese usuario le haya otorgado ese derecho en algún momento.

Para ejecutables "reales", esto se puede hacer usando el bit setuid, que puede configurar el propietario del archivo. Para los scripts, los entornos modernos normalmente ignoran el bit setuid, por lo que necesitaría algún tipo de contenedor (ya sea uno personalizado o sudo). Verhttps://unix.stackexchange.com/questions/364/allow-setuid-on-shell-scriptspara mas detalles.

Su caso específico es un excelente ejemplo de cómo el bit setuid puede ser peligroso. Tener el bit setuid en un archivo que se puede escribir y ejecutar en todo el mundo le permitiría ejecutar cualquier comando como propietario del archivo. Como el propietario del archivo es en realidad root, reemplazar el contenido de dicho archivo con, por ejemplo, el contenido de bash le otorgaría un shell root.

información relacionada