
클라이언트에 대한 VPN 설정 생성 프로세스를 자동화하는 데 사용하는 Java 프로그램이 있습니다. 이 프로그램은 몇 가지 bash 스크립트를 호출하고 파일을 생성하고 복사합니다. 전체 VPN 구성이 /etc/openvpn 아래에 있기 때문에 루트 사용자로 실행해야 합니다. 이 디렉토리에는 루트 권한이 필요합니다. 동일한 컴퓨터에 Glassfish 애플리케이션 서버가 있고 언급된 Java 프로그램을 호출합니다. Glassfish는 루트가 아닌 사용자로 실행됩니다.
sudo를 통해 프로그램을 실행하는 경우 비밀번호를 입력하지 않고 루트 사용자로 프로그램을 실행하는 가장 안전하고 안전한 방법은 무엇입니까?
답변1
가장 안전한 옵션은 openvpn이 소유한 그룹을 찾아 해당 그룹에 액세스할 수 있는 권한이 없는 사용자를 추가하는 것입니다.권장되는 방법은 openvpn 사용자를 생성하는 것입니다, sudo를 사용하여 openvpn을 사용할 수 있는 권한을 부여합니다.
이 프로그램을 실행하는 사용자를 그룹(아마도 읽기 액세스만 포함)에 추가하여 openvpn에 대한 액세스 권한을 부여하고 필요한 sudo 권한(openvpn 실행 - openvpn 사용자가 사용하는 것과 동일한 설정)을 제공하면 됩니다. 안전하게.
루트를 사용하는 것은 게으른 방법입니다.)
답변2
내가 알아낸 것은 비밀번호를 입력하지 않고 sudo로 명령을 실행하는 것보다 두 가지 옵션이 있다는 것입니다.
- 에코 비밀번호 | sudo -S 명령
/etc/sudoers에 다음 줄을 추가합니다.
사용자 이름 ALL=(ALL) NOPASSWD: COMMAND
이 줄은 모든 그룹 정의 뒤에 와야 합니다. 를 사용하여 어떤 sudo 권한을 가지고 있는지 확인할 수 있습니다 sudo -l
. 이 경우 결과는 다음과 같습니다.
(ALL) ALL
(ALL) NOPASSWD: COMMAND
이는 COMMAND를 제외한 모든 명령에 비밀번호가 필요함을 의미합니다. username ALL=(ALL) NOPASSWD: COMMAND
그룹 정의 앞에 놓으면 다음이 sudo -l
생성됩니다.
(ALL) NOPASSWD: COMMAND
(ALL) ALL
(ALL) ALL
NOPASSWD 행 다음에 지정되므로 여전히 COMMAND에 대한 비밀번호가 필요합니다 .