Estoy tratando de usar el comando su para ejecutar una aplicación como otro usuario
En este caso estoy tratando de ejecutar irssi
blah@ubuntu: su - [username] irssi
(enter password)
blah@ubuntu:
(nothing happens)
blah@ubuntu: su - [username] -c irssi
(nothing)
Ejecuto gksu y establezco los mismos parámetros y funciona, y no me pide la contraseña de usuario. ¿Cual es el problema? ¿Y cómo lo resuelvo?
Debo señalar que el usuario fue creado así
adduser --system --disabled-login [username]
si hace alguna diferencia ... suspiro.

irssitiene un problema y que el comando su funciona?Respuestas:
Hay múltiples problemas con el comando
su - irssi.Este comando intenta iniciar un shell propiedad de un usuario llamado
irssi.Fallará si:
irssiusuarioirssicuenta del usuario está deshabilitada.irssicuenta del usuario está deshabilitada para el inicio de sesión interactivo. A veces, una cuenta puede usar servicios como FTP, pero tiene prohibido iniciar sesión normalmente configurando su shell en algo que se cierra inmediatamente, como/bin/false. Luego, un inicio de sesión termina inmediatamente, sin mensaje.irssiusuario.El
-indicador hace que el shell simule un shell de inicio de sesión inicial, es decir, realmente es muy parecido a iniciar sesión comoirssi. Sin la-bandera, si elsucomando tuvo éxito, todavía obtendría un shellirssi, pero las variables de entorno noHOMEcambiarían.Si en su lugar desea ejecutar un programa llamado
irssi, debe invocar de manerasudiferente:Si lo omite , es lo mismo que - intenta ejecutar el comando como root.
-c username-c rootAlternativamente, puede iniciar un shell y luego ejecutar el comando :
su username -irssi).exit.Ejecutando comandos como
rootSi quieres correr
irssicomoroot,suno es la forma de hacerlo. Los inicios de sesión raíz están deshabilitados de manera predeterminada en Ubuntu, y rara vez hay alguna razón para volver a habilitarlos . Si ha habilitado elrootinicio de sesión, entonces debería poder usarsupara convertirseroot. La razón por la que no es necesario habilitar larootcuenta es que, lo hagas o no, aún puedes ejecutar comandos comorootconsudo.Cuando ejecuta comandos con
sudo, ingresa su contraseña, no la contraseña del usuario bajo cuya identidad desea que se ejecute el comando. Solo los administradores pueden ejecutar comandos arbitrarios comorootconsudo(a menos que reconfiguresudopara permitir que otros lo hagan, por supuesto). Por lo tanto, un usuario que no tiene permiso para administrar el sistema no puede ejecutar comandos comorootcon su propia contraseña.Para correr
irssicomorootconsudo:Y usted ingresaría su contraseña cuando se le solicite, no
rootla de.Excepto qué contraseña ingresas, esto hace lo mismo que:
Excepto que la
sudoversión puede tener éxito porque no requiere que larootcuenta esté habilitada.Al igual que con
su, puede usarsudopara ejecutar comandos como otro, norootusuario . Para correrirssicomousernameconsudo:Si desea
sudocomportarse comosu -con respecto aHOME, es decir, desea utilizar lasHOMEvariables de entorno del usuario objetivo , puede ejecutarsudocon el-Hindicador:Puede comenzar un shell completo con
sudo, como puede hacerlo consu. Excepto por la contraseña que ingresó, este comando tiene el mismo efecto quesu:Y este comando tiene el mismo efecto que
su -:(
iSignifica el shell de inicio de sesión inicial ).También puede iniciar un shell como otro usuario:
Lectura adicional sobre
sudoPara obtener más información
sudo, eche un vistazo a:sudositio aguas arriba (por el autor desudo).man sudo¿Por qué
gksufuncionó cuandosuno?gksuProbablemente funcionó corriendosudo.gksues una interfaz para ambossuysudo. En Ubuntu, el uso predeterminado essudo(ya que en Ubuntu,sugeneralmente no se usa para convertirseroot, y es solo una forma secundaria de convertirse en otros, norootusuarios).Puede
gksuutilizarlosucomo interfaz de usuario ejecutandogksu --su-mode.Puede averiguar si
gksuestá ensumodo osudomodo, y (si lo desea) cambiar esta configuración, ejecutandogksu-properties. Esta es una configuración por usuario.Cuando
gksuestá ensudomodo, se comporta igual quegksudo.Lectura adicional sobre
gksusudo".man gksugksusitio web aguas arriba (por los creadores degksu).gksuvsgksudoen Ubuntu.Análisis posterior a la solución
Finalmente descubrió que podía ejecutar el comando necesario con:
(Cuál es una de las técnicas mencionadas anteriormente).
Finalmente, usted reportó dos datos, que son suficientes para explicar por qué otras técnicas fallaron, pero tuvieron éxito:
La
usernamecuenta se creó con el--disabled-loginindicador, lo que hace que no tenga contraseña (y ningún otro medio para iniciar sesión). No tener contraseña no significa que sea posible iniciar sesión con una contraseña en blanco . Significa que ninguna contraseña es suficiente para autenticar. En combinación con la eliminación de otros medios de autenticación, este mediousernameno puede autenticarse en absoluto.Entonces, todas las
susoluciones basadas están fuera.sudoSin embargo, puede funcionar, porque consudousted no se autentica como el usuario que está a punto de suplantar. En cambio, tiene que estar autorizado para hacerse pasar por ellos y autenticarse como usted mismo (es decir, ingrese su propia contraseña, no la de ellos).Es posible establecer una contraseña en la cuenta, lo que elimina esta barrera para iniciar sesión:
Sin embargo, puede haber una buena razón por la cual el usuario no tiene permiso para iniciar sesión. Por ejemplo, si a este usuario se le permitiera iniciar sesión e iniciar sesión gráficamente, surgirían problemas graves si el entorno del usuario o los privilegios no son adecuados para ejecutar aplicaciones X11 ? Si este usuario pudiera iniciar sesión, ¿eso permitiría iniciar sesión de forma remota como ese usuario (para máquinas donde haya expuesto servicios de red)?
Si alguna vez quieres volver a desactivarlo:
Relacionado: Rehabilitar la
rootcuenta después de haberla habilitado temporalmente.La
usernamecuenta tiene/bin/falsecomo shell de inicio de sesión.Cuando un shell como se
bashejecuta como su shell de inicio de sesión, configura su entorno y le ofrece un mensaje interactivo con el que controlar la máquina.Cuando se
/bin/falseejecuta, por otro lado, no hace nada y reporta fallas . (/bin/trueno hace nada e informa el éxito)Los comandos
falseytrueson útiles en las secuencias de comandos y para diversos fines de prueba, pero también para deshabilitar una cuenta para que cuando alguien inicie sesión, su sesión de inicio de sesión termine inmediatamente. De esa manera, se puede habilitar una contraseña (u otro medio de autenticación), y las personas pueden iniciar sesión, pero no para el acceso de shell . Por ejemplo, si hay un servidor FTP, aún podrían acceder a su cuenta a través de FTP. Si hay un servidor SSH, no podrían obtener un shell a través de SSH, pero aún podrían usarsftpyscptransferir archivos.Desde
username's shell de entrada era no funcional, comandos como , , , y no podía trabajar.su usernamesu - usernamesudo -u username -ssudo -u username -iPero los comandos que no dan un shell, como o podrían funcionar.
sudo -u username commandsu username -c 'command'Como se pueden ejecutar comandos , puede cambiar el shell de inicio de sesión del usuario a algo funcional:
Sin embargo, esto también debe hacerse con precaución, ya que puede haber una buena razón para deshabilitar los inicios de sesión interactivos para el usuario.
Aquí,
usernameambos habían deshabilitado la contraseña y el shell "deshabilitado". La ausencia de una contraseña de trabajo impidió que todas lassusoluciones basadas en el trabajo funcionen, mientras que la ausencia de un shell de inicio de sesión interactivo que funcionó impidió que todas las soluciones de generación de shell funcionen (excepto invocar manualmente un shell, como ).sudo -u username bashsudo -u username commandes lo que quedaba.fuente