아무도 아직 ✓를 가지고 있지 않기 때문에, 내가 생각할 수있는 모든 것을 가진 답을 모았습니다.
1 실행 파일을 실행할 때 때때로 OS에서 권한을 거부합니다. 예를 들어 시스템 경로 인 접두사를 사용하여 make install을 실행하면 시스템 경로가 아닌 접두사가 sudo를 요구하지 않습니다. OS는 프로그램이 무언가를 수행하기 전에 실행 파일을 실행하는 것이 사용자보다 더 많은 권한이 필요하다고 어떻게 결정합니까?
실행 파일이 시작될 때 수행되지 않습니다. 실행 파일이 무언가를 시도 할 때 수행됩니다.
Os는 파일 시스템 권한 및 기능을 검사합니다 (파일 시스템 권한에 포함되지 않으며 니스 수준 감소, mknode, 일부 저수준 네트워크 항목, 다른 프로세스 종료, 재부팅, 설정 시간 등 포함). 권한이 없으면 사용할 수 없습니다. 루트에는 CAP_DAC_OVERRIDE (파일 권한 무시)를 포함한 모든 기능이 있습니다.
2 때때로, 프로그램 실행은 권한이 거부되지 않지만 sudo로 실행되는 경우 프로그램이 더 많은 작업을 수행 할 수 있습니다. 예를 들어, 일부 시스템 디렉토리에서 du를 실행하는 경우 sudo 만 사용하여 일부 디렉토리에 액세스 할 수 있습니다. 왜 프로그램이 실행되기 전에 OS가 그러한 프로그램을 실행할 수있는 권한을 거부하지 않습니까?
OS가 프로그램의 기능을 알 수 없습니다. 따라서 시작하기 전에 권한을 확인하고 수행 할 작업을 결정하는 것은 프로그램에 달려 있습니다. 그래도이 작업을 수행 할 필요는 없습니다.
참고 : 안드로이드에는 매니페스트가 있으며,이 응용 프로그램은 사용할 수있는 권한을 선언합니다. OS는 선언하지 않은 권한을 사용하려고 시도하는 모든 응용 프로그램을 종료하며 OS가 항상 권한을 존중할 수 있다고 보장하지는 않습니다. 예를 들어 네트워크 액세스가 가능하지 않을 수 있습니다.
2 sudo가 작동 할 때마다 su도 작동하며 su가 작동 할 때마다 sudo도 작동한다는 것이 사실입니까? 또는 su로 사용자는 sudo보다 더 많은 것을 할 수 있습니까? OS는 sudo가 작동하는시기와 su가 필요한시기를 어떻게 결정합니까?
sudo
그리고 su
대략 samething을한다. 일부 차이점은 환경 변수 처리 및 기타 보안 문제 방지입니다. 그러나 둘 다 다른 사용자가 될 수있는 도구이며 둘 다 기본 사용자 root입니다.
su
원래 도구 였으므로 변경하려는 사용자 / 그룹의 비밀번호를 입력해야합니다.
sudo
은 최신 버전이며 기본적으로 고유 한 비밀번호를 입력해야하지만 전환하려는 사용자 / 그룹의 비밀번호를 승인하거나 비밀번호를 전혀 사용하지 않도록 구성 할 수 있습니다. 또한이 컴퓨터에서이 사용자에 대해이 프로그램으로 인증하는 방법과 사용자가 사용할 명령 및 구성에 대한 많은 구성을 허용합니다. 또한 sudoedit
이것은 sudo
다른 사용자로서 편집 할 수있게하고 편집기에서 서브 쉘링의 보안 문제를 피하기 위해 사용될 수 있습니다 (에스컬레이션 된 권한으로 임의의 프로세스를 실행하기 위해 편집기에서 exec 호출).