Estoy trabajando en automatizar la creación de repositorios de subversión y sitios web asociados como se describe en esta publicación de blog que escribí . Me encuentro con problemas en la parte en la que le pido al usuario de www-data que ejecute el siguiente comando:
svnadmin create /svn/repository
Hay una comprobación al comienzo del script que asegura que se está ejecutando como root o sudo, y que todo lo que sigue a ese comando debe ejecutarse como root. ¿Hay una buena manera de ejecutar ese comando como www-data y luego volver a la raíz para terminar?
This account is currently not available.
su - www-data -s /bin/bash -c 'your_command'
para hacer que esto funcione. El usuario www-data tiene shell,/usr/sbin/nologin
por lo que sin el-s
parámetro conduce al mensaje de error.Con 'su' es probable que solicite una contraseña, y www-data no tiene contraseña. Recomiendo el comando
sudo
:La condición es que su usuario debe ser root o estar configurado en el archivo sudoers
fuente
Uso
su
:fuente
2 Posibles enfoques :
1)
sudo
comando:En la mayoría de los casos, tendrá acceso al
sudo
comando, por lo que la solución es simplemente:sudo -u target_user target_command
2)
su
comando (si sudo no está instaladoEx. alpine-linux images
):su - target_user -c 'target_command'
En caso de que reciba el error 'Esta cuenta no está disponible actualmente' , el usuario tiene una política de no inicio de sesión (acceso de shell) vigente. Si es así, considere usar:
su - target_user -s /bin/bash -c 'target_command'
(Basado en el valioso comentario de @Petr sobre la
-s
bandera para acomodarwww-data
la política de inicio de sesión del usuario)fuente