본문 바로가기

IT/리눅스

리눅스 su 명령어 - 다른 계정으로 변신 (1)

리눅스 su 명령어 - 다른 계정으로 변신

(1)

 

 

여러분 안녕하세요. 지토우에요.

오늘은 su 명령어에 대해 배워봅시다.

어렵지 않으니 부담갖지 마시고 천천히 읽어주세요 !

 

 

1. su 에 대하여

 

대부분의 시스템관리자들은 root 계정 이외에도 일반 사용자 계정을 가지고 있고, 혹은 필요할 때가 있습니다.

따라서 최초 접속 후 다른 계저으로 변신하는 방법이 필요한데요.

 

su는 "SUbstitute" 의 약어입니다.

substitute 는 1. (다른 누구・무엇을) 대신하는 사람, 대리자; 대용물, 대체물   2. 교체 선수 의 의미를 가집니다.

리눅스 서버로 로그인 해 사용하다가 다른 계쩡 권한이 필요한 경우 su 명령어를 사용해 리눅스 쉘상태에서 바로 바꿀 수 있습니다.

 

사실 리눅스의 기본 설정에서는 root 사용자로 바로 원격로그인 되지 않습니다.

그렇기 때문에 일반 계정으로 로그인 한 후에 su 명령어를 이용해 root 권한을 가지려 할 때 사용하는 것이죠.

하지만 su 를 사용하는 경우에 있어서 변신하려는 계정의 패스워드를 알고 있어야합니다.

 

또 , su 사용시 다음과 같은 옵션들이 있는데요.

 

-c : 쉘을 실행하지 않고 주어진 명령만을 수행함

-, -l : 지정한 사용자의 환경변수를 적용해 로그인

-s : 지정된 쉘로 로그인

 

 

 

일단 이정도로 배우고, 실무에 맞는 예들을 배워보죠 !

 

 

2. 일반계정 → root (환경변수 미적용)

 

 일반적으로 시스템관리자는 root 계정으로 서버작업을 하고자 할 때 원격에서 바로 root 사용자로 로그인 하지 않습니다만,

특별한 설정이 있다면 원격에서 바로 root로 로그인 할 수도 있습니다.

그렇지만 서버보안을 위해서 일반적으로 직접적인 root 로그인을 허용하진 않습니다.

 

시스템 관리자가 가장 많이 사용하는 경우로서 일반계정(2016320)에서 root 계정으로 변환하는 예를 볼까요?

다음은 2016320 이라는 계쩡으로 로그인 한 상태입니다.

 

 

 

아무런 옵션 없이 su 라고만 입력하면 root로 로그인을 시도합니다.

그리고 root의 패스워드를 입력하면 root 권한을 얻을 수 있죠.

 

 

이제는 root 권한을 획득 한 후 확인한 화면입니다.

여기서 중요한 것은 - 또는 -l 옵션을 사용하지 않았으므로 root의 쉘환경변수는 가져오지 못한다는 점입니다.

결론적으로 권한은 root 이지만 시스템 사용환경을 결정하는 쉘환경은 모두 이전 사용자인 2016320 의 환경이라는 것이지요.

이를 확인하기 위해 env 로 확인해봅시다.

 

 

위의 env 결과행에서 USER 항목값은 여전히 2016320 이지요.

즉, su를 이용해 2016320 에서 root 권한을 획득했지만 쉘사용환경은 여전히 2016320 이라는 것이지요.

 

3. 일반 계정 → root (환경변수 적용)

 

앞의 예와는 동알하지만 root로 변환하며 쉘환경까지 모두 적용해 변환하는 예를 배워봅시다.

현재 계정은 2016320 임을 확인하고 있고, su - 또는 su - root 라고 하면 root로 변환하며 root의 쉘환경까지 모두 적용됩니다.

그 뒤 root로 변환된것을 id로 확인했습니다.

그리고 root의 환경 변수까지 모두 적용되었음을 확인하기 위해 env 를 실행했고요.

 

 

 

 

위의 env 값에서 USER 항목이 root 이지요? (노란색으로 밑줄 친 부분!)

즉, su 사용시 - 를 함께 사용하였기 때문에 2016320 에서 root 권한을 획득하면서

root의 쉘환경변수들까지 모두 가져와 적용된 것이지요.

 

 

제 글이 도움이 되셨다면

빈 하트 ♡ 를 채워주세요 ♥

오늘도 행복하세요 =D