Mudando permanentemente para zsh em um script, sem ser root e sem pedir a senha

4

Existe alguma maneira de executar chsh -s /bin/zsh sem ser root e sem ser solicitada a senha? Eu quero colocá-lo em um script não interativo que não é chamado pelo root.

    
por Matt Alexander 04.08.2011 / 20:02

3 respostas

2

Se você não tem permissão para alterar seu shell de login, você pode dizer bash (suponho que bash é seu shell de login) para substituir a si mesmo por zsh. No seu ~/.bash_login , adicione esta linha:

exec /bin/zsh --login
    
por 04.08.2011 / 20:22
0

Se a sua versão de chsh exigir uma senha (a minha), você precisará configurar o sudo com permissões especiais. Você pode configurá-lo para permitir o acesso a qualquer programa sem solicitar uma senha como esta:

user   ALL=(ALL) NOPASSWD:/usr/bin/chsh

Onde "usuário" é seu nome de usuário (ou prefixo com% para um nome de grupo). Certifique-se de especificar o caminho completo para o seu chsh . Isso não permitirá que o usuário execute qualquer outra coisa como raiz (inclusive de um script), mas permitirá que um binário seja executado como root sem uma senha, evitando assim o prompt de senha do usuário.

    
por 04.08.2011 / 22:29
0

Dependendo de suas necessidades exatas, se você quiser fazer isso porque está executando um script longo e não quer que ele fique suspenso no meio da pergunta, é possível solicitar a senha antecipadamente e, em seguida, executar chsh com sudo privileges, lendo a senha de stdin .

read -p 'What is your password?' sudo_password

# rest of the script here

sudo -S chsh -s '/bin/zsh' "${USER}" <<< "${sudo_password}"

-S faz com que sudo leia a senha em stdin . Esteja ciente dos possíveis riscos de segurança com essa abordagem (eu não consegui reproduzir isso, porém, e novamente, dependendo de suas necessidades, isso pode não ser um problema).

    
por 19.10.2015 / 19:27