- 실행 파일을 실행할 때 운영 체제에서 권한을 거부하는 경우가 있습니다. 예를 들어 를
make install
실행하려면 시스템 경로가 있는 접두사가 필요sudo
하지만 비시스템 경로가 있는 접두사는 그렇지 않습니다sudo
. 운영 체제는 프로그램이 어떤 작업을 수행하기 전에도 실행 파일을 실행하려면 사용자가 가진 것보다 더 많은 권한이 필요하다는 것을 어떻게 결정합니까? - 때때로 프로그램 실행은 권한이 거부되지 않지만 사용되는 경우 . 예를 들어 특정 시스템 디렉토리에서
sudo
실행될 때 특정 디렉토리는 이를 통해서만 액세스할 수 있습니다. 왜 운영 체제는 프로그램이 실행되기 전에 그러한 프로그램을 실행할 수 있는 권한을 거부하지 않거나 더 많은 권한이 선호된다는 친숙한 알림을 거부하지 않습니까?du
sudo
sudo
효과가 있으면su
효과가 있고,su
효과가 있으면sudo
효과가 있다는 뜻인가요 ? 또는 를 사용하면 사용자는 ?su
보다 더 많은 작업을 수행할 수 있습니다 .sudo
운영 체제는sudo
작업 시기와su
작업 시기를 어떻게 결정합니까?
답변1
설명하는 목적에 따라 운영 체제는 처음에 sudo가 필요한지 여부를 결정하지 않습니다.달리기프로그램. 대신 /usr/bin
운영 체제는 프로그램 실행이 시작된 후 파일 액세스를 차단하고 현재 사용자에게 허용되지 않는 작업(예: 새 명령을 설치하기 위해 파일에 쓰기)을 수행하려고 시도합니다 . 이 경우 취해지는 조치는 프로그램에 따라 다릅니다. make
실행은 중지되지만 du
메시지를 인쇄한 후 다음 파일/디렉토리로 계속 진행됩니다.
su
명령은 sudo
루트 권한으로 프로그램을 실행하는 두 가지 방법입니다. 사용하는 옵션에 따라 새 프로그램을 시작할 때의 환경 내용 등 세세한 부분이 다를 수 있습니다. 운영 체제는 이들 중 하나가 언제 작동할 수 있는지 결정할 필요가 없습니다.
답변2
- 예를 들어, 쓰기 액세스를 거부하는 파일 시스템 권한으로 인해 "권한 거부됨" 메시지가 나타나는 경우가 있습니다. 실행 파일/도구는 단순히 파일 시스템이 수행하려는 작업을 수행할 수 있는 충분한 권한을 부여하는지 확인하고, 파일 시스템이 이를 거부하면 오류를 발생시킵니다. 다른 경우에는 도구 자체가 사용자 ID를 확인하여 계속 사용하도록 허용합니다.
- 프로그램을 실행하면
sudo
다른 사용자의 이름으로 실행됩니다. 해당 사용자가 귀하의 사용자보다 "더 많은 작업을 수행할 수 있고" 구성을 통해sudo
다른 사용자를 대신하여 해당 작업을 수행할 수 있다면sudo
더 많은 작업을 수행할 수 있습니다. 그러나 이것은 필수는 아닙니다.sudo
명령줄 시작 부분에 이를 추가 하면 실제로sudo
는 as 가 되어root
보통 사람보다 훨씬 더 많은 일을 할 수 있습니다. - 절대적으로하지. 사용하려면
sudo
사용자 비밀번호를 제공해야 하며, 그런 다음 대상 사용자를 대신하여 일부 작업을 수행할 수 있습니다. 사용하려면su
다음이 필요합니다.대상 사용자의 비밀번호당신이 그것을 가지고 있다면, 당신은 시스템에 관한 한 대상 사용자가 되고, 사용자가 할 수 있는 모든 것을 할 수 있습니다.
당신은 또한 볼 수 있습니다
답변3
su
그리고 sudo
그것은 특권적인 프로그램입니다. su
실제 유효한 사용자 및 그룹 ID(인증 성공 후)를 su
액세스하려는 사용자의 ID로 변경합니다. su
그래서 , login
. 이는 su
루트뿐만 아니라 모든 사용자로 변경하는 데 사용될 수 있습니다. sudo
또한 실제 유효 사용자 및 그룹 ID를 변경합니다. 지금까지 su
, 및 sudo
는 유사하지만(관련은 없음) 그 이상으로는 매우 다릅니다.
을 사용하려면 su
대상의 비밀번호를 알아야 하며, 일단 인증되면 해당 사용자로서 원하는 모든 작업을 수행할 수 있습니다. su
설정을 통해 SU_WHEEL_ONLY
사용을 제한할 수 있습니다 /etc/login.defs
. 설정하면 이 그룹의 사용자만 wheel
사용할 수 있으며 su
그렇지 않으면 제한이 없습니다. 그 외에는 su
전부 아니면 전무입니다.
sudo
이것과는 완전히 다릅니다. sudoer(호출 사용자 )가 수행할 수 있는 작업을 제한하기 sudo
위해 매우 복잡한 정책을 정의할 수 있습니다 . 예를 들어, 특정 사용자는 특정 권한이 있는 특정 프로그램만 실행할 수 있고 다른 사용자는 다른 권한이 있는 다른 프로그램을 실행할 수 있는 정책을 정의할 수 있습니다./etc/sudoers
sudo
구별되는 기능 중 하나 sudo
는 사용자가 다음을 통해 스스로 인증하도록 구성할 수 있다는 것입니다.자신의 비밀번호(타겟이 아닌). 따라서 sudo
권한이 있는 사용자는 슈퍼유저 비밀번호를 다룰 필요 없이 정의된 권한 있는 작업만 수행할 수 있고 일정 수준의 책임도 부여받을 수 있기 때문에 관리자들 사이에서 매우 인기가 높습니다.
답변4
아직 아무도 ✓ 평가하지 않았기 때문에 제가 생각할 수 있는 모든 것을 포함하는 답변을 정리했습니다.
1 실행 파일을 실행할 때 운영 체제에서 권한을 거부하는 경우가 있습니다. 예를 들어, 시스템 경로 접두어를 사용하여 make install을 실행하려면 sudo가 필요하지만 비시스템 경로 접두어를 사용하여 make install을 실행하면 sudo가 필요하지 않습니다. 운영 체제는 프로그램이 어떤 작업을 수행하기 전에도 실행 파일을 실행하려면 사용자가 가진 것보다 더 많은 권한이 필요하다는 것을 어떻게 결정합니까?
아니요, 실행 파일이 시작되면 아직 완료되지 않은 것입니다. 실행 파일이 어떤 작업을 시도하면 완료됩니다.
운영 체제는 파일 시스템 권한 및 기능을 확인합니다(이것은 파일 시스템 권한에 포함되지 않으며 양호한 수준 낮추기, mknode, 일부 낮은 수준 네트워크 항목, 다른 프로세스 종료, 다시 시작, 시간 설정 등을 포함합니다). . 권한이 없으면 이 작업을 수행할 수 없습니다. 루트에는 CAP_DAC_OVERRIDE(파일 권한 무시)를 포함한 모든 기능 세트가 있습니다.
2 프로그램을 실행할 때 권한이 거부되지 않는 경우도 있지만 sudo로 실행하면 더 많은 작업을 수행할 수 있습니다. 예를 들어, 시스템 디렉터리에서 du를 실행하는 경우 해당 디렉터리는 sudo를 통해서만 액세스할 수 있습니다. 왜 운영 체제는 프로그램이 실행되기 전에 그러한 프로그램을 실행할 수 있는 권한을 거부하지 않거나 더 많은 권한이 선호된다는 친숙한 알림을 거부하지 않습니까?
운영 체제는 프로그램이 무엇을 할지 알 수 없습니다. 따라서 시작하기 전에 권한을 확인하고 무엇을 할지 결정하는 것은 프로그램의 몫입니다. 하지만 그럴 필요는 없습니다.
참고: Android에는 애플리케이션이 사용할 수 있는 권한을 선언하는 매니페스트가 있습니다. 운영 체제는 선언되지 않은 권한을 사용하려고 시도하는 모든 응용 프로그램을 종료하며 운영 체제는 권한이 존중될 수 있다고 항상 보장하지는 않습니다. 예를 들어 네트워크 액세스가 불가능할 수 있습니다.
2 sudo가 작동할 때마다 su도 작동한다는 것이 사실입니까? su가 작동할 때마다 sudo도 작동합니까? 아니면 su를 사용하면 사용자가 sudo를 사용하는 것보다 더 많은 일을 할 수 있습니까? 운영 체제는 sudo가 작동하는 시기와 su가 필요한 시기를 어떻게 결정합니까?
sudo
그리고 su
거의 같은 일을 합니다. 일부 차이점은 환경 변수를 처리하고 기타 보안 문제를 방지하는 데 있습니다. 그러나 이들은 모두 다른 사용자가 될 수 있는 도구이며 모두 기본 사용자 루트를 가지고 있습니다.
su
변경하려는 사용자/그룹의 비밀번호를 입력하라는 원래 도구입니다.
sudo
최신 버전에서는 기본적으로 자신의 비밀번호를 입력해야 하지만 전환하려는 사용자/그룹의 비밀번호를 허용하거나 비밀번호가 전혀 필요하지 않도록 구성할 수 있습니다. 또한 사용할 명령, 작업 대상, 해당 컴퓨터의 사용자가 프로그램에서 인증되는 방법 등 다양한 구성이 가능합니다. 이는 또한 sudoedit
그 일부 sudo
이며 다른 사용자로 편집을 허용하고 편집기 내에서 하위 쉘링(편집기에서 exec를 호출하여 높은 권한으로 임의 프로세스를 실행)으로 인한 보안 문제를 방지하는 데 사용할 수 있습니다.