2명의 사용자가 있습니다. 비밀번호 없이 test1
만들었습니다 . 권한과 비밀번호가 있습니다 . /sbin/nologin
test2
sudo
/data/tempWork/fazitst
에 있어야 하는 스크립트가 있습니다 test2
. 이제 이 스크립트를 실행하고 싶지만 test1
에 있어야 합니다 test2
.
나는 이것을 시도합니다 test1
:
/bin/su -c "/data/tempWork/fazitst " - test2
그러나 그것은 작동하지 않았습니다. 이 명령을 응용 프로그램에서 실행하고 있는데 사용할 수 없기 때문에 ssh
제대로 디버깅할 수 없습니다. 로그가 없습니다. 루트로 이 명령을 시도했는데 작동했습니다.
하지만 비밀번호가 필요한 것 같아요. 그러면 비밀번호 없이 test1
스크립트를 어떻게 실행 하나요?test2
답변1
이것이 바로 sudo
디자인의 목적입니다.
먼저 루트 액세스 권한이 있는 사람은 다음과 같은 구성 줄을 만들어야 합니다 /etc/sudoers
(또는 /etc/sudoers.d/*
OS 버전이 지원하는 경우).
test1 ALL=(test2) NOPASSWD: /data/tempWork/fazitst
이렇게 하면 사용자 test1
( ALL
파일 복사본을 사용하는 호스트에서 ) 에게 암호 요청 없이 sudoers
임의의 명령줄 인수(또는 전혀 없음)를 사용하여 사용자로서 명령을 실행할 수 있는 권한이 부여됩니다.test2
/data/tempWork/fazitst
그런 다음 사용자는 test1
다음 명령을 사용하여 실행할 수 있습니다.
sudo -u test2 /data/tempWork/fazitst
$HOME
명령을 실행할 때 환경 변수가 사용자의 홈 디렉터리를 가리켜야 하는 경우 운영 체제 버전의 기본 구성 에 따라 명령에 이 옵션을 추가 test2
해야 할 수도 있고 필요하지 않을 수도 있습니다 . 이 경우 사용자가 실행하는 명령은 다음과 같습니다.-H
sudo
sudo
test1
sudo -Hu test2 /data/tempWork/fazitst
su - test2
환경 설정이 런타임 시 와 정확히 동일해야 하는 경우 -i
이 옵션이 필요합니다.sudo
sudo -iu test2 /data/tempWork/fazitst