sudo는 실제로`sudo`가 필요하지 않은 명령이 주어지면 암호를 요청할지 여부를 어떻게 결정합니까?


10

적용 할 때 sudo실제로 필요가없는 명령에 sudo,

  • 때로는 암호를 묻지 않습니다. 내에서 예를 들어 $HOME, sudo ls.

  • 그러나 나는 어떤 명령을 잊어 버렸지 만 다른 명령에 대해서는 기억합니다.

그래서 sudo실제로 필요하지 않은 명령이 주어지면 암호를 요청할지 여부를 결정 하는 방법이 궁금합니다 sudo. /etc/sudoers그것을 지정하는 규칙 이 있습니까?

내 진짜 문제는 내가 사용할 때 du일부 디렉토리에 대해 "권한 거부"를 표시하고 때로는 일부 디렉토리에 대한 권한이 없기 때문에 그렇지 않다는 것입니다. 나는 관계없이 신청 sudo하고 du, 나는 자신의 디렉토리에 관계없이 암호를 요구받을 것이라고 생각했다.


15
프로그램 루트 만 수행 할 수있는 작업을 수행 할 것인지 또는 실제로 프로그램을 실행하지 않고 호출하는 사용자가 액세스 할 수없는 파일에 액세스 할 것인지를 결정하는 것이 가장 큰 문제입니다. 그래서 sudo 가하고있는 것이 아니라는 것을 확신 할 수 있습니다.
zwol

2
+1 질문이 오해에 기초하고 있지만 증상이 명확하게 설명되어 있고 명확한 답이 있습니다.
dcorking

답변:


22

일반적인 구성에서는 명령이 관련이 없습니다. sudo를 처음 사용할 때 비밀번호를 입력해야하며 다음 15 분 동안 특정 쉘에서 비밀번호가 필요하지 않습니다.

컴퓨터의 관점에서 볼 때“sudo가 필요한 명령”과 같은 것은 없습니다. 모든 사용자는 모든 명령을 실행할 수 있습니다. 결과는 "Permission denied"또는 "No such file or directory"와 같은 오류 메시지 일 뿐이지 만 항상 명령을 실행할 수 있습니다.

예를 들어, du액세스 권한이없는 내용이있는 디렉토리 트리에서 실행 하면 권한 오류가 발생합니다. 그것이 "권한이 거부되었다"는 의미입니다. 를 실행 sudo du하면 sudo가 du루트로 실행 되므로 권한 오류가 발생하지 않습니다 (루트 계정의 핵심 : root¹에는 항상 권한이 있음). 당신이 실행하면 sudo du, du루트로 실행하고, sudo결국이에 관여하지 않습니다 du시작했다. du에서 권한 오류가 발생하는지 여부는 sudo 작동 방식과 완전히 관련이 없습니다.

유용한 작업을 수행 하려면 sudo가 필요한 명령이 있습니다 . 유용성은 인간의 개념입니다. root로 실행할 때 명령이 유용한 기능을 수행하지만 계정에서는 실행할 수없는 경우 sudo (또는 명령을 루트로 실행하는 다른 방법)를 사용해야합니다.

sudo가 암호를 요구하는지 여부는 두 가지입니다.

  1. 구성에 따라 sudo는 인증 여부를 결정합니다. 기본적으로 sudo에는 비밀번호가 필요합니다. 이 authenticate옵션 은 옵션을 false로 설정 하고 NOPASSWD태그에 적용 가능한 규칙을 포함하여 여러 가지 방법으로 끌 수 있습니다 .
  2. sudo에 암호가 필요한 경우 캐시 된 값을 사용하는 내용 일 수 있습니다. sudo가 암호를 요구하는 이유는 암호를 호출하는 사람을 인증하는 것이 아니라 (사용자가 암호를 호출 한 것을 알고있는 sudo는) 키보드를 제어하는 ​​사람이 아니라 여전히 명령에 있는지 확인하기 때문입니다. 기본적으로 sudo는 15 분 전에 비밀번호를 입력 한 경우 여전히 명령을 사용하고 있다고 믿습니다 (이 timeout옵션 은 옵션 으로 변경 가능 ). 동일한 터미널에 비밀번호를 입력해야합니다. 한 터미널에 로그인 한 상태로 해당 터미널을 그대로두고 다른 터미널을 사용하면 다른 사람이 사용할 수 있습니다.tty_tickets

¹ 거의이 스레드의 범위를 벗어납니다.


실행 비트가 다른 파일이 아닌 루트만을 위해 설정된 파일이있을 수 있습니다. 이것은 "루트를 실행해야 할 필요가 없습니다". (그냥 nitpicking.)
Paŭlo Ebermann

@ PaŭloEbermann 필자는“모든 사용자 어떤 명령이라도 실행할 수 있습니다 ”라고 썼습니다 . 항상 nitpicker가 있습니다 :(
Gilles 'SO-Stop

45

sudo명령을 실행하라는 명령이 다른 사용자 (일반적으로 루트)로 실행되어야하는지 여부는 알 수 없으며 구성 만 알고 있습니다. sudo어떤 사용자를 "대상"으로, 어떤 명령 을 실행할 수 있는지를 결정 합니다. 또한 암호가 필요한지 여부와 암호를 유지할지 여부를 결정합니다.

기본 데비안 구성을 사용하는 경우, 후자가 여기에 관련된 것일 가능성이 높습니다. sudo지정된 터미널에서 처음 사용할 때 암호를 묻게되면 일정 시간 동안 인증 토큰이 유지됩니다. sudo해당 기간 내에 동일한 터미널에서 재사용 하면 비밀번호를 묻는 메시지가 표시되지 않습니다.


감사. 당신은 sudo du /path/to/some/dir항상 내 암호가 필요 /path/to/some/dir합니까 아니면 상관없이 항상 암호를 요구해야 합니까?
Tim

12
예. 항상 비밀번호가 필요합니다. 암호가 필요하지만 캐시에 이미 저장된 경우 암호를 입력하라는 메시지가 표시되지 않습니다.
dr_

5
엄밀히는 말할 있기 때문에 경로에 따라 /etc/sudoers명령과 인수를 지정할 수 있습니다. 그러나 그와 같은 것을 추가하지 않았다면 sudoers(그리고 알고 있다면 좋을 것입니다) 인수는 중요하지 않습니다 (루트 를 통해 루트에 대한 일반적인 액세스 권한이 있으면 명령이 적용되지 않습니다 sudo).
Stephen Kitt

19
sudo캐시에 비밀번호를 저장하지 않고 비밀번호 확인으로 ID가 이미 한 번 확인 된 정보 만 저장합니다. 때문에 sudosetuid-root 프로그램, 그것은 이미 사람 등 여러 프로그램을 실행하는 데 필요한 모든 권한을 가지고 - 그러나 그것은에 지정된 사용자가 정확히 사용할 수 있도록에만 신뢰할 수있는 sudoers파일 및 그것을 사용하는 다른 모든 시도를 거부 할 . 그것이 sudo작고 잘 공부 된 프로그램 인 것이 중요한 이유 입니다.
telcoM

6

실제로 sudo가 필요없는 명령에

명령 sudo를 필요로 하거나 필요로하는 것은 아닙니다 . 달릴 때

sudo -u user command

시스템은 command로 실행 됩니다 user.

호출의 성공 여부와 비밀번호 요청 여부는 보안 정책 sudoers(일반적으로에서 구성됨)에 따라 다릅니다 /etc/sudoers.

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