특정 사용자가 비밀번호 없이 다른 사용자와 함께 실행해야 하는 bash를 실행하는 방법

특정 사용자가 비밀번호 없이 다른 사용자와 함께 실행해야 하는 bash를 실행하는 방법

2명의 사용자가 있습니다. 비밀번호 없이 test1만들었습니다 . 권한과 비밀번호가 있습니다 . /sbin/nologintest2sudo

/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해야 할 수도 있고 필요하지 않을 수도 있습니다 . 이 경우 사용자가 실행하는 명령은 다음과 같습니다.-Hsudosudotest1

sudo -Hu test2 /data/tempWork/fazitst

su - test2환경 설정이 런타임 시 와 정확히 동일해야 하는 경우 -i이 옵션이 필요합니다.sudo

sudo -iu test2 /data/tempWork/fazitst

관련 정보