sudo가 필요한 비대화형 스크립트를 실행하는 가장 안전한 방법

sudo가 필요한 비대화형 스크립트를 실행하는 가장 안전한 방법

비밀번호가 필요한 명령을 실행하고 싶지만 sudo비대화식으로 비밀번호를 입력하는 것은 옵션이 아닙니다. 내 특별한 경우에는 SSH 로그인을 통해 내 서버에서 이 스크립트를 실행하기 위해 전화기에 봇/바로가기 작업을 만들고 싶습니다.

제 경우에는 부팅 가상 머신을 사용하고 싶습니다 virsh start. 루트가 아닌 사용자가 머신을 부팅할 수 있도록 구성할 수 있다는 것을 알고 있지만 일반적으로 이 솔루션이 궁금합니다. 특히 비 루트 옵션을 사용할 수 없는 경우에는 더욱 그렇습니다. -루트 사용자가 사용합니다.

또한 권한이 없는 사용자는 임의의 명령이 아닌 내가 정의한 단일 스크립트만 실행할 수 있으면 된다고 생각합니다. 즉, 사용자는 실행할 스크립트를 트리거할 수만 있으면 됩니다. 매개변수를 제공하지 않으며 그렇게 할 수 있는 방법을 찾더라도 매개변수는 무시됩니다.

또한 내 경우에는 서버가 나만 사용하기 위한 것이며 방화벽 뒤에 있습니다. 인터넷에 연결되어 있지만(자료를 다운로드할 수 있기 때문에) 인터넷에서 액세스할 수 없습니다. 액세스하려면 LAN에 있거나 VPN을 통해 연결되어 있어야 하며, 집에서만 이 스크립트를 사용하고 싶습니다. 그래도 - 여기서 '좋은 습관'을 배울 수 있을지 걱정이 됩니다.

서버 자체가 데비안 테스트를 실행하고 있습니다. 내 관심사는 비밀번호 없는 sudo를 허용하는 것이 위험해 보인다는 것입니다. 이론적으로 권한이 없는 계정이 권한 있는 스크립트나 명령을 실행할 수 있는 더 좋은 방법이 있습니까? root매분마다 생성되는 특정 파일을 모니터링하고 해당 스크립트가 해당 작업을 수행하도록 실행하는 스크립트가 있어야 합니까 touch? sudo이 스크립트만 실행할 수 있는 사용자를 생성할 수 있나요 ?

답변1

편집을 위해 sudo특정 사용자(또는 그룹)가 명명된 명령을 실행할 수 있도록 구성할 수 있습니다 ./etc/sudoersvisudo

user ALL = NOPASSWD: /path/to/command

사용자는 비밀번호를 입력하지 않고도 user실행할 수 있습니다 .sudo /path/to/command

답변2

이 경우 sudo가 어떻게 작동할지 구체적으로 알지 못하지만 사용자 상호 작용에 의존하는 많은 프로그램은 호출 시 tty에 연결되지 않으면 실패합니다. "NOPASSWD" 없이 sudo를 생성하고 cron이나 at을 통해 실행하여 테스트하는 것은 간단합니다.

echo "sudo touch /tmp/writtenAsRoot" | at now

(그리고 입력을 기다리고 있는지 확인하려면 "ps -ef | grep sudo"의 출력을 확인하세요.)

사용자에게 sudo 권한이 없는 경우 잠재적인 시나리오를 테스트할 수도 있습니다.

관련 정보