ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Linux] sudo, su의 차이점
    서버 2016. 12. 19. 20:46

    차이점

    sudo: 현재 계정에서 다른 계정의 권한만 빌림

    su: 다른 계정으로 전환

    su -: 다른계정으로 전환 + 그 계정의 환경변수 적용

    상세내용

    sudo는 root가 아닌 사용자가 root에 준하는 능력으로 sudo 다음에 나오는 명령을 실행하게 하는 명령어입니다.  su는 root 패스워드가 필요하지만 sudoer에서 사용을 허락한 사용자는 모두 패스워드와 관계없이 쓸 수 있습니다. sudo는 슈퍼유저, 관리자 권한을 가지지만 근본적으로는 해당 사용자가 내리는 명령입니다.  sudo su는 일시적으로 그 명령은 root가 내리는 명령입니다. 예를 들어 sudo로 작업하면서 디스크에 쓰기를 해야하면 소유자가 지금 사용자로 나옵니다만, sudo su로 작업하면 소유자가 root가 됩니다. sudo -s는 sudo 만으로 su 명령어와 같은 효과가 나는 명령입니다. su는 root 암호를 알아야만 쓸 수 있지만, sudo -s는 sudoer에서 허가된 사용자라면 본인 암호를 넣고 쓸 수 있는 su와 동일한 명령입니다. 간단히 말하면 sudo -s 를 하고 자기 암호를 넣으면 root로 로그인한 쉘로 전환됩니다. sudo로 가능한 명령어를 지정하는 곳은 sudoer파일에서 설정할 수 있습니다.

    sudo su와 sudo -s 차이점 

    sudo su 와 sudo -s 둘 다 root shell 을 사용할 수 있는 명령어이지만, 전자가 계정을 독립적으로 root 로 전환해 버리는 데 반해 (즉 root shell 을 직접 실행) 후자는 현 계정의 모든 환경 변수들을 root 계정 쪽으로 넘긴다는 차이가 있습니다. 그래서 sudo su를 하면 홈 디렉토리가 /root 가 되지만 (이와 동시에 현재 디렉토리 역시 /root 로 바뀝니다), sudo -s를 하게 되면 홈 디렉토리가 기존 그대로 유지되며, .bashrc 역시 전자가 $user의 ~/.bashrc 를 읽는데 반해 후자는 /root/.bashrc 를 읽습니다. 이 외에도 몇 가지 차이가 생깁니다.

    예시

    sudo

    기본 값은 슈퍼유저로 슈퍼유저의 보안권한으로 프로그램을 구동할 수 있게 해주는 명령어

    $ sudo mkdir test

    su

    로그아웃을 하지 않고 다른 사용자의 계정으로 전환.

    [root@localhost ~]# pwd
    /root
    [root@localhost ~]# su test
    [test@localhost ~]$ pwd
    /root			# 사용자는 변경되었지만 로그인된 사용자 환경으로 쉘을 실행하지 않아 그대로 /root를 출력
    [test@localhost ~]$ exit
    [root@localhost ~]#

    su -

    다른 사용자의 계정으로 전환하고 해당 사용자 환경으로 쉘을 실행

    [root@localhost ~]# pwd
    /root
    [root@localhost ~]# su - test
    [test@localhost ~]$ pwd
    /home/test		# 사용자 변경과 함께 로그인된 사용자 환경으로 쉘을 실행하여 /home/test를 출력
    [test@localhost ~]$ exit
    [root@localhost ~]#


    댓글