Su (유닉스)
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
`su`는 유닉스 계열 운영 체제에서 다른 사용자로 권한을 변경하는 데 사용되는 명령어이다. 명령줄에서 실행 시 대상 사용자의 비밀번호를 요구하며, 인증에 성공하면 해당 계정의 권한과 파일 접근 권한을 부여한다. `su -` 형태로 사용하면 로그인 셸을 시작하여 대상 사용자의 환경을 사용할 수 있다. `sudo`는 `su`와 유사하게 다른 사용자로 명령을 실행하지만, 권한 제약 조건을 설정할 수 있으며, 자신의 비밀번호로 인증한다. 일부 시스템에서는 'wheel' 그룹에 속한 사용자만 root 권한으로 `su`를 사용할 수 있지만, GNU `su`는 이러한 그룹을 지원하지 않는다.
더 읽어볼만한 페이지
- 유닉스 사용자 관리 및 지원 관련 유틸리티 - 로케일
로케일은 소프트웨어 국제화 및 지역화에서 사용자 문화적 배경에 맞춰 사용 환경을 조정하는 설정으로, 표시 언어, 숫자/날짜 형식, 문자 분류, 통화 형식 등을 포함한다. - 유닉스 사용자 관리 및 지원 관련 유틸리티 - 업타임
업타임은 시스템이나 장치가 중단 없이 작동한 시간을 나타내는 지표로, 시스템 안정성을 보여주는 중요한 지표이며, 넷크래프트는 웹 호스팅 컴퓨터의 업타임 기록을 관리하고, 다양한 운영체제에서 시스템 가동 시간을 확인하는 방법을 제공한다. - 시스템 관리 - 슈퍼유저
슈퍼유저는 운영 체제에서 모든 권한을 가진 사용자를 지칭하며, 유닉스 계열에서는 root, 윈도우에서는 관리자 계정이 해당 역할을 수행한다. - 시스템 관리 - 유닉스 셸
유닉스 셸은 사용자의 명령을 해석하여 운영 체제에 전달하고 프로그램 실행을 관리하는 명령 줄 인터페이스로서, 톰슨 셸을 시작으로 본 셸, C 셸 등 다양한 셸들이 개발되어 사용자에게 다양한 셸 환경 선택권을 제공한다.
Su (유닉스) - [IT 관련 정보]에 관한 문서 | |
---|---|
개요 | |
![]() | |
종류 | 명령어 |
운영 체제 | 유닉스 및 유닉스 계열 |
개발 | |
개발자 | 데니스 리치 켄 톰프슨 |
개발 기관 | AT&T 벨 연구소 |
최초 배포일 | 1971년 11월 3일 |
상세 정보 | |
용도 | 다른 사용자로 로그인 |
설명 | 'su는 " substitute user identity " 의 약자' |
사용법 | |
일반적인 사용법 | su [사용자 계정] |
루트 권한으로 전환 | su root 또는 su |
현재 사용자의 환경으로 전환 | su - 또는 su -l 또는 su --login |
2. 역사
`su` 명령어는 유닉스 권한 시스템 및 setuid 시스템 호출을 포함하여 Version 1 Unix의 일부였다. 암호화된 비밀번호는 Version 3 Unix에 나타났다.[5] 이 명령어는 일반적인 GNU 유닉스 유사 유틸리티의 네이티브 (컴퓨팅) Win32 포팅 모음인 UnxUtils의 일부로 마이크로소프트 윈도우용 개별 패키지로 제공된다.[6]
2. 1. GNU coreutils와 util-linux
su 명령어는 릴리스 8.18(2012년 8월 12일)부터 GNU coreutils에서 제거되었으며 현재 util-linux 패키지에 포함되어 있다.[7]3. 사용법
명령줄에서 `su`를 실행하면, 일반적으로 전환하려는 대상 사용자의 비밀번호를 묻는다. 비밀번호가 올바르게 입력되면 해당 사용자 계정과 그 계정이 접근할 수 있는 모든 파일 및 디렉터리에 대한 접근 권한을 얻게 된다.[12] 운영체제 설치 직후에는 root 계정의 비밀번호가 설정되어 있지 않을 수 있으므로, `sudo passwd root` 명령으로 비밀번호를 먼저 설정해야 할 수도 있다.
john@localhost:~$ su
Password:
root@localhost:/home/john# exit
logout
john@localhost:~$
`su` 명령은 root 사용자가 아닌 다른 일반 사용자로 전환하는 데에도 사용할 수 있다. 예를 들어, `john` 사용자가 `jane` 사용자로 전환하려면 다음과 같이 입력한다.
john@localhost:~$ su jane
Password:
jane@localhost:/home/john$ exit
logout
john@localhost:~$
명령어 뒤에 하이픈(-)을 붙여 su - 사용자명
형태로 사용하면, 대상 사용자의 로그인 셸을 시작하여 해당 사용자의 사용자 환경(환경 변수, 홈 디렉터리 등)을 그대로 적용받을 수 있다.[12]
john@localhost:~$ su - jane
Password:
jane@localhost:~$
`su`와 관련된 명령으로 `sudo`가 있다. `sudo`는 다른 사용자의 권한으로 특정 명령을 실행하게 해주지만, 어떤 사용자가 어떤 명령을 어떤 다른 사용자로 실행할 수 있는지에 대한 규칙을 설정 파일(일반적으로 /etc/sudoers
)에 정의하여 제한할 수 있다. 이 설정 파일은 보통 `visudo` 명령으로 편집하는 것이 권장된다. `su`는 대상 사용자의 비밀번호를 요구하는 반면, `sudo`는 명령을 실행하는 사용자 자신의 비밀번호를 요구한다. 이 방식은 특정 사용자에게 특정 관리 작업을 위임할 때 대상 계정의 비밀번호를 공유할 필요가 없게 하고, 자리를 비운 사이 터미널을 통해 권한이 남용될 위험을 줄여준다. 일부 리눅스 배포판에서는 보안상의 이유로 `su`를 이용한 root 권한 획득을 제한하고, 관리자 권한이 필요한 작업에는 항상 `sudo` 사용을 권장하기도 한다.
일부 유닉스 계열 운영 체제에서는 'wheel'이라는 특수 그룹을 사용하여, 이 그룹에 속한 사용자만이 `su` 명령으로 root 사용자로 전환할 수 있도록 제한하기도 한다.[13][8] 이는 시스템 보안을 강화하기 위한 조치이지만, 만약 공격자가 `wheel` 그룹에 속한 계정 중 하나를 탈취한다면 여전히 root 권한을 얻을 수 있다는 한계가 있다. 한편, GNU su는 이러한 `wheel` 그룹 기능을 지원하지 않는다. 리처드 스톨만은 `wheel` 그룹이 관리자가 일반 사용자를 억압하는 수단이 될 수 있다고 비판하며, 사용자가 root 비밀번호를 알고 있더라도 `wheel` 그룹에 속하지 않으면 `su`를 사용할 수 없게 만드는 것은 부당하다는 철학적인 이유를 제시했다.[14][9]
4. sudo 명령어와의 비교
관련 명령인 sudo는 다른 사용자로 명령을 실행하지만, 어떤 사용자가 어떤 명령을 어떤 다른 사용자로 수행할 수 있는지에 대하여 제한(일반적으로 `/etc/sudoers`라는 설정 파일에 저장되어 있고 visudo 등을 이용하면 편집할 수 있음)할 수 있다. `su`와는 달리, `sudo`는 인증할 때 다른 사용자의 비밀번호가 아닌 자신의 비밀번호로 인증한다. 이는 특정 호스트에 있는 특정 사용자에게 명령 수행을 위임할 때 암호를 공유하지 않고도 가능하게 하며, 모든 무인 단말기의 위험을 방지하는 데 도움이 된다.[12]
`sudo` 명령 실행 시, 실행자인 사용자가 어떤 사용자의 권한으로 어떤 명령줄을 실행할 수 있는지에 대한 정보는 일반적으로 `/etc/sudoers`에서 설정한다. `su`를 실행할 때에는 전환 대상 권한의 암호가 요구되는 데 반해, `sudo`를 실행할 때에는 자신의 암호가 요구된다. 그 때문에, `sudo`를 이용하여 작업을 하는 사람에게 전환 대상 사용자의 암호를 전달할 필요가 없고, 사용자 암호와 관리자 암호의 양쪽을 관리할 필요가 없으며, 암호가 누설될 위험성도 줄일 수 있다. 일부 리눅스 배포판에서는 `su`를 이용하여 root 권한이 되는 것을 금지하고 있으며, root 권한으로 명령을 실행할 경우에는 항상 `sudo`를 맨 앞에 붙이기도 한다.
일부 유닉스 계열 운영 체제에서는 ''wheel'' 그룹에 속해 있는 사용자들에게만 root 사용자로 `su`할 수 있도록 제한한다.[13][8] 이는 침입자가 해당 그룹에 속한 계정 중 하나를 먼저 장악해야 하므로 보안 문제를 완화하는 데 도움이 될 수 있다. 그러나 GNU `su`는 wheel 그룹을 지원하지 않는데, 이는 철학적인 이유 때문이다.[14] 리처드 스톨만은 해당 그룹이 사용자에게 유출된 root 비밀번호를 사용하지 못하도록 막기 때문에, 기존 관리자가 일반 사용자를 억압하는 수단이 될 수 있다고 주장한다.[9]
5. 보안 고려 사항
명령줄에서 실행될 때, ''su''는 대상 사용자의 비밀번호를 묻고, 인증되면 해당 계정에 대한 접근 권한과 해당 계정이 접근할 수 있는 파일 및 디렉터리에 대한 접근 권한을 부여한다.
john@localhost:~$ su jane
Password:
jane@localhost:/home/john$ exit
logout
john@localhost:~$
하이픈(-)과 함께 ''su -'' 형태로 사용하면, 로그인 셸을 시작하는 데 사용할 수 있다. 이 모드에서는 대상 사용자의 사용자 환경 설정을 그대로 가져와 사용할 수 있다.
john@localhost:~$ su - jane
Password:
jane@localhost:~$
관련된 명령어로 sudo가 있다. ''sudo''는 다른 사용자로 명령을 실행하지만, 어떤 사용자가 어떤 다른 사용자로 어떤 명령을 실행할 수 있는지에 대한 제약 조건을 따른다. 이 제약 조건은 일반적으로 ''/etc/sudoers''라는 설정 파일에 정의되어 있으며, ''visudo'' 명령으로 편집하는 것이 권장된다. ''su''와 달리, ''sudo''는 대상 사용자의 비밀번호 대신 자신의 비밀번호를 사용하여 인증한다. 이는 비밀번호를 공유하지 않고 특정 호스트의 특정 사용자에게 특정 명령 실행 권한을 위임할 수 있게 하며, 사용자가 자리를 비운 사이 터미널을 통해 권한이 남용될 위험을 줄여준다.
일부 리눅스 배포판에서는 보안상의 이유로 ''su''를 이용한 root 권한 획득을 제한하고, 관리자 권한이 필요한 명령을 실행할 때는 항상 ''sudo''를 사용하도록 권장하기도 한다. 이는 관리자 비밀번호 유출 위험을 줄이고, 누가 어떤 명령을 실행했는지 추적하기 용이하게 한다. 시스템 관리자는 악의적인 사용자가 root 권한을 탈취하지 못하도록 root 계정의 비밀번호를 매우 신중하게 관리해야 한다.
일부 유닉스 계열 시스템에서는 'wheel'이라는 사용자 그룹을 구현하여, 이 그룹의 구성원만이 ''su'' 명령을 통해 root 사용자가 될 수 있도록 제한하기도 한다.[8] 이는 시스템 보안을 강화하는 데 도움이 될 수 있지만, 침입자가 먼저 'wheel' 그룹 구성원의 계정을 탈취한다면 여전히 위험은 존재한다. 그러나 GNU 프로젝트의 ''su''는 철학적인 이유로 'wheel' 그룹 기능을 지원하지 않는다. 리처드 스톨만은 이러한 제한이 기존 관리자가 일반 사용자를 억압하는 수단이 될 수 있으며, 사용자가 정당하게 알게 된 root 비밀번호를 사용하는 것마저 막는다고 비판했다.[9]
윈도우 XP 이후 버전의 윈도우 운영체제에도 ''runas''라는 유사한 기능을 하는 명령어가 존재한다.
6. 윈도우의 유사 명령어
윈도우 XP에도 runas라는 유사 명령이 존재한다.
참조
[1]
웹사이트
su(1) - Linux manual page
https://man7.org/lin[...]
2021-04-02
[2]
웹사이트
Unix Programmer's Manual, Seventh Edition, Volume 1
https://s3.amazonaws[...]
1979-01-01
[3]
웹사이트
Unix Programmer's Manual
https://www.bell-lab[...]
1971-11-03
[4]
웹사이트
Unix Programmer's Manual - Table of Contents
https://www.bell-lab[...]
1971-11-03
[5]
간행물
A Research Unix reader: offticles annotated excerpts from the Programmer's Manual, 1971–1986
https://www.cs.dartm[...]
[6]
웹사이트
Native Win32 ports of some GNU utilities
http://unxutils.sour[...]
[7]
웹사이트
NEWS
https://github.com/c[...]
2022-09-17
[8]
서적
UNIX Administration: A Comprehensive Sourcebook for Effective Systems and Network Management
https://archive.org/[...]
CRC Press
[9]
웹사이트
Why GNU su does not support the 'wheel' group
https://ftp.gnu.org/[...]
2022-05-30
[10]
문서
runas
http://www.microsoft[...]
[11]
서적
Unix™ Time-Sharing System: Unix Programmer's Manual: Seventh Edition, Volume 1
http://plan9.bell-la[...]
Bell Telephone Laboratories, Incorporated
2009-11-02
[12]
문서
su -로, su - root와 동일하다
[13]
서적
UNIX Administration: A Comprehensive Sourcebook for Effective Systems and Network Management
https://archive.org/[...]
CRC Press
[14]
웹인용
Why GNU su does not support the wheel group
http://www.gnu.org/s[...]
2013-08-07
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com