“su -s”와“sudo -s”명령의 차이점은 무엇입니까?


23

어떤 두 개의 수퍼 사용자 명령의 차이점은, su -s그리고 sudo -s?

둘 다 수퍼 유저 계정에 액세스 할 수있는 쉘을 제공합니다.

답변:


30

실제로는 둘 다 수퍼 유저가됩니다. 그러나 그들은 약간 다른 방식으로 약간 다른 일을합니다.

먼저 su -로그인 쉘로 전환하지만 로그인 쉘로 전환 sudo -s하지는 않습니다. 실제로, 환경 변수가 스위치를 수 없음을이 종종 수단 root'에 대한이야 sudo -s. 로그인 셸 을 얻지 않거나 로그인 셸 (모든 버전 su아님)을 얻도록 실행할 수 있습니다 sudo -i.

둘째, susu -을 요청하여 새로운 사용자로 전환하여 새로운 사용자로 인증합니다. sudo -ssudo -i(그냥 일반 sudo foo) 당신이있는 거 사전 허가 [참조하는 명령을 실행할 수 있도록 /etc/sudoers] 아마도 당신의 확인을 요청하여, 현재의 ID를.

정말 귀여워하고 싶다면 루트 사용자 ( 부분)가 sudo su -루트 ( su -) 로 로그인하도록 요청하는을 실행할 수도 있습니다 sudo.

루트 사용자가 잠긴 경우 (예 : Ubuntu)를 사용하여 루트로 로그인 할 수 없습니다 su. 이 경우에는 sudo -s또는sudo -i


5
많은 배포판 sudo에서 일반 사용자에게 기본 권한을 부여하지 않는다는 점도 가치가 있습니다. 해당 시스템에서는 su유일한 옵션입니다.
Telemachus

12
su -s

사용자 (이 경우 루트)로 전환하고 지정한 쉘 또는 쉘을 결정하는 몇 가지 다른 방법 중 하나를 시작합니다. 이것은 zsh 또는 다른 쉘을 루트로 정말 빨리 사용하고 싶을 때 유용하며 어떤 이유로 sudo를 사용하지 않습니다.

sudo -s

sudo를 사용하여 쉘을 실행하면 루트 쉘이됩니다. 쉘을 전달할 수도 있습니다.

su -s는 sudo -s 명령보다 훨씬 오래되었습니다. 내 생각에 개발자는 sudo를 사용하도록 쉽게 전환하려고합니다.


9

su는 다른 사용자로 변경하여 셸을 실행하거나 특정 명령을 실행하는 명령입니다. 다른 사용자로 인증해야합니다. 루트로 전환하려면 루트 비밀번호가 필요합니다.

sudo는 다른 명령으로 다른 명령 (선택적으로 쉘)을 실행하는 명령입니다. 자신의 사용자로 인증해야합니다 . 관리자가 sudo (및 사용자가 수행 할 수있는 특정 작업)를 사용할 수있는 권한은 sudoers 파일에서 관리자가 지정합니다.

누군가에게 su에 대한 액세스 권한을 부여하면 (예를 들어, 루트 비밀번호 제공) 다른 명령을 실행하고 쉘을 열고 비밀번호를 변경하고 ssh를 통해 원격으로 로그인하는 등의 작업을 수행 할 수 있습니다. 본질적으로 그들에게 다른 계정에 대한 액세스 권한을 부여하고 있으며 'su'는 그들이 할 수있는 일 중 하나입니다.

sudo는 훨씬 더 세분화됩니다. 사용자 또는 그룹에게 권한을 부여 할 수 있습니다. 특정 기간 (예 : 월요일 ~ 금요일, 오전 9시 ~ 오후 5시) 내에 사용자 또는 그룹이 sudo를 허용 할 수 있습니다. / usr / local / bin / run_backup과 같이 실행할 수있는 특정 명령 목록을 지정하거나 www, backup, staff 등 명령을 실행할 수있는 특정 사용자를 지정할 수 있습니다. ).

유연성 이외에도 sudo는 사용자가 아직 가지고 있지 않은 것에 액세스 할 필요가 없기 때문에 모든 경우에 더 나은 솔루션입니다. 누군가 sudo 액세스 권한을 부여한 경우 sudoers 파일에서 해당 행을 제거하거나 sudoers 그룹에서 제거하여 취소 할 수 있습니다. 계정을 삭제하면 액세스 권한이 사라집니다.

그들에게 루트 암호를 주면, 그들이 불쾌한 짓을하지 않는다고 가정하더라도, 그들은 영원히 그것을 알게 될 것입니다. 관리 작업을 위해 루트 액세스 권한이 필요한 사람이 여러 명인 경우 누군가가 떠날 때마다 모든 루트 비밀번호를 변경하거나 퇴근 후 시스템에 완전히 액세스 할 수 있다고 가정합니다.


두 명령 su와 sudo의 차이점에 대한 좋은 설명.
John aka hot2use

5
  • su루트 사용자 암호를 묻습니다 .
  • sudo는은 당신에게 묻습니다 귀하의 비밀 번호를 (당신은 sudo를 액세스가 그렇게 할 지울 필요).

2
일반적으로 이것은 sudo의 기본 동작이지만 루트 또는 다른 비밀번호를 요청하도록 구성 할 수도 있습니다.
theotherreceive

2

에서 위키 백과 :

su (대체 사용자 또는 사용자 전환의 약자)는 로그 아웃하지 않고 다른 사용자의 셸을 실행하는 데 사용되는 Unix 명령입니다.

sudo 라는 관련 명령 은 다른 사용자로서 명령을 실행하지만 어떤 사용자가 어떤 명령을 다른 사용자 (일반적으로 / etc / sudoers라는 구성 파일에서 visudo 명령으로 가장 잘 편집 할 수 있음)로 실행할 수 있는지에 대한 일련의 제약 조건을 관찰합니다. su와 달리 sudo는 대상 사용자의 암호가 아닌 자신의 암호로 사용자를 인증합니다 (비밀번호를 공유하지 않고 특정 호스트의 특정 사용자에게 특정 명령을 위임 할 수 있으며 무인 터미널의 위험을 완화 할 수 있습니다).


2

완전히 말하지 않은 한 가지는 이것입니다. 자주 사용할 있는 것은 어떤 배포를 사용하고 누가 배포하는지에 따라 다릅니다. 기본적으로 하나 또는 다른 ( su또는 sudo)가 완전히 사용되도록 설정되지 않았을 수 있습니다. 예를 들어, 일부 사람들이 언급했듯이 OS X 및 Ubuntu su는 기본적으로 루트 계정 ( )을 비활성화합니다 . 마찬가지로 데비안은 일반 사용자에게에 대한 기본 권한을 부여하지 않습니다 sudo. (이러한 모든 시스템에서 이러한 기본값을 변경할 수 있지만 시작하기 위해 일종의 관리 권한이있는 경우에만 가능합니다. 서버가 아닌 상황에 대해 이야기하고 있고 SU에 있기 때문에 시스템을 관리한다고 가정합니다. SF보다, 그러나 경우에 따라서.)

마지막으로 sudo보다 세분화 된 방식 man sudoers으로 사용하려면 / etc / sudoers 파일 을 편집하는 방법을 찾아야 합니다. 그러나 직접 편집 해서는 안됩니다 . 프로그램 visudo를 사용하십시오 . 최소한 최소한 제정신이 아니면 편집 내용을 저장할 수 없습니다. 간단한 오류로부터 시스템을 보호 할 수있는 훌륭한 보호 수단입니다.


1

Mac OS X와 ​​같은 수퍼 유저 계정이 비활성화 된 시스템에서는 su작동하지 않습니다. sudo -s의지.

또한 su -s적어도 내 컴퓨터 에는 사용할 수 없는 것으로 보입니다 .


그 반대의 경우가 종종 있습니다. 즉, 많은 오래된 유닉스 계열 배포판에서 일반 사용자에게는 기본 권한 sudo이 없습니다 (항상 설치되지는 않음).
Telemachus

1

이 소개 가 도움 될 수 있습니다. su의 약자이며 su root귀하는 다른 사용자로서 귀하의 권리를 무기한으로 유지합니다. 일정 기간 동안 많은 루트 액세스 명령을 수행하는 경우 더 위험하지만 더 편리합니다.


1

su는 기본적으로 다른 사용자 권한 (로그인)으로 새 로그인 쉘을 생성합니다. sudo는 사용자가 지정한 사용자를 사용하여 명령을 일시적으로 실행할 수있게합니다. FreeBDS와 같은 일부 UNIX에는 '-s'옵션이 없습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.