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.
irssi
tiene 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:
irssi
usuarioirssi
cuenta del usuario está deshabilitada.irssi
cuenta 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.irssi
usuario.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 elsu
comando tuvo éxito, todavía obtendría un shellirssi
, pero las variables de entorno noHOME
cambiarían.Si en su lugar desea ejecutar un programa llamado
irssi
, debe invocar de manerasu
diferente:Si lo omite , es lo mismo que - intenta ejecutar el comando como root.
-c username
-c root
Alternativamente, puede iniciar un shell y luego ejecutar el comando :
su username -
irssi
).exit
.Ejecutando comandos como
root
Si quieres correr
irssi
comoroot
,su
no 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 elroot
inicio de sesión, entonces debería poder usarsu
para convertirseroot
. La razón por la que no es necesario habilitar laroot
cuenta es que, lo hagas o no, aún puedes ejecutar comandos comoroot
consudo
.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 comoroot
consudo
(a menos que reconfiguresudo
para permitir que otros lo hagan, por supuesto). Por lo tanto, un usuario que no tiene permiso para administrar el sistema no puede ejecutar comandos comoroot
con su propia contraseña.Para correr
irssi
comoroot
consudo
:Y usted ingresaría su contraseña cuando se le solicite, no
root
la de.Excepto qué contraseña ingresas, esto hace lo mismo que:
Excepto que la
sudo
versión puede tener éxito porque no requiere que laroot
cuenta esté habilitada.Al igual que con
su
, puede usarsudo
para ejecutar comandos como otro, noroot
usuario . Para correrirssi
comousername
consudo
:Si desea
sudo
comportarse comosu -
con respecto aHOME
, es decir, desea utilizar lasHOME
variables de entorno del usuario objetivo , puede ejecutarsudo
con el-H
indicador: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 -
:(
i
Significa el shell de inicio de sesión inicial ).También puede iniciar un shell como otro usuario:
Lectura adicional sobre
sudo
Para obtener más información
sudo
, eche un vistazo a:sudo
sitio aguas arriba (por el autor desudo
).man sudo
¿Por qué
gksu
funcionó cuandosu
no?gksu
Probablemente funcionó corriendosudo
.gksu
es una interfaz para ambossu
ysudo
. En Ubuntu, el uso predeterminado essudo
(ya que en Ubuntu,su
generalmente no se usa para convertirseroot
, y es solo una forma secundaria de convertirse en otros, noroot
usuarios).Puede
gksu
utilizarlosu
como interfaz de usuario ejecutandogksu --su-mode
.Puede averiguar si
gksu
está ensu
modo osudo
modo, y (si lo desea) cambiar esta configuración, ejecutandogksu-properties
. Esta es una configuración por usuario.Cuando
gksu
está ensudo
modo, se comporta igual quegksudo
.Lectura adicional sobre
gksu
sudo
".man gksu
gksu
sitio web aguas arriba (por los creadores degksu
).gksu
vsgksudo
en 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
username
cuenta se creó con el--disabled-login
indicador, 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 mediousername
no puede autenticarse en absoluto.Entonces, todas las
su
soluciones basadas están fuera.sudo
Sin embargo, puede funcionar, porque consudo
usted 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
root
cuenta después de haberla habilitado temporalmente.La
username
cuenta tiene/bin/false
como shell de inicio de sesión.Cuando un shell como se
bash
ejecuta 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/false
ejecuta, por otro lado, no hace nada y reporta fallas . (/bin/true
no hace nada e informa el éxito)Los comandos
false
ytrue
son ú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 usarsftp
yscp
transferir archivos.Desde
username
's shell de entrada era no funcional, comandos como , , , y no podía trabajar.su username
su - username
sudo -u username -s
sudo -u username -i
Pero los comandos que no dan un shell, como o podrían funcionar.
sudo -u username command
su 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í,
username
ambos habían deshabilitado la contraseña y el shell "deshabilitado". La ausencia de una contraseña de trabajo impidió que todas lassu
soluciones 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 bash
sudo -u username command
es lo que quedaba.fuente