sudo: 시간 초과, 남은 시간, 시간 초과가 만료되었는지 확인하려면 어떤 명령을 사용해야 하나요?

sudo: 시간 초과, 남은 시간, 시간 초과가 만료되었는지 확인하려면 어떤 명령을 사용해야 하나요?

나는 그것이 sudo commandX사용자의 비밀번호를 요구한다는 것을 알고 있으며 비밀번호가 유효하면 commandX루트로 실행되고 여기까지 모든 것이 잘 작동합니다. apt등 의 일부 명령에는 필수입니다. 보안상의 이유로 chown그것은 chmod의미가 있습니다.

이제 다음 시나리오/상황을 고려하십시오.

sudo commandA
... sometime
sudo commandB

루트 권한이 필요하기 때문에 commandB제한 시간이 만료되지 않은 경우 비밀번호를 묻지 않고 실행되며, 그렇지 않으면 비밀번호를 다시 작성해야 합니다.sudo

목적 에 따라 Shell Scripting-당신이 할 수 있다면- 다음 각 상황에 대해 요청된 데이터를 검색/표시할 수 있는 명령이 있습니까?

  • 시간 초과 sudo- 예: N분/초, 다음에서 발생해야 합니다./etc/sudoers
  • 남은 시간 sudo(만료 전). 예를 들어 제한 시간이 5분이면 4 또는 3.5를 반환합니다.
  • 제한 시간이 sudo있습니다

따라서 시나리오의 목적을 달성하기 위해 총 3개의 명령 또는 특수 매개변수가 있는 1개의 명령이 있다고 가정합니다.

답변1

그게 sudo뭐야?은닉처사용자당, 터미널 세션당 5분 동안 자격 증명을 입력합니다.

이를 위해 해당 데이터가 포함된 항목을 /run/sudo/ts/username(또는 timestampdirsudoers에서 가리키는 항목)에 기록하고 다음에 실행할 때 이를 확인합니다 sudo.

파일에 액세스할 수 있는(즉, 루트로 실행해야 하는) 다른 모든 프로그램은 에 지정된 파일 형식과 동일한 내용을 읽을 수 있습니다 man sudoers_timestamp.

안타깝게도 setsuid사용자가 sudo 내부에서 파일을 읽을 수 있도록 하는 프로그램을 만드는 것은 정말 나쁜 생각처럼 들립니다. 왜냐하면 이 프로그램이 제공하는 이점은 거의 없지만 엄격한 코너 케이스 검사를 많이 수행해야 하기 때문입니다. 예, 사용자는 이를 확인합니다. 파일 항목은 다른 사용자의 sudo 사용 속성에 대한 정보를 제공합니다.

그래서 당신이 원하는 것이 존재하지 않는 것 같습니다. C++ 코드 몇 줄을 직접 작성하고 위에서 언급한 맨페이지에 설명된 구조를 파일에서 추출한 다음 결과 실행 파일 setuid를 표시하여 항상 루트로 실행할 수 있도록 할 수 있지만 이는 실제로 위험한 일로 들린다는 점에 유의하세요. 그리고 당신이 원하는 것은 무엇이든 성취할 수 있는 더 좋은 방법이 있을 것입니다.

답변2

다음을 수행하여 사례 3을 얻을 수 있습니다 sudo -n true 2>/dev/null. 상태가 0이 아닌 경우 캐시된 인증이 만료된 것입니다(또는 삭제된 것입니다).

답변3

이는 sudo -n true인증이 만료되었는지 알려주지만,반품시간 초과는 매번 재설정됩니다.

관련 정보