답변:
실제로는 둘 다 수퍼 유저가됩니다. 그러나 그들은 약간 다른 방식으로 약간 다른 일을합니다.
먼저 su -
로그인 쉘로 전환하지만 로그인 쉘로 전환 sudo -s
하지는 않습니다. 실제로, 환경 변수가 스위치를 수 없음을이 종종 수단 root
'에 대한이야 sudo -s
. 로그인 셸 을 얻지 않거나 로그인 셸 (모든 버전 su
이 아님)을 얻도록 실행할 수 있습니다 sudo -i
.
둘째, su
및 su -
을 요청하여 새로운 사용자로 전환하여 새로운 사용자로 인증합니다. sudo -s
및 sudo -i
(그냥 일반 sudo foo
) 당신이있는 거 사전 허가 [참조하는 명령을 실행할 수 있도록 /etc/sudoers
] 아마도 당신의 확인을 요청하여, 현재의 ID를.
정말 귀여워하고 싶다면 루트 사용자 ( 부분)가 sudo su -
루트 ( su -
) 로 로그인하도록 요청하는을 실행할 수도 있습니다 sudo
.
루트 사용자가 잠긴 경우 (예 : Ubuntu)를 사용하여 루트로 로그인 할 수 없습니다 su
. 이 경우에는 sudo -s
또는sudo -i
su는 다른 사용자로 변경하여 셸을 실행하거나 특정 명령을 실행하는 명령입니다. 다른 사용자로 인증해야합니다. 루트로 전환하려면 루트 비밀번호가 필요합니다.
sudo는 다른 명령으로 다른 명령 (선택적으로 쉘)을 실행하는 명령입니다. 자신의 사용자로 인증해야합니다 . 관리자가 sudo (및 사용자가 수행 할 수있는 특정 작업)를 사용할 수있는 권한은 sudoers 파일에서 관리자가 지정합니다.
누군가에게 su에 대한 액세스 권한을 부여하면 (예를 들어, 루트 비밀번호 제공) 다른 명령을 실행하고 쉘을 열고 비밀번호를 변경하고 ssh를 통해 원격으로 로그인하는 등의 작업을 수행 할 수 있습니다. 본질적으로 그들에게 다른 계정에 대한 액세스 권한을 부여하고 있으며 'su'는 그들이 할 수있는 일 중 하나입니다.
sudo는 훨씬 더 세분화됩니다. 사용자 또는 그룹에게 권한을 부여 할 수 있습니다. 특정 기간 (예 : 월요일 ~ 금요일, 오전 9시 ~ 오후 5시) 내에 사용자 또는 그룹이 sudo를 허용 할 수 있습니다. / usr / local / bin / run_backup과 같이 실행할 수있는 특정 명령 목록을 지정하거나 www, backup, staff 등 명령을 실행할 수있는 특정 사용자를 지정할 수 있습니다. ).
유연성 이외에도 sudo는 사용자가 아직 가지고 있지 않은 것에 액세스 할 필요가 없기 때문에 모든 경우에 더 나은 솔루션입니다. 누군가 sudo 액세스 권한을 부여한 경우 sudoers 파일에서 해당 행을 제거하거나 sudoers 그룹에서 제거하여 취소 할 수 있습니다. 계정을 삭제하면 액세스 권한이 사라집니다.
그들에게 루트 암호를 주면, 그들이 불쾌한 짓을하지 않는다고 가정하더라도, 그들은 영원히 그것을 알게 될 것입니다. 관리 작업을 위해 루트 액세스 권한이 필요한 사람이 여러 명인 경우 누군가가 떠날 때마다 모든 루트 비밀번호를 변경하거나 퇴근 후 시스템에 완전히 액세스 할 수 있다고 가정합니다.
에서 위키 백과 :
su (대체 사용자 또는 사용자 전환의 약자)는 로그 아웃하지 않고 다른 사용자의 셸을 실행하는 데 사용되는 Unix 명령입니다.
sudo 라는 관련 명령 은 다른 사용자로서 명령을 실행하지만 어떤 사용자가 어떤 명령을 다른 사용자 (일반적으로 / etc / sudoers라는 구성 파일에서 visudo 명령으로 가장 잘 편집 할 수 있음)로 실행할 수 있는지에 대한 일련의 제약 조건을 관찰합니다. su와 달리 sudo는 대상 사용자의 암호가 아닌 자신의 암호로 사용자를 인증합니다 (비밀번호를 공유하지 않고 특정 호스트의 특정 사용자에게 특정 명령을 위임 할 수 있으며 무인 터미널의 위험을 완화 할 수 있습니다).
완전히 말하지 않은 한 가지는 이것입니다. 자주 사용할 수 있는 것은 어떤 배포를 사용하고 누가 배포하는지에 따라 다릅니다. 기본적으로 하나 또는 다른 ( su
또는 sudo
)가 완전히 사용되도록 설정되지 않았을 수 있습니다. 예를 들어, 일부 사람들이 언급했듯이 OS X 및 Ubuntu su
는 기본적으로 루트 계정 ( )을 비활성화합니다 . 마찬가지로 데비안은 일반 사용자에게에 대한 기본 권한을 부여하지 않습니다 sudo
. (이러한 모든 시스템에서 이러한 기본값을 변경할 수 있지만 시작하기 위해 일종의 관리 권한이있는 경우에만 가능합니다. 서버가 아닌 상황에 대해 이야기하고 있고 SU에 있기 때문에 시스템을 관리한다고 가정합니다. SF보다, 그러나 경우에 따라서.)
마지막으로 sudo
보다 세분화 된 방식 man sudoers
으로 사용하려면 / etc / sudoers 파일 을 편집하는 방법을 찾아야 합니다. 그러나 직접 편집 해서는 안됩니다 . 프로그램 visudo를 사용하십시오 . 최소한 최소한 제정신이 아니면 편집 내용을 저장할 수 없습니다. 간단한 오류로부터 시스템을 보호 할 수있는 훌륭한 보호 수단입니다.
Mac OS X와 같은 수퍼 유저 계정이 비활성화 된 시스템에서는 su
작동하지 않습니다. sudo -s
의지.
또한 su -s
적어도 내 컴퓨터 에는 사용할 수 없는 것으로 보입니다 .
sudo
이 없습니다 (항상 설치되지는 않음).
su는 기본적으로 다른 사용자 권한 (로그인)으로 새 로그인 쉘을 생성합니다. sudo는 사용자가 지정한 사용자를 사용하여 명령을 일시적으로 실행할 수있게합니다. FreeBDS와 같은 일부 UNIX에는 '-s'옵션이 없습니다.
sudo
에서 일반 사용자에게 기본 권한을 부여하지 않는다는 점도 가치가 있습니다. 해당 시스템에서는su
유일한 옵션입니다.