나는 라즈베리 파이를 가지고 있습니다. 부팅할 때마다 자동으로 로그인하는 사용자 pi가 있습니다. pi의 이름을 myuser로 바꿔야 합니다. 이를 위해 다음 단계를 따릅니다.
- sudo passwd root -> 루트 사용자에게 비밀번호 할당
- sudo 다시 시작
- 루트로 로그인
- 명령 실행
usermod -l myuser pi
usermod -m -d /home/myuser myuser
- sudo 다시 시작
- myuser로 로그인
- 파일을 편집
/etc/sudoers
하고 pi를 myuser로 변경합니다.
위 단계에 따라 pi 사용자를 myuser로 변경합니다.
이에 대한 스크립트를 작성해야 합니다. 그러나 내가 직면한 문제는 재부팅하고 루트/pi로 로그인하는 동안 스크립트를 계속 실행하는 방법입니다. 예를 들어 다음 명령을 사용하여 루트로 로그인하고 pi에서 로그아웃합니다.
sudo pkill -u pi
그러면 파이에서 로그아웃되고 사용자 이름(root)과 비밀번호를 입력하여 루트로 로그인할 수 있을 때 로그인 화면이 나타납니다. 그러나 루트로 로그인한 후 명령을 실행할 수 있도록 스크립트를 계속 실행하려면 어떻게 해야 합니까 usermod -l myuser pi
usermod -m -d /home/myuser myuser
? 이를 수행할 수 있는 방법이나 사용자 이름을 변경하는 대안이 있습니까?
감사해요.
답변1
귀하가 겪고 있는 문제는 로그인한 사용자 계정을 수정하려고 하는 것 같습니다. 조금 까다로울 수 있습니다. 하지만 다음을 시도해 볼 수 있습니다.
# 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
사용자로 로그인한 동안 이 스크립트를 비대화식으로 실행하려면 pi
다음 스크립트를 생성할 수 있습니다.
#!/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
그런 다음 sudo
다음을 사용하여 실행하십시오.
sudo update_user.sh
노트:내 생각에는 루트 암호가 포함된 쉘 스크립트를 갖는 것은 아마도 좋은 생각이 아닐 것 같습니다. 고려해 볼 수도 있습니다.아니요이와 같이 프로그래밍 방식으로 루트 비밀번호를 설정하십시오.
내 원래 솔루션은 다음과 같습니다.
뭔가 빠졌을 수도 있지만 왜 장치를 반복적으로 다시 시작해야 하는지 잘 모르겠습니다. 원하는 모든 변경 작업을 수행한 다음 완료되면 재부팅할 수 있어야 합니다. 다음을 시도해 보는 것은 어떻습니까?
# 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
사용 중인 명령 목록이 약간 변경되었습니다. sudo su
먼저 모든 명령을 실행하고 완료되면 재부팅하십시오. 현재 형식에서는 사용자 상호 작용(특히 비밀번호 설정 및 sudoers 파일 편집)이 필요하므로 여전히 스크립트가 가능하지 않습니다. 이 작업을 무인으로 실행하려면 두 작업을 모두 자동화해야 합니다. 이것이 목표라면 다음과 같이 스크립트를 수정해야 할 수도 있습니다.
# 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
프로그래밍 방식으로 비밀번호를 설정하거나 변경하는 방법에 대한 자세한 내용은 다음 문서를 참조하세요.