
(원래 Stack Overflow에 게시됨) 대신 여기에서 시도해 보라고 제안했습니다. 원본 게시물은 다음과 같습니다.
제목을 참조하세요. sudo를 쿼리할 수 있는 명령이 필요합니다. 이상적으로는 sudo가 아직 남아 있으면 성공을 반환하고 sudo가 만료되면 false를 반환합니다. 남은 시간을 확보하는 것도 유용할 수 있습니다. (걱정된다면 sudo -v
재검증만 하면 됩니다.) 아, 그리고 비밀번호를 물어볼 필요도 없습니다.
내가 찾은 가장 가까운 것은 이지만 sudo -n true
이 -n
옵션은 직장의 Centos 5 시스템에만 있습니다. -n
비밀번호를 요청해야 하면 실패합니다. 이 기능을 얻는 다른 방법이 있습니까? 내가 작업하는 모든 컴퓨터에 실제로 루트가 없기 때문에 원하는 대로 새 버전의 sudo를 설치할 수 없다고 가정합니다.
가치 있는 일을 위해 sudo 상태를 표시하라는 메시지를 받을 수 있도록 이 작업을 수행하고 있습니다. 나는 어떤 터미널이 적극적으로 sudo가 가능한지 알고 싶습니다. 루트일 때 색상을 변경하는 프롬프트도 있지만 루트를 자주 사용하지 않으므로 사용이 제한됩니다.
답변1
이 -n
옵션은 최신 버전에서 사용할 수 있지만 sudo
말씀하신 대로 옵션이 아닙니다. sudo
비밀번호를 묻는 메시지가 표시되는지 확인하는 것 외에는 원하는 작업을 수행할 수 있는 실제 방법이 없습니다 . 시각적 표시가 필요한 경우 sudo /bin/bash
루트 bash 세션을 시작하는 것이 어떨까요? 이는 안전하지 않지만 누군가가 sudo에 대한 즉각적인 변경 사항을 인식하는 경우에도 다소 안전하지 않습니다.
답변2
나는 이것이 정말 오래된 질문이라는 것을 알고 있지만 여기에 오늘 스크립트에서 한 내용이 있습니다. sudo라는 것은 모든 명령을 sudo(또는 최소한 가동 시간)로 실행할 수 있다는 것을 의미한다고 가정합니다.
CAN_I_RUN_SUDO=$(sudo -n 가동 시간 2>&1 | grep "load" | wc -l) if [ ${CAN_I_RUN_SUDO} -gt 0 ] 그 다음에 echo "sudo 명령을 실행할 수 있어요" 또 다른 echo "Sudo 명령을 실행할 수 없습니다." fi
그러나 사용자가 에서 제한 사항을 갖고 있는 경우에는 visudo
이 확인만으로는 충분하지 않습니다. 예를 들어 사용자가 make 명령만 사용할 수 있는 경우입니다. 작동할 것으로 알고 있는 몇 가지 명령을 실행해 보십시오.
필터를 추가할 수 있습니다 grep -v Sorry
. 예:
$(sudo -n uptime 2>&1 | grep "load" | grep -v Sorry | wc -l)
잘못된 긍정을 방지하기 위한 것입니다.
답변3
@wags007의 답변을 단순화하려면
if sudo -n true
then
sudo id
else
echo "sorry, but did not want to bother you"
fi
그러나 귀하의 경우https://www.sudo.ws/man/1.8.15/sudoers.man.html구성에 따라 defaults mail_badpass
false 결과가 나오는 모든 테스트에 대해 메일이 전송됩니다(메시지가 표시되었을 것입니다). 이러한 성가신 변경을 피하려면 sudoers 파일의 해당 부분을 다음으로 변경하십시오.
Defaults mail_badpass
Defaults! /bin/true !mail_badpass
결과적으로 /bin/true를 제외한 모든 명령에 대해 보안 경고 메일이 전송됩니다. 네, 이제 누군가는 sudo true
보안 경고 메일을 보내지 않고도 무제한으로 전화를 걸어 비밀번호를 무차별 대입 공격할 수 있습니다.
참고: visudo
sudoers 파일을 편집하려면 항상 즐겨 사용하는 편집기 대신 사용하세요. 그렇게 하지 않으면 계정이 폐쇄될 위험이 있습니다.
답변4
sudo 매뉴얼에 따르면 sudo 세션은 타임스탬프 파일( )에 따라 결정되므로 /usr/lib/sudo/<username>
타임스탬프 파일의 날짜/시간을 확인하면 얼마나 남았는지 알 수 있을 것이다. 그러나 내 시스템에는 타임스탬프 파일이 실제로 디렉터리이고 그 안에 암호화된 내용이 포함된 세 개의 파일이 있습니다(그리고 일부 이상한 타임스탬프도 있지만 /usr/lib/sudo/<username>
타임스탬프가 내가 sudo에 비밀번호를 제공한 시간과 일치하는 것 같습니다). . /usr/lib/sudo/<username>/0
가장 최근 sudo
실행 의 타임스탬프가 있는 것 같습니다 .