OS는 명령에 sudo가 필요하다는 것을 어떻게 알 수 있습니까?


16
  1. 실행 파일을 실행할 때 때때로 OS에서 권한을 거부합니다. 예를 들어 make install접두사가 시스템 경로 sudo인 상태에서 실행 하는 것이 필요 하지만 접두사가 비 시스템 경로 인 경우에는 요구되지 않습니다 sudo. OS는 프로그램이 무언가를 수행하기 전에 실행 파일을 실행하는 것이 사용자보다 더 많은 권한이 필요하다고 어떻게 결정합니까?
  2. 때로는 프로그램 실행이 권한을 거부하지 않지만 프로그램이로 실행되면 더 많은 작업을 수행 할 수 있습니다 sudo. 예를 들어, du일부 시스템 디렉토리에서 실행될 때만 sudo일부 디렉토리에 액세스 할 수 있습니다. 왜 프로그램이 실행되기 전에 OS가 그러한 프로그램을 실행할 수있는 권한을 거부하지 않습니까?
  3. 이 때마다 사실인가요 sudo작품, su또한 작동하고, 때마다 su작품 sudo도 않습니다 사용할 수 있습니까? 또는으로 su사용자는 sudo? OS는 언제 sudo작동하고 언제 필요한지를 어떻게 결정 su합니까?

이 질문에 대한 답변이 되었습니까, 아니면 추가 정보를 원하십니까?
ctrl-alt-delor

답변:


14
  1. 예를 들어, "권한 거부"메시지는 파일 시스템 권한으로 인해 쓰기 액세스를 거부하는 경우가 있습니다. 실행 파일 / 도구는 파일 시스템이 파일 시스템에 의해 수행하려는 작업을 수행 할 수있는 충분한 권한을 부여하는지 확인하고 파일 시스템에서 거부 된 경우 오류를 발생시킵니다. 다른 경우에는 도구 자체에서 계속 사용하기 전에 사용자 ID를 확인합니다.
  2. 프로그램을 sudo실행하면 다른 사용자 이름으로 실행됩니다. 해당 사용자가 사용자보다 "더 많은 일을 할 수있다"고 sudo구성을 통해 다른 사용자를 대신하여 이러한 일을 sudo할 수 있다면 더 많은 일을 할 수 있습니다. 그러나 이것은 필요하지 않습니다. sudo커맨드 라인의 시작 부분에 방금 고정 하면 실제로 sudoroot로 작동하므로 일반적으로 단순한 필사자보다 더 많은 일을 할 수 있습니다.
  3. 가장 확실하지 않습니다. 사용하려면 sudo자신의 사용자 암호를 제공해야하며 대상 사용자를 대신하여 몇 가지 작업을 수행 할 수 있습니다. 을 (를) 사용하려면 대상 사용자의 암호su 가 필요하며 암호 가있는 경우 시스템에 관한 한 해당 대상 사용자가되고 사용자가 수행 할 수있는 모든 작업을 수행 할 수 있습니다.

또한보십시오


감사. "쓰기 권한을 거부하는 파일 시스템 권한"= "파일의 액세스 모드에 사용자에 대해 설정된 실행 비트가 없으며 chmod로 설정할 수 있습니까?"
모든 StackExchange for

1
@Tim 실제로 그것은 = "파일의 액세스 모드에 사용자에 대한 쓰기 비트가 설정 되어 있지 않습니다 ". 물론 chmod파일 소유자이거나 root. 인 경우이 문제를 해결할 수 있습니다 .
Joseph R.

실행 비트가 사용자에게 설정되어 있지 않은지 여부에 따라 sudo가 필요한지 여부는 전적으로 단독입니까? 참조 unix.stackexchange.com/q/147052/674
StackExchange을 모두

@Tim 분명히 실행 파일을 처음부터 실행하려면 실행 비트가 필요합니다.
Joseph R.

1
@JosephR. 분명하지 않은. chmod 400 hello && /lib64/ld-linux-x86-64.so.2 ./hello좋은 "안녕하세요, 세계!" 산출.
doneal24

24

설명 된 목적으로 OS는 프로그램 을 처음 실행 하기 위해 sudo가 필요한지 여부를 결정하지 않습니다 . 대신 프로그램이 실행을 시작한 다음 현재 사용자가 허용하지 않는 작업 (예 : /usr/bin새 명령을 설치 하기 위해 파일 쓰기)을 시도 하면 OS가 파일 액세스를 차단합니다. 이 조건에 대한 조치는 프로그램에 달려 있습니다. make실행을 중지하지만du 메시지를 인쇄 한 후 다음 파일 / 디렉토리로 진행합니다.

susudo명령은 루트 권한을 가진 프로그램을 실행하는 두 가지 방법입니다. 사용 된 옵션에 따라 새 프로그램을 시작할 때 환경의 내용과 같은 사소한 세부 사항이 다를 수 있습니다. OS는 언제 작동하는지 결정할 필요가 없습니다.


6

susudo특권 프로그램입니다. su인증에 성공한 후 실제 사용자 및 그룹 아이디를 사용자의 아이디 및 아이디로 변경합니다 su. 따라서 su와 비슷합니다 login. 참고 su사용자뿐만 아니라 루트로 변경하는 데 사용할 수 있습니다. sudo또한 실제적이고 효과적인 사용자 및 그룹 ID를 변경합니다. 지금까지 su그리고 sudo그들은 매우 다른 그 이상, 비슷한 (하지만 관련이없는)입니다.

를 사용하면 su대상의 비밀번호를 알아야하며 일단 인증되면 해당 사용자로 원하는 모든 작업을 수행 할 수 있습니다. 의 su설정 SU_WHEEL_ONLY은에서 설정 하여 제한 할 수 있습니다 /etc/login.defs. 설정하면 그룹의 사용자 만을 wheel사용할 수 있으며 su, 그렇지 않으면 제한되지 않습니다. 그 외에도,su 전부 또는 아무것도 없습니다.

sudo그것과는 완전히 다릅니다. 를 사용 sudo하면 /etc/sudoerssudoer (호출하는 사용자 sudo)가 수행 할 수있는 작업에 대해 매우 복잡한 정책을 정의 할 수 있습니다 . 예를 들어 특정 사용자가 특정 권한으로 특정 프로그램 만 실행할 수있는 반면 다른 사용자는 다른 권한으로 다른 프로그램을 실행할 수있는 정책을 정의 할 수 있습니다.

눈에 띄는 기능 중 하나는 sudo사용자가 대상 암호 대신 자신의 암호로 자신을 인증하도록 구성 할 수 있다는 것입니다. 따라서 sudo관리자들 사이에서 매우 인기가 높아지면서 사용자는 수퍼 유저 비밀번호를 처리하지 않고도 정의 된 권한있는 작업 만 수행 할 수 있으며, 어느 정도의 책임을지게됩니다.


2

tl; dr 액세스는 응용 프로그램을 실행중인 사용자에 의해 결정되며 sudo다른 사용자로 응용 프로그램을 실행합니다.

풀 버전:

OS는 명령에 sudo가 필요하다는 것을 어떻게 알 수 있습니까?

몰라요 UNIX는 응용 프로그램 수준이 아니라 파일 시스템 수준에서 권한을 관리합니다. 사용자가 특정 파일에 액세스 할 수있는 권한이 부여됩니다. 그런 다음 응용 프로그램이 사용자 대신 실행됩니다. 실행중인 각 프로세스에는 사용자가 연결되어 있습니다. 해당 사용자는 해당 응용 프로그램에 대한 권한을 결정하는 데 사용됩니다. Sudo는 다른 사용자를 대신하여 (다른 사용자와 연관된 권한이있는) 응용 프로그램을 실행하여 작동합니다.root 수퍼 유저 .

귀하의 예는 다음과 같습니다.

  1. 사용자에게 특정 디렉토리에 대한 쓰기 권한이 있으면 해당 디렉토리에 액세스 할 수 있습니다 make install. 그렇지 않으면 그들은있을 수 있습니다 root사용하여 - 그것을 할 sudo.

  2. 디렉토리에있는 파일에 액세스 할 수없는 경우 du실행하여 액세스 할 수 없습니다. root사실상 모든 파일에 액세스 할 수 있으므로 sudo du( du대신 실행) 파일 root에도 액세스 할 수 있습니다.

sudo가 작동 할 때마다 su도 작동하고 su가 작동 할 때마다 sudo도 작동한다는 것이 사실입니까?

예, 아니오 예, 프로그램이 실제로 실행되면 sudo및 에서 모두 동일하게 작동해야합니다 su. 그러나 파일에 sudo저장된 규칙 세트로 무엇을 실행할 수 있는지에 대한보다 세밀한 제어가 가능 /etc/sudoers합니다. su더 간단합니다. 대상 사용자의 비밀번호를 알고 있으면 해당 사용자 대신 프로그램을 실행할 수 있습니다.

마지막 참고 사항 : 응용 프로그램이 액세스 거부를 처리하는 방법 (사용자를 중단하거나 무시하거나 경고하는 경우)은 응용 프로그램에 달려 있습니다.


1

아무도 아직 ✓를 가지고 있지 않기 때문에, 내가 생각할 수있는 모든 것을 가진 답을 모았습니다.

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 호출).

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