중복 가능성:
하나의 명령만 실행하는 UNIX 계정 만들기
기존 사용자 계정 XXX를 통해 실행해야 하는 쉘 스크립트가 있습니다. 이제 사용자 계정 XXX에 액세스하지 않고도 이 스크립트를 실행할 수 있는 다양한 다른 사용자가 있습니다. XXX의 비밀번호를 모르고 사용자 XXX에 대한 특정 쉘 스크립트 실행만을 허용하는 ssh 명령(아마도 키나 다른 것을 통해)을 생성하는 방법이 있습니까?
답변1
스크립트를 실행하는 경우오직다른 사용자가 수행할 수 있는 작업이 있으면 SSH 키를 사용하겠습니다.
각 사용자는 자신만의 SSH 키를 가지고 있어야 누군가가 더 이상 액세스할 필요가 없어도 문제가 발생하지 않습니다. 키의 공개 부분을 넣어야 합니다.
~scriptuser/.ssh/authorized_keys
실제 키 앞에 텍스트를 추가해야 합니다.command="/path/to/script"
예는 다음과 같습니다.
from="10.23.5.32",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="/path/to/script" ssh-dss A........
이는 키를 사용할 수 있는 IP 주소를 제한하고 수행할 수 있는 전달 유형을 제한하며 키를 사용할 때 pty가 부여되지 않고 사용자가 키를 사용하여 연결할 때마다 스크립트가 실행되도록 보장합니다. 다른 일은 일어나지 않을 것입니다.
환경 변수를 추가하려면 키에도 추가하면 됩니다.
from="10.23.5.32",environment="MYVARIABLE=whatever",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="/path/to/script" ssh-dss A........
그러나 이것이 제대로 작동하려면 PermitUserEnvironment
sshd 구성 파일에서 이 지시문을 "yes"로 설정해야 합니다. 이 작업을 수행할 수 없는 경우 해당 줄을 다음과 같이 변경할 수 있습니다.
from="10.23.5.32",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="export MYVARIABLE=whatever; /path/to/script" ssh-dss A........