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: