본문 바로가기
운영체제(OS)/Linux

sudo -iu로 사용자 계정 전환과 로그인 셸 이해하기

by JLearn 2026. 9. 22.

Linux에서 다른 사용자의 권한으로 작업해야 할 때 sudo -iu를 사용할 수 있습니다. 예를 들어 관리자가 일반 사용자 appuser의 작업 환경을 열어 파일 접근 권한이나 실행 결과를 확인할 수 있습니다.

sudo -iu appuser

이 명령은 appuser 계정의 로그인 셸(login shell)을 실행합니다. 실행할 명령을 따로 지정하지 않았다면 셸이 열리고, 종료할 때까지 해당 계정의 권한으로 명령을 입력할 수 있습니다.

sudo -iu의 의미

sudo -iu appusersudo -i -u appuser를 줄여 쓴 형태입니다.

구성 의미
sudo 권한이 허용된 사용자가 다른 사용자 권한으로 명령을 실행하는 도구
-i (--login) 대상 사용자의 로그인 셸을 실행하고 로그인 환경을 구성하는 옵션
-u appuser (--user=appuser) 명령을 실행할 대상 계정을 appuser로 지정하는 옵션

-u를 지정하지 않고 sudo -i를 실행하면 기본 대상은 root입니다. 명령을 실행하려면 현재 사용자에게 해당 sudo 작업을 수행할 권한이 있어야 합니다.

로그인 셸에서 바뀌는 것

sudo -iu appuser를 실행하면 일반적으로 작업 디렉터리가 appuser의 홈 디렉터리로 바뀌고, HOME, USER, LOGNAME, SHELL 등의 환경 변수가 대상 계정에 맞게 설정됩니다. 실제 환경 변수 처리에는 sudoers 정책과 시스템 설정이 영향을 줄 수 있습니다.

로그인 셸은 해당 셸의 시작 파일을 읽습니다. 예를 들어 Bash 로그인 셸은 /etc/profile을 읽고, 사용자 홈에서 ~/.bash_profile, ~/.bash_login, ~/.profile 가운데 존재하는 첫 번째 파일 하나를 읽습니다. ~/.bashrc는 Bash 로그인 셸이 항상 직접 읽는 파일은 아닙니다. 로그인용 설정 파일에서 ~/.bashrc를 불러오는 구성이면 함께 적용됩니다. 다른 셸은 시작 파일 규칙이 다를 수 있습니다.

sudo -iu appuser는 대상 계정의 로그인 셸을 구성하는 명령이지, SSH로 직접 로그인하는 것과 완전히 같은 과정은 아닙니다. SSH 인증, 세션 설정 및 접근 제한은 별도로 적용됩니다.

실행 예제와 확인 방법

현재 사용자와 작업 위치를 확인합니다.

whoami
pwd

appuser로 전환합니다.

sudo -iu appuser

전환 후 계정, 홈 디렉터리, 현재 위치와 셸을 확인합니다.

whoami
id
printf 'HOME=%s\nSHELL=%s\n' "$HOME" "$SHELL"
pwd

whoamiappuser를 표시하고, 일반적으로 현재 위치는 해당 계정의 홈 디렉터리입니다. 작업을 마치면 다음 명령으로 전환된 셸을 종료하고 이전 셸로 돌아갑니다.

exit

관리자 권한의 로그인 셸이 필요한 경우에는 다음처럼 실행합니다.

sudo -i

이는 기본 대상 계정인 root의 로그인 셸을 실행합니다. sudo -iu root도 같은 목적으로 사용할 수 있습니다.

비슷한 명령과 차이점

명령 동작 작업 디렉터리 및 환경
sudo -iu appuser appuser의 로그인 셸 실행 일반적으로 대상 계정의 홈으로 이동하며 로그인 환경 구성
sudo -u appuser bash appuser 권한으로 Bash 실행 기본적으로 현재 디렉터리를 유지하며 Bash의 비로그인 셸 실행
sudo -u appuser 명령어 해당 계정 권한으로 지정한 명령만 실행 별도 로그인 셸을 열지 않으며, 명령이 끝나면 기존 셸에서 계속 작업
sudo -u appuser -s 대상 계정 권한으로 셸 실행 로그인 셸을 요청하지 않으며, 셸 선택과 환경은 설정의 영향을 받음
sudo -i 기본 대상인 root의 로그인 셸 실행 일반적으로 /root로 이동하며 관리자 로그인 환경 구성

예를 들어 대상 계정의 권한으로 파일 하나만 확인할 때는 셸 전체를 전환하지 않아도 됩니다.

sudo -u appuser ls -la /home/appuser

반대로 여러 명령을 연속해서 실행하고 해당 사용자의 로그인 환경도 확인해야 한다면 다음 명령을 사용합니다.

sudo -iu appuser

sudo -u appuser bashsudo -u appuser -s는 일반적으로 작업 디렉터리를 유지하지만, 현재 디렉터리에 appuser의 접근 권한이 없다면 파일을 읽거나 이동할 때 오류가 발생할 수 있습니다. 또한 sudo는 정책에 따라 환경 변수를 정리하므로, 기존 사용자의 환경 변수가 모두 그대로 유지된다고 가정해서는 안 됩니다.

서비스 계정에서 확인할 사항

서버에서는 애플리케이션을 실행하기 위한 전용 시스템 계정을 만들기도 합니다. 이러한 계정은 대화형 로그인을 제한하기 위해 로그인 셸을 /usr/sbin/nologin 또는 /bin/false로 지정할 수 있습니다.

대상 계정의 로그인 셸을 확인합니다.

getent passwd appuser

출력의 마지막 필드가 계정에 설정된 로그인 셸입니다. 이 값이 nologin이나 false라면 sudo -iu appuser로 대화형 셸을 열 수 없을 수 있습니다. 단일 명령만 실행할 때는 허용된 권한 범위에서 sudo -u appuser 명령어를 사용할 수 있습니다. 셸을 명시적으로 실행해야 한다면 계정 정책을 확인한 뒤 관리자가 필요한 방식으로 실행해야 합니다.

계정 전환은 파일 소유권이나 권한 설정을 변경하지 않습니다. appuser로 전환해도 해당 계정이 접근할 수 없는 파일이나 다른 사용자의 전용 서비스에는 자동으로 접근할 수 없습니다.

참고 자료

반응형

댓글