Lo siguiente evita que las cuentas bloqueadas cambien sus shells y permite selectivamente que las personas se utilicen chsh
SIN sudo o su:
Configuración simple que sigue siendo segura:
Agregue esta parte superior de /etc/pam.d/chsh
:
# This allows users of group chsh to change their shells without a password.
#
# Per: http://serverfault.com/questions/202468/changing-the-shell-using-chsh-via-the-command-line-in-a-script
#
auth sufficient pam_wheel.so trust group=chsh
Crea el grupo chsh:
groupadd chsh
Para cualquier usuario autorizado a cambiar su shell:
usermod -a -G chsh username
Tiro de dinero:
user@host:~$ getent passwd $USER
user:x:1000:1001::/home/user:/bin/bash
user@host:~$ chsh -s `which zsh`
user@host:~$ getent passwd $USER
user:x:1000:1001::/home/user:/usr/bin/zsh
user@host:~$
chsh en realidad cambia la línea perteneciente a un usuario en / etc / passwd, aunque un usuario solo puede cambiar su propia 'línea' en / etc / passwd. Por lo tanto, si desea cambiar el shell para otro usuario, necesita su contraseña.
Si realmente quieres hacerlo (dadas las preocupaciones en la publicación de Lorenzo y las posibles preocupaciones de seguridad), así es como se puede hacer esto:
Esto requiere privilegios de root.
Digamos que actualmente se está ejecutando como "alice" y quiere cambiar el shell de "bob" sin contraseña;
Añadir al archivo:
Esto asegura que 'alice' pueda ejecutarse en todos los hosts como usuarios en el grupo SH sin una contraseña del grupo de comandos en SHELL.
Probablemente sea un poco descabellado hacerlo de esta manera, pero es posible.
Asegúrese de leer "sudoers man" antes de cambiar el archivo sudores con 'visudo', ¡especialmente los mensajes relacionados con la seguridad!
fuente
sudo
es que es extremadamente fácil evadir y rootear un sistema. Es mejor no cambiar nunca asudoers
menos que exista una necesidad específica que no pueda satisfacerse de otra manera (setuid / setgid ejecutable, permisos de grupo, etc.).Necesita pasar el nombre de usuario; hacer esto a través de
sudo
(o por root) le permitirá establecer la contraseña / shell de un usuario sin que se le solicite la contraseña anterior. Por favor, consulteman chsh
para obtener más información.Ahora mi pregunta es: ¿por qué querrías hacer eso? Si se trata de un script de configuración, ¿no debería simplemente cambiar el shell de los usuarios en el momento de la creación (es decir, al iniciar
adduser
)? Si está clonando un sistema de forma remota, ¿no debería cambiarlo/etc/passwd
primero? No veo razones para hacerlo a través de un script, a menos que haya automatizado todo el proceso de instalación y la selección de los shells a instalar se produce después de la creación del primer usuario.fuente
#!/usr/bin/sudo -s
(línea shebang). Además, ¿está seguro de que zsh está en / bin y quizás no en / usr / bin? (solo comprobando, no estoy familiarizado con ec2)sudo
permiso. Vea el mío para un enfoque diferente que no requieresudo
para el usuario promedio.Creo que puede cambiar el shell del usuario en el
/etc/password
archivo, posiblemente utilizando elpasswd
comando. Todavía no lo he leído, pero esto puede ser útil: las diferencias de shell de UNIX y cómo cambiar su shell .fuente
chsh
ousermod
. Nunca edite elpasswd
archivo directamente, siempre use elvipw
comando para eso.Intenta
sudo chsh -s /bin/zsh
, entonces:echo $SHELL
: en caso de que haya cambiado :)fuente