Tenga mucho cuidado: ¡los guiones combinados con setuid son peligrosos!
Primero, eche un vistazo a esta pregunta / respuestas , especialmente en esta respuesta y advertencia de seguridad .
Si aún desea ejecutar su script con setuid
set, puede escribir un programa corto en C como contenedor y establecer el setuid
bit en el binario compilado.
Ejemplo de envoltura:
int main(void) {
setuid(0);
clearenv();
system("/absolute/path/to/your/script.sh");
}
Otra solución usando sudo
(mencionado aquí ):
Como root, evite el acceso de escritura (y tal vez otro) a su script:
raíz conocida /absolute/path/to/your/script.sh
chmod 700 /absolute/path/to/your/script.sh
Verifique que nadie, excepto la raíz, pueda reemplazar el script , por ejemplo, modificando los derechos de acceso de la carpeta principal:
raíz del chown / absoluta / ruta / a / su /
chmod 755 / absolute / path / to / your /
Modifique los derechos de acceso a sudo /etc/sudoers
con visudo
:
TODOS TODOS = (raíz) NOPASSWD: /absolute/path/to/your/script.sh
Puede encontrar más detalles sobre la configuración (por ejemplo, restringir el acceso a usuarios o grupos específicos) en la página de manual de sudoers.
Luego, todos los usuarios pueden ejecutar el script como root sin contraseña:
sudo /absolute/path/to/your/script.sh
Esto es similar al uso de la solución de envoltura / setuid anterior.