
나는 비밀번호를 입력하는 것을 좋아하지 않는다스도그래서 난 그걸 비활성화해
%sudo ALL=(ALL) NOPASSWD: ALL
이제 나쁜 부작용이 생겼습니다. 내가 실행하는 모든 쉘 스크립트는 자동으로 실행됩니다.스도나를 대표해.
가장 일반적인 사용 사례는 실험적인 항목을 ${HOME}/local에 설치하고 구성하는 것을 잊어버리는 것입니다.접두사.
질문- 스크립트에서 sudo에 대한 비대화형 호출을 차단하는 기본 방법이 있습니까? 존재하다아키텍처Linux, 좀 더 구체적으로 말씀해 주세요.
답변1
"스크립트된 sudo"와 "대화형 sudo"는 모순되지 않기 때문에 원하는 것을 할 수 없습니다. 터미널에서 sudo를 사용하여 스크립트를 실행할 수 있습니다. 터미널에서 완전히 자동화된 방식으로 명령을 실행할 수 있는 도구의 예로는 , script
, , 등이 있습니다.expect
screen
tmux
sudo가 사용자가 "직접" 실행하고 있음을 어떻게든 감지할 수 있더라도(프로세스가 아닌 키보드 및 마우스와 같은 주변 장치와 상호 작용하기 때문에 그렇지 않음) 악성 스크립트로부터 사용자를 보호할 수는 없습니다. 예를 들어, 악성 스크립트는 귀하의 계정에 가짜 명령을 심어 다음에 이를 실행할 때 sudo
귀하의 액세스 권한을 개별적으로 이용하는 래퍼를 호출할 수 있습니다.
어떤 경우든 보호하려는 위협은 특별히 관련이 없습니다.
소셜 미디어 계정 도용과 같은 의심스러운 작업을 수행하지 않는 일부 소프트웨어를 신뢰하지 않는다면 해당 소프트웨어를 계정에서 실행하지 마십시오. 최소한 다른 계정(물론 sudoer는 아님)에서 실행하세요.GUI 액세스 불가. 더 나은 격리를 위해 가상 머신에서 실행하세요. (아직 완벽하지는 않습니다. 일반적인 맬웨어로부터 안전하지만 정부가 귀하를 표적으로 삼는 경우에는 반드시 그런 것은 아닙니다.)
답변2
또한자일스의 대답Can I block non-interactive sudo invocation?
문제의 측면에 따라 상황의 특정 요소에 대한 해결 방법을 제안합니다.
sudo 비밀번호를 입력하는 것이 싫어서 비활성화했습니다.
그리고
이제 나쁜 부작용이 생겼습니다. 내가 실행하는 모든 쉘 스크립트는 나를 대신하여 자동으로 sudo를 수행할 수 있습니다.
만약에귀하의 상황은 일반적으로 sudo
여러 가지 다른 명령을 실행하지만 암호를 묻지 않고 자동으로 sudo 스크립트를 실행하여 루트 수준에서 무슨 일이 일어나고 있음을 깨닫는 것입니다.할 수 있다:
- NOPASSWD 옵션 취소
- 타임스탬프 시간 초과를 인벤토리 이상으로 5분 연장
- 신뢰할 수 없는 스크립트를 실행하기 전에 sudo 타임스탬프를 종료합니다.
NOPASSWD
이 옵션에 대해 sudoer를 편집하는 방법을 이미 알고 있습니다 .
연장하기 위해timestamp_timeout
sudoers 파일에서 매우 높은 값이나 음수 값으로 설정합니다. 이 매개변수에 대한 매뉴얼 페이지의 관련 조각:
타임스탬프 시간 초과
sudo가 비밀번호를 다시 요청하기 전까지 경과할 수 있는 시간(분)입니다.
기본값은 5입니다.
0보다 작은 값으로 설정하면 시스템이 다시 시작될 때까지 사용자의 타임스탬프가 만료되지 않습니다.
확실하지 않은 스크립트를 실행하려고 하면 다음을 실행하세요.sudo -k
"킬" 타임스탬프:
-케이
명령 없이 사용하면 사용자의 캐시된 자격 증명이 무효화됩니다. 즉, 다음에 sudo를 실행할 때 비밀번호가 필요합니다.
sudo
스크립트를 실행하고 sudo가 비밀번호를 묻는 메시지를 표시하면 해당 스크립트가 호출되었음을 알 수 있으며 필요한 경우 스크립트를 중단할 수 있습니다.
그런데 설정을 추천합니다프롬프트 매개변수 전달그 안에 텍스트를 포함합니다 sudo
. 예:
Defaults passprompt="[sudo] password for %u:"
...따라서 sudo가 (다른 도구와는 달리) 비밀번호를 묻는 메시지를 표시하는 경우 이는 분명합니다.