현재 사용자가 로그인/아웃할 때 스크립트를 어떻게 실행할 수 있나요?

현재 사용자가 로그인/아웃할 때 스크립트를 어떻게 실행할 수 있나요?

나는 라즈베리 파이를 가지고 있습니다. 부팅할 때마다 자동으로 로그인하는 사용자 pi가 있습니다. pi의 이름을 myuser로 바꿔야 합니다. 이를 위해 다음 단계를 따릅니다.

  1. sudo passwd root -> 루트 사용자에게 비밀번호 할당
  2. sudo 다시 시작
  3. 루트로 로그인
  4. 명령 실행usermod -l myuser pi usermod -m -d /home/myuser myuser
  5. sudo 다시 시작
  6. myuser로 로그인
  7. 파일을 편집 /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

프로그래밍 방식으로 비밀번호를 설정하거나 변경하는 방법에 대한 자세한 내용은 다음 문서를 참조하세요.

관련 정보