"이게 무슨 뜻인지 말해 줄 사람 있나요 sudo
?" 저는 Linux를 배우고 있습니다. 구글링했는데 누가 좀 알려줄 수 있어?윈도우비교해보시면 조금이나마 도움이 될 것 같습니다. 나는 su
이것이 사용자 전환을 의미한다는 것을 알고 있습니다. sudo
다른 사용자인가요? 그런데 어떻게, 왜 그런가요? 왜 자신의 사용자 이름으로 자신에게 권한을 부여할 수 없나요?
답변1
기본적으로 대부분의 Unices에서는 "관리자" 계정 루트만 주의해서 사용할 수 있습니다. 일반 Unix 시스템에는 두 가지 수준의 관리자 또는 "수퍼유저" 권한만 있습니다. 즉, 모든 권한을 갖거나모든 것, 아니면 그렇지 않습니다.
"완전한 제어"에는 대부분의 권한 확인을 우회하고 간단한 잘못된 입력을 통해 시스템을 완전히 망가뜨리는 것이 포함됩니다. 일반 사용자는 자신의 파일만 삭제할 수 있습니다.
이전 su
유틸리티는 루트 비밀번호와 함께 사용되어 루트 신원을 가정하지만, 올바른 사용자 그룹에 속하고 알고 있는 경우 다른 사용자의 신원을 가정하거나 개별 명령을 실행하는 데에도 사용할 수 있습니다.그들의비밀번호.
su
일반적으로 사용되는 것은통과루트 사용자(일부 Unix 시스템의 경우)는 특정 사용자의 ID로 실행되어야 하는 데몬(서비스 프로세스)을 시작하여 해당 사용자가 액세스할 수 없는 영역(일반적으로 웹 서버, SSH 서버 등)에 액세스하지 못하도록 합니다. 이는 시스템 부팅 시 시작 스크립트에서 수행할 수 있습니다.
su
대화식으로(명령줄에서) 거의 사용되지 않습니다.
이 sudo
유틸리티를 사용하면 사용자가 다른 사용자 ID를 사용하여 명령을 실행할 수 있으므로 추가 구성이 필요합니다.그들만의비밀번호(예: 루트 비밀번호를 공유할 필요가 없음을 의미), 누가 어떤 작업을 수행할 수 있는지 세부적으로 제어할 수 있습니다. 예를 들어 단일 사용자 또는 전체 사용자 그룹에게 특정 디스크를 마운트할 수 있는 기능을 제공할 수 있지만 마운트 해제하거나 다른 디스크를 마운트하거나 특정 명령을 사용하여 소프트웨어를 설치할 수는 없습니다. 마찬가지로 이 유틸리티를 사용하면 sudo
다른 사용자(단지 루트가 아님)의 신원을 가정하여 대화형 세션을 수행하거나 루트 권한을 가진 다른 사람이 구성을 이러한 방식으로 설정한 경우 개별 명령을 실행할 수 있습니다.
일반적으로 다음을 사용하여 단일 명령 sudo
(따라서 "수퍼유저 실행"이라는 이름)을 실행합니다.
$ sudo apt-get install vim
또는
$ sudo shutdown -ph now
실행한 명령이 기록되기 때문에 대화형 루트 셸을 사용하는 것보다 이 방법을 사용하는 sudo
것이 더 좋습니다 . sudo -s
나중에 로그 파일의 작업을 추적하여 디버깅 또는 감사 목적으로 작업을 수행한 장소(및 누가)를 확인할 수 있습니다.
오랜 시간 동안 대화형 루트 프롬프트에 입력하는 경우 현재 수행 중인 작업과 실제로 루트 권한이 필요한지 여부를 재고해야 합니다.
예를 들어, 유일한 시간나대화형 루트 프롬프트는 새로 설치된 컴퓨터에 일반 사용자를 추가할 때나 일반 사용자로 로그인할 수 없게 만드는 심각한 문제에 직면했을 때 나타납니다.
OpenBSD(버전 5.8 기준)에는 기본 시스템 설치를 doas
대체하는 유틸리티가 있습니다. OpenBSD는 OpenBSD 개발자가 설정한 목표를 달성하기에는 너무 복잡하다는 sudo
사실이 발견되었을 때 개발되었습니다. sudo
사용법은 sudo
,하지만 구성하기가 더 쉽습니다..
답변2
sudo
당신을 허용루트 슈퍼유저로 프로그램을 실행하세요.. 대신 사용하세요 su
.
- 루트 비밀번호를 입력하라는 메시지가 표시되므로 알 필요가 없습니다.
- 어떤 명령이 루트로 실행되고 어떤 명령이 사용자로 실행되는지 정확히 알 수 있습니다. 을 사용하면
su
쉘이 생기고 일부 (위험한) 프로그램이 의도치 않게 실행될 수 있습니다. - 모든 작업은
auth.log
파일에 기록됩니다. 셸에서의 작업(예:su
일반적으로 기록되지 않음.
왜 자신의 사용자 이름으로 자신에게 권한을 부여할 수 없나요?
보안상의 이유로,루트 계정은 일상적인 목적으로 거의 사용되지 않습니다.. 일반적으로 관리자를 포함한 모든 사용자는 "일반" 사용자를 사용하고 필요할 때만 루트로 명령을 실행합니다. 이는 (1) 다른 사용자의 파일에 대한 무단 액세스, (2) 문서화되지 않은 루트 작업 및 (3) "위험한" 프로그램 실행으로 인해 발생하는 문제를 방지합니다.
비유가 있습니다위키피디아다음을 고려할 수 있습니다.
- 루트 계정을 사용하는 것은 일반 사용자가 관리자로서 Clark Kent와 비슷합니다. 클라크 켄트는 사람을 구하기 위해 필요할 때만 슈퍼맨이 됩니다. 그런 다음 그는 "변장"을 재개했습니다. 루트 액세스도 동일한 방식으로 사용해야 합니다. 클라크 켄트의 변장은 여전히 그의 초능력을 사용할 수 있기 때문에 그를 제한하지 않습니다. 이는 sudo 프로그램을 사용하는 것과 유사합니다.
답변3
이전 버전의 유닉스에서는 윈도우 시스템 없이 터미널을 통해 로그인하는 것이 가장 흔한 상황이었다. su 명령(대체 사용자)은 로그아웃하지 않고 현재 권한을 변경하는 편리한 방법입니다. 윈도우 시스템에서 로그오프하지 않으면 실행 중인 모든 항목이 중지된다는 것을 기억하세요.
su를 사용하여 루트가 되는 데에는 몇 가지 성가신 문제가 있습니다. 사람들은 때때로 세션을 종료하는 것을 잊어버리고 실수로 루트로 명령을 실행합니다. 관리 암호를 변경하는 것은 필요한 모든 사람에게 배포해야 하기 때문에 복잡합니다. 대부분의 시스템은 모든 명령을 기록하지 않으므로 누가 루트로 무엇을 했는지 알기가 어렵습니다. 등.
sudo는 사람들이 루트로 명령을 실행할 수 있도록 하여 이러한 문제를 해결합니다. 일회성 명령에 더 편리하면서도 더 나은 감사 및 제어 기능을 제공합니다.
답변4
sudo를 사용하면 구성 가능한 사전 정의된 규칙 세트에 따라 다른 사용자(루트 포함)로 프로그램을 실행할 수 있습니다.
Unix/POSIX/Linux 시스템에서 루트는 God입니다. 루트 사용자도 단일 사용자입니다.
많은 환경에는 전체 루트 액세스가 필요한 여러 관리자가 있을 수 있지만 일반적으로 루트용으로 예약된 일부 특정 기능을 수행하기 위해 액세스가 필요한 사람이 있을 수도 있습니다. 관리자는 네트워크 장치와 라우팅을 구성해야 하고, 보안 관리자는 인증서를 관리하고 방화벽을 구성해야 합니다.
사람이 실행할 수 있는 명령을 제한함으로써 sudo는 최소 권한 원칙을 적용합니다. 즉, 사용자는 필요하지 않은 액세스 권한을 얻을 수 없습니다. 그러나 이는 사용자가 실행할 수 있는 바이너리를 제한하는 것만이 아닙니다. 많은 관리 작업은 명령줄에서 수행되며 해당 명령에 전달된 인수는 sudo를 통해 제한될 수도 있습니다(또는 sudo가 제공하는 액세스 권한이 있는 쉘 스크립트에 캡처됨). 따라서 이러한 특수 데이터/장치 관리자는 제한될 수 있습니다. .
왜 자신의 사용자 이름으로 자신에게 권한을 부여할 수 없나요?
1) 이것은 좋지 않을 것입니다.
나는 종종 시스템의 루트 계정에 액세스할 수 있지만 로그인을 위해 명명된 계정을 설정하고 명시적으로 초능력을 호출하고 싶을 때는 "su" 또는 "sudo"만 사용할 수 있습니다. 어리석은 실수를 방지하는 것 외에도 내 명명된 계정은 오작동하는 구성 요소에 대한 샌드박스도 제공합니다.
5명에게 권한 있는 액세스가 필요한 경우 각 사람에게 권한 있는 액세스를 부여해야 합니까? 20대는 어떻습니까? 200은 어떻습니까?
2) 어려울 것이다
- 이것은 Unix 보안 모델이 아닙니다. 물론 일부 실행 파일에 대한 권한을 변경할 수 있습니다(매개변수에 대한 이전 참고 사항 참조). 그러나 보안에 관심이 있는 경우 정기적으로 패치를 적용할 수 있습니다. 이로 인해 사용자 정의 권한 모델이 손상될 수 있습니다(sudo OTOH는 명령 자체와 독립적으로 권한을 유지합니다).