슈퍼유저 사용하기






su

◼️ 기본 설명

su(Substitute User 또는 Switch User)는 현재 로그인된 쉘 세션을 종료하지 않고, 다른 사용자 계정(기본값은 최고 관리자인 root)의 권한으로 전환하거나 해당 사용자의 환경에서 명령을 실행할 때 사용하는 명령어야.

◼️ 기본 커맨드 실행 시

su
  • 대상 계정을 지정하지 않고 단독으로 실행하면 최고 관리자(root) 계정으로의 전환을 시도해.

  • Password: 프롬프트가 뜨며, 이때 전환하려는 대상 계정(root)의 비밀번호를 입력해야 해.

  • 주의할 점은 단독 su 실행 시 root의 권한만 가져올 뿐, 현재 사용자의 환경 변수($PATH, $HOME 등)와 현재 작업 디렉터리가 그대로 유지돼.

◼️ 주요 옵션 및 사용법

옵션 / 사용법설명예시
-, -l, --login대상 사용자의 로그인 환경(환경 변수, 홈 디렉터리, 쉘 설정 등)을 완전히 불러와서 세션을 전환 (가장 권장되는 방식)su - 또는 su - john
-c [명령어], --command계정을 완전히 전환하지 않고, 해당 사용자의 권한으로 단일 명령어만 실행한 뒤 복귀su -c "systemctl restart nginx" root
-s [쉘경로], --shell대상 계정의 기본 쉘 대신 지정한 쉘(/bin/bash, /bin/zsh 등)을 실행su -s /bin/bash nobody
su [사용자명]root가 아닌 특정 일반 사용자 계정으로 전환su john
su - [사용자명]특정 일반 사용자의 전체 로그인 환경으로 깔끔하게 전환su - john

◼️ 관련 정보 및 팁

  • su vs su -의 결정적 차이:

    • su: 권한만 전환되고 현재 사용자의 환경 변수($PATH 등)가 남아 있어, root 전용 명령어(/sbin, /usr/sbin경로의 툴들)를 칠 때 command not found가 뜰 수 있어.

    • su -: 대상 사용자로 완전히 처음부터 로그인한 것처럼 홈 디렉터리(~)로 이동하고 $PATH도 완전히 갱신돼. 특별한 이유가 없다면 항상 su - 형태로 쓰는 게 안전해.

  • su vs sudo 차이점:

    • su: 대상 계정(root)의 비밀번호를 직접 알아야 전환 가능.

    • sudo: sudoers 파일에 등록된 사용자 본인의 비밀번호를 사용해 일시적으로 관리자 권한을 행사. 실무나 최신 배포판(Ubuntu 등)에서는 root 비번을 비활성화하고 sudo를 쓰는 구조를 권장해.

  • 원래 계정으로 복귀: 전환된 세션을 종료하고 이전 계정으로 돌아가려면 exit를 입력하거나 단축키 Ctrl + D를 누르면 돼.

  • 관련 명령어 및 파일:

    • sudo: 특정 관리자 권한으로 명령어 1회 실행 또는 sudo -i로 root 로그인

    • whoami / id: 현재 전환된 세션의 실제 사용자 이름 및 UID/GID 확인

    • /etc/passwd: 시스템에 등록된 전체 사용자 계정 목록 확인







* 이 게시물은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.