less than 1 minute read

Systemd로 실행을 관리하는 프로그램이 있다. GitHub actions를 사용해 빌드하고 scp 프로그램으로 배포한다. 복사 전후에 프로세스 중지 실행을 수행해야 한다. systemd에 대한 전체 권한을 주지 않고 특정 디렉터리에 권한을 준 것처럼 특정 프로그램의 시작과 종료만 가능하게 하고 싶다.

/etc/sudoers 파일에 특정 유저가 root 권한을 얻어 실행할 수 있는 동작을 정의할 수 있다. Drop-in을 지원하니 /etc/sudoers 파일을 직접 수정하지 말고 /etc/sudoers.d/deployuser-systemctl 처럼 파일을 만든다.

sudo visudo -f /etc/sudoers.d/deployuser-systemctl

sudoers 파일 문법 검사를 해주는 visudo 를 통해 수정한다.

deployuser ALL=NOPASSWD: /usr/bin/systemctl restart myapp, /usr/bin/systemctl start myapp, /usr/bin/systemctl stop myapp

이제 deployusermyapp 을 비밀번호 입력 없이 sudo systemctl로 컨트롤할 수 있게 했다.