비밀번호를 입력하지 않고 쉘 스크립트에서 사용자 전환

비밀번호를 입력하지 않고 쉘 스크립트에서 사용자 전환

터미널을 사용하여 쉘 스크립트를 실행하고 있습니다 userA. 이 셸 스크립트 중간에 userBuser 로 전환을 사용하는데 su, 이 경우 비밀번호를 입력해야 userB하고, 터미널을 통해 수동으로 비밀번호를 입력해야 합니다. 기기 옆에 서서 수동으로 입력할 필요 없이 자동으로 비밀번호를 입력할 수 있는 방법이 있나요? 이 스크립트에는 루프가 있으므로 userB입력하라는 암호를 입력하는 터미널을 계속 쳐다보고 싶지 않습니다 . 아니면 터미널이 수동으로 입력할 때까지 기다리지 않도록 쉘 스크립트에 비밀번호를 입력하는 방법이 있습니까? 누구든지 이 작업을 수행하는 방법을 제안할 수 있습니까?

답변1

sudo또한 NOPASSWD/etc/sudoers 구성의 특정 항목을 허용합니다(해당 항목에 대한 액세스 권한이 있는 경우). 좋다:

userA ALL = (userB) NOPASSWD: ALL

이렇게 하면 사용자 A가 비밀번호 없이 사용자 B에 대한 모든 액세스 권한을 부여하게 됩니다. 아마도 userA가 화면에서 멀리 떨어져 있을 때 화면을 잠글 수 있다고 신뢰할 수 있는 경우에만 사용해야 할 것입니다.

또는 userA에게 특정 스크립트에만 액세스 권한을 부여할 수도 있습니다. 예를 들어:

userA ALL = (userB) NOPASSWD: /home/userB/scripts-for-userA/

이를 통해 사용자 A는 사용자 B로서 /home/userB/scripts-for-userA/ 디렉터리의 모든 명령을 실행할 수 있습니다. 그러나 보안은 여전히 ​​이러한 명령에 따라 달라집니다.

답변2

sudo~ 할 것이다은닉처비밀번호. 하지만 이것이 옳은 일인지 자문해 볼 필요가 있습니다. 귀하와 사용자 B가 동일한 파일에 액세스할 수 있도록 권한을 변경하는 것이 더 낫습니까?

답변3

UserB로서 발생해야 하는 작업을 UserB에 적합한 별도의 스크립트로 이동할 수 있습니다. 이렇게 하면 해당 포괄적 권한을 원하지 않는 경우 사용자 A에서 사용자 B로 su를 열 필요가 없습니다.

관련 정보