Como tornar o script em execução quando o log / logout do usuário atual.

2

Eu tenho um pi de framboesa. Ele tem um usuário pi para o qual nós automaticamente fazemos o login em cada inicialização. Eu preciso renomear o pi para myuser. Para fazer isso, estou seguindo as etapas abaixo:

  1. sudo passwd root - > Atribuir uma senha ao usuário root
  2. reinicialização do sudo
  3. Fazer login como root
  4. Executar comandos usermod -l myuser pi usermod -m -d /home/myuser myuser
  5. reinicialização do sudo
  6. Login como myuser
  7. Edite o arquivo /etc/sudoers e altere pi para myuser

As etapas acima seguirão alterando o usuário pi para myuser.

Eu preciso fazer um script disso. Mas o problema que estou enfrentando é como manter o script em execução ao reinicializar e fazer o login como root / pi. Por exemplo, para logar como root e pode sair do pi usando o comando

sudo pkill -u pi

Isso sairá do pi e uma tela de login será exibida quando eu puder fazer o login como root digitando o nome de usuário (root) e a senha. Mas depois do login como root, como posso manter meu script em execução para que ele possa executar comandos usermod -l myuser pi usermod -m -d /home/myuser myuser . Existe alguma maneira de fazer isso, ou qualquer maneira alternativa de fazer mudar o nome de usuário.

Obrigado.

    
por S Andrew 08.11.2017 / 12:45

1 resposta

1

Parece que o problema que você está enfrentando é que você está tentando modificar a conta de usuário com a qual você está logado. Isso pode ser um pouco complicado. Mas você poderia tentar algo como o seguinte:

# Become the root user (if you aren't already)
sudo su

# Set the password for the root user
echo "root:<PASSWORD>" | chpasswd

# Update the system user-datbase files to reflect the name-change
sed -i 's/pi/myuser/g' /etc/passwd
sed -i 's/pi/myuser/g' /etc/shadow
sed -i 's/pi/myuser/g' /etc/group

# Update the sudoers file to reflect the name-change
sed -i /etc/sudoers 's/pi/myuser/g'

# Move the user home directory to the new location (the UID stays the same, we don't need to run chown)
mv -i /home/pi /home/newuser

Se você quiser executar isso de forma não interativa enquanto estiver conectado como o usuário pi , poderá criar o seguinte script:

#!/bin/bash

# update_user.sh

# Set the password for the root user
echo "root:<PASSWORD>" | chpasswd

# Update the system user-datbase files to reflect the name-change
sed -i 's/pi/myuser/g' /etc/passwd
sed -i 's/pi/myuser/g' /etc/shadow
sed -i 's/pi/myuser/g' /etc/group

# Update the sudoers file to reflect the name-change
sed -i /etc/sudoers 's/pi/myuser/g'

# Move the user home directory to the new location (the UID stays the same, we don't need to run chown)
mv -i /home/pi /home/newuser

E, em seguida, execute-o usando sudo da seguinte forma:

sudo update_user.sh

OBSERVAÇÃO: Eu acho que provavelmente não é uma boa idéia ter um shell script que contenha sua senha root. Você pode querer considerar não definir a senha de root programaticamente assim.

Minha solução original está abaixo.

Talvez eu esteja sentindo falta de algo, mas não sei por que você precisa reiniciar o dispositivo repetidamente. Você deve conseguir fazer todas as alterações desejadas e, em seguida, reinicializar quando terminar. Que tal tentar algo como o seguinte:

# Become the root user (if you aren't already)
sudo su

# Set the password for the root user
passwd

# Change the login name of the "pi" user to "myuser"
usermod -l myuser pi

# Update the "myuser" home directory
usermod -m -d /home/myuser myuser

# Edit the file /etc/sudoers and change pi to myuser
visudo

# Reboot the system
reboot

Esta é uma alteração leve da lista de comandos que você está usando: sudo su primeiro, executa todos os comandos e só reinicializa quando terminar. Isso ainda não é roteirizado em sua forma atual, pois requer interação do usuário - especificamente para definir a senha e editar o arquivo sudoers. Se você realmente quiser ser capaz de executar isso sem supervisão, precisará automatizar essas duas tarefas. Se esse for seu objetivo, convém modificar o script para se parecer com o seguinte:

# Become the root user (if you aren't already)
sudo su

# Set the password for the root user
echo "root:<PASSWORD>" | chpasswd

# Change the login name of the "pi" user to "myuser"
usermod -l myuser pi

# Update the "myuser" home directory
usermod -m -d /home/myuser myuser

# Edit the file /etc/sudoers and change pi to myuser (CAREFUL!)
sed -i /etc/sudoers 's/pi/myuser/g'

# Reboot the system
reboot

Veja este post para mais discussões sobre a configuração ou alteração de senhas programaticamente:

por 09.11.2017 / 13:13

Tags