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/nologinpor lo que sin el-spará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)
sudocomando:En la mayoría de los casos, tendrá acceso al
sudocomando, por lo que la solución es simplemente:sudo -u target_user target_command2)
sucomando (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
-sbandera para acomodarwww-datala política de inicio de sesión del usuario)fuente