Linux에서 jar를 서비스로 실행하려면 어떻게 해야 합니까? 모든 가이드에서는 /etc/systemd/system 폴더에 file.service를 생성해야 한다고 나와 있습니다. 파일을 생성하는 명령을 사용하여 스크립트를 작성하고 싶지만 각 명령은 SUDO를 요청하고 비밀번호를 입력해 보았는데, 비밀번호 입력을 우회하고 스크립트의 모든 내용이 자동으로 이루어지도록 하고 싶습니다. 누구라도 도와줄 수 있나요?
다른 폴더에 파일을 생성하고 cp 명령을 사용하여 복사해 보았으나 여전히 비밀번호를 입력해야 합니다. echo "XXX" > "/etc/stsyemd/system/filename.service" 명령을 시도했지만 권한이 거부되었습니다.
답변1
일반적으로 sudo를 사용하는 스크립트에서는 "비밀번호를 우회"할 수 없습니다(구성을 편집할 수는 있지만 sudo
예상대로 먼저 구성을 사용해야 합니다 sudo
). 이것이 사용자 분리의 전부입니다.
그러므로 당신이 원하는 것은 불가능합니다. 인증 없이 루트가 되는 스크립트를 작성할 수 있다면 사용자가 루트가 할 수 있는 모든 파괴적인 작업을 수행할 수 없도록 만드는 것은 의미가 없습니다.
스크립트의 모든 내용은 자동으로 이루어집니다.
이러한 설치 스크립트는 루트에 의해 실행된다고 합리적으로 가정할 수 있으므로 스크립트 자체는 이를 처리할 필요가 없지만 sudo
(내부가 아닌 전체적으로) 실행할 수 있습니다.
그 외에도 "I want to run a jar"라는 메시지는 /etc/systemd/system에 서비스를 전혀 설치하지 말고 대신 systemd/user의 ~/.config/에 사용자 서비스를 설치하면 된다고 제안할 수 있습니다. 현재 사용자에게는 특별한 권한이 전혀 필요하지 않습니다. 따라서 루트 액세스도 없고 sudo
.
답변2
sudo에서 비밀번호를 우회하는 것은 쉽습니다.
- 행 추가
youruser_ID ALL=(ALL) NOPASSWD:ALL
sudoers 파일에 추가합니다(visudo 사용). 더 이상 비밀번호를 입력하지 마세요!
또는 2) 행 추가
Defaults timestamp_timeout=60
Defaults env_reset
아래 sudoers 파일에 있습니다. 이제 이 작업을 수행할 수 sudo id
있으며 암호를 묻는 메시지가 표시되지만 나머지 시간에는 sudo
암호 없이 수행할 수 있습니다.
그러나 일반적으로 파일을 설치하는 스크립트는 /etc/systemd/system
루트로 실행해야 합니다. 그래서
sudo install_script
더 나은 선택이 될 것입니다.