ioerror

su 사용법 및 옵션 - 다른 사용자 계정으로 사용자를 전환하는 명령 본문

OS

su 사용법 및 옵션 - 다른 사용자 계정으로 사용자를 전환하는 명령

반응형

su - Substitute User / Switch User

현재 로그인된 세션에서 지정한 다른 사용자 계정의 권한 및 신원으로 전환하여 명령을 실행하거나 새로운 셸을 개시하는 유닉스 및 리눅스의 표준 계정 전환 명령어이다. 주로 일반 사용자 계정에서 시스템 관리 권한을 얻기 위해 root 계정으로 전환하거나, 특정 서비스 전용 계정(e.g., postgres, www-data)으로 변경하여 작업을 수행할 때 사용된다.

1. su 용도

  • 서버 관리 작업 수행을 위해 일반 계정에서 root 관리자 계정으로 전환할 때 사용된다.
  • 특정 애플리케이션이나 데이터베이스 계정(e.g. su - postgres)으로 전환하여 전용 작업을 수행할 때 활용된다.

2. su 서식

su [OPTIONS...] [USER [ARGUMENT...]]

3. su 옵션

옵션 설명 사용가능 OS 및 쉘
-, -l, --login 대상 사용자의 로그인 환경(환경 변수, PATH, Working Directory 등)을 완전히 로드하여 전환한다. 모든 유닉스/리눅스
-c command, --command=command 계정을 변경한 뒤 대화형 셸에 진입하지 않고 지정한 단일 명령만 실행한 후 기존 계정으로 돌아온다. 모든 유닉스/리눅스
-s shell, --shell=shell /etc/passwd에 지정된 기본 셸 대신 지정한 셸 환경으로 전환한다. 모든 유닉스/리눅스
-m, -p, --preserve-environment 현재 셸의 환경 변수(HOME, USER, SHELL 등)를 그대로 유지한 채 계정만 변경한다. 모든 유닉스/리눅스
-g group, --group=group 주 그룹(Primary Group)을 지정하여 실행한다. Linux shadow-utils
-G group, --supp-group=group 보조 그룹(Supplementary Group)을 지정하여 실행한다. Linux shadow-utils
-f, --fast C Shell(csh) 환경에서 스타트업 파일(.cshrc)을 읽지 않고 빠르게 실행한다. BSD csh
 
# 로그인 환경을 완전히 포함하여 root 계정으로 전환
su -
# Password:
# [root@server ~]# whoami
# root

# 특정 서비스 계정으로 환경 변수를 유지하며 단일 명령 실행
su -s /bin/bash -c "psql -c '\l'" postgres
#                               List of databases
#    Name    |  Owner   | Encoding | Collate | Ctype |   Access privileges   
# -----------+----------+----------+---------+-------+-----------------------
#  postgres  | postgres | UTF8     | C       | C     | 

# 현재 사용자의 환경 변수를 그대로 유지하며 developer 계정으로 전환
su -m developer
  • Password:: 전환 대상 계정(기본값: root)의 비밀번호를 입력받는 프롬프트이다.
  • root: 계정이 성공적으로 root 관리자로 변경되었음을 보여주는 결과이다.
  • List of databases ...: postgres 계정 권한으로 PostgreSQL 데이터베이스 목록 조회 명령을 수행한 결과이다.

4. su 특이사항(유의사항)

  • susu -의 차이점: su는 현재 사용자의 환경 변수(PATH, HOME 등)와 작업 디렉터리를 그대로 유지하지만, su -는 대상 사용자의 환경 변수와 초기화 파일(.bashrc, .bash_profile 등)을 완벽히 읽어 들어와 해당 사용자의 홈 디렉터리로 이동한다. 관리자 작업 시에는 환경 변수 꼬임을 방지하기 위해 su - 사용이 강력히 권장된다.
  • Root 계정 비밀번호 공유 문제: su 명령은 대상 계정의 비밀번호를 입력해야 하므로 관리자 비밀번호를 여러 사용자에게 공유해야 하는 보안 위험이 존재한다. 이를 보완하기 위해 개별 사용자의 비밀번호로 특정 관리자 명령을 위임 실행하는 sudo 사용이 현대 시스템 관리 표준으로 자리 잡았다.
  • Root 권한 사용자의 su 실행: root 계정에서 일반 사용자로 su 전환 시에는 비밀번호 입력 없이 즉시 계정이 전환된다.

관련 명령어들

  • sudo: 다른 사용자(주로 root)의 권한으로 특정 명령을 실행한다.
  • whoami: 현재 셸 세션의 실행 사용자 계정명을 출력한다.
  • id: 현재 세션 또는 특정 사용자의 UID, GID 및 소속 그룹 정보를 출력한다.
  • chsh: 사용자의 기본 로그인 셸을 변경한다.

https://ioerror.tistory.com/entry/UNIX-Linux-Command-Reference

 

UNIX & Linux Command Reference

유닉스 / 리눅스 명령어 표유닉스와 리눅스 환경에서 자주 사용되는 필수 명령어들을 완벽하게 정리한다. 서버 관리, 프로그래밍, 일상적인 시스템 운영 등 어떤 목적이든 터미널 환경을 능숙하

ioerror.tistory.com

 

 

 

반응형
Comments