728x90

리눅스 su 와 su - 의 차이

su는 substitute user 의 약자이다.


특정유저로 접속하면 로긴 스크립트(.bashrc 와 .bash_profile, 그밖의 환경변수 설정들)들을 읽어서 그 유저의 환경변수를 세팅한다.

보안을 위해서는 root 계정으로 로그인하지 못하도록 설정해 두는게 좋다.

설정방법은 SSH 보안설정 방법 http://link2me.tistory.com/491 게시물을 참조하면 된다.


유닉스/리눅스는 윈도우와 달리 root 권한으로 잘못 명령을 내려 rm -rf * 를 하면 모든 데이터가 다 달라가고 복구가 불가능할 수 있다.


su - 하면 root 유저의 홈 디렉토리로 이동하고 root 유저의 환경변수를 완전히 읽어서 세팅해준다.

su - 는 사용자만 바꾸는것이 아니고 새로 로그인 하는 효과를 나타낸다.


하지만 su 를 하면 root 유저의 홈 디렉토리에 있는 /root/.bash_profile 과 /root/.bashrc 의 환경변수를 읽어들이지 않고, 현재 로그인된 유저의 환경설정 변수를 그대로 사용한다.


사용자를 추가해서 환경변수 파일을 한번 살펴보자.


앞에 . 이 붙어있는 것은 숨김파일을 의미한다.

따라서 그냥 아래 처럼 리스트를 조회하면 아무런 것이 나오지 않는다.



사용자 추가를 한 정보는 /etc/passwd 에서 확인할 수 있다.

파일 내용 확인은 # cat /etc/passwd 로 확인할 수 있는데, 여기서는 보안상

# tail -1 /etc/passwd 를 사용하여 확인해 본다.



su - jsk005

su jsk005

를 한 결과를 그림으로 살펴보자.


pwd (현재 디렉토리 경로)가 su 를 한 경우에는 /root 로 되어 있고, su - 를 한 경우에는 유저의 홈디렉토리로 변경된 것을 알 수 있다.

다른 유저로 변경하면서 그 사용자의 환경변수를 읽어들여서 로그인하는 것처럼 하고 싶다면 su - userid 을 해줘야 한다.



su - 를 하면

su - root 를 하는 것과 같은 의미이다.
따라서 root 유저의 환경변수를 온전히 사용하고 싶다면 su - 를 사용해야 한다.

728x90
블로그 이미지

Link2Me

,