![Systemd 명령이 실패하는데 수동으로 실행할 수 있는 이유는 무엇입니까?](https://linux55.com/image/176035/Systemd%20%EB%AA%85%EB%A0%B9%EC%9D%B4%20%EC%8B%A4%ED%8C%A8%ED%95%98%EB%8A%94%EB%8D%B0%20%EC%88%98%EB%8F%99%EC%9C%BC%EB%A1%9C%20%EC%8B%A4%ED%96%89%ED%95%A0%20%EC%88%98%20%EC%9E%88%EB%8A%94%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
문제 없이 셸에서 다음 명령을 실행할 수 있습니다.
sudo -u ktrl /home/andrew/.cargo/bin/ktrl -d /dev/input/event3
그러나 내가 봉사하려고 할 때:
/etc/systemd/system/ktrl.service
[Unit]
Description=ktrl
[Service]
User=ktrl
Environment=HOME=/opt/ktrl
ExecStart=/home/andrew/.cargo/bin/ktrl -d /dev/input/event3
[Install]
WantedBy=multi-user.target
다음 오류가 발생합니다.systemctl status ktrl.service
Loaded: loaded (/etc/systemd/system/ktrl.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Sat 2020-06-27 10:35:08 EDT; 5s ago
Process: 23335 ExecStart=/home/andrew/.cargo/bin/ktrl -d /dev/input/event3 (code=exited, status=203/EXEC)
Main PID: 23335 (code=exited, status=203/EXEC)
CPU: 5ms
Jun 27 10:35:08 localhost.localdomain systemd[1]: Started ktrl.
Jun 27 10:35:08 localhost.localdomain systemd[23335]: ktrl.service: Failed to execute command: Permission denied
Jun 27 10:35:08 localhost.localdomain systemd[23335]: ktrl.service: Failed at step EXEC spawning /home/andrew/.cargo/bin/ktrl: Permission denied
Jun 27 10:35:08 localhost.localdomain systemd[1]: ktrl.service: Main process exited, code=exited, status=203/EXEC
Jun 27 10:35:08 localhost.localdomain systemd[1]: ktrl.service: Failed with result 'exit-code'.
Andrew 로 명령을 실행하고 있습니다 sudo -u ktrl /home/andrew/.cargo/bin/ktrl -d /dev/input/event3
. 그러나 ktrl로 전환 sudo su ktrl
하고 명령을 실행 해도 /home/andrew/.cargo/bin/ktrl -d /dev/input/event3
여전히 작동합니다 .
작업 결과 ll -d
:
존재하다/home/andrew
drwxr-xr-x. 39 andrew andrew 4.0K Jun 27 12:06 .
존재하다/home/andrew/.cargo
drwxrwxr-x. 4 andrew andrew 4.0K Jun 25 16:11 .
존재하다/home/andrew/.cargo/bin
drwxrwxr-x. 2 andrew andrew 4.0K Jun 25 16:11 .
ls -l
작업 결과/home/andrew/.cargo/bin
total 1552
-rwxrwxrwx. 1 andrew andrew 1579608 Jun 25 16:11 ktrl
답변1
이 문제는 SELinux로 인해 발생합니다. 나는 그것을 비활성화했고 이제 모든 것이 잘 작동합니다.
/usr/local/bin/ktrl
편집: 더 나은 해결책은 저장소를 ktrl.service 파일 로 이동하고 그에 따라 업데이트하는 것입니다 . 이렇게 하면 SELinux가 활성화된 상태에서도 계속 작동할 수 있습니다.