암호없이 다른 사용자로 스크립트를 실행하는 방법은 무엇입니까?


145

user2로 실행해야하는 script.sh가 있습니다. 그러나이 스크립트는 내 응용 프로그램의 user1에서만 실행할 수 있습니다.

다음 명령을 실행하고 싶습니다.

su user2 -C script.sh

암호없이 실행할 수 있습니다.

또한 user1에서는 user2에서만 script.sh를 실행할 수 있기 때문에 매우 제한적이기를 원합니다.

sudoers 파일 로이 작업을 시도했지만 몇 시간 동안 노력한 끝에 끝없이 혼란스러워졌습니다.

누군가 sudoers와 같은 일반적인 것이 아니라 어떻게 이것이 달성 될 수 있는지에 대한 명확한 예를 제공 할 수 있다면 크게 감사하겠습니다.


15
나는 특히 가까운 곳에 없습니다. 이것은 특정 방식으로 시스템을 프로그래밍하는 방법에 대한 질문입니다. 따라서 그것은 쉘 프로그래밍에 관한 것이며 프로그래밍에 관한 질문을위한 SO의 범위 내에 있습니다. 많은 사람들이 이것을 주제가 아닌 것으로 보아 다운 투표를하지 않는 것이 분명합니다. 질문과 답변에는 모두 많은 투표가 있습니다.
Jonathan Leffler

답변:


121

전화 visudo해서 이것을 추가하십시오 :

user1 ALL=(user2) NOPASSWD: /home/user2/bin/test.sh

명령 경로는 절대해야합니다 ! 그런 다음 껍질 sudo -u user2 /home/user2/bin/test.sh에서 전화하십시오 user1. 끝난.


3
우분투 도움말 에 sudoers 형식에 대한 좋은 설명이 있습니다. sudoers의 맨 페이지는 추악합니다 :(
Mifeet

그렇다면 모든 사용자가 user1 대신 user2로 실행하는 방법은 무엇입니까?
jiggunjer

193

달리기를 시도하십시오.

su -c "Your command right here" -s /bin/sh username

해당 사용자로 sudo 권한이있는 경우 명령이 username으로 실행됩니다.


17
다음과 같이 전체 sudo 권한을 가진 일반 사용자로 작동했습니다.sudo su -c "Your command right here" -s /bin/sh otheruser
rubo77

5
모든 Mac 사용자를위한 참고 사항입니다. 구문은 약간 다릅니다 su username -c "command".
NHDaly

1
screen다른 사용자 로 시작하려고하면 도움이 될 것입니다 -linuxquestions.org/questions/linux-software-2/…
Mint

2
경우 username(또는 질문에 user2) 암호 자체를 가지고,이 그것을 위해 프롬프트를 생략 할 수 없습니다. 다른 대답은 user1과 user2 모두 암호가 필요하지 않습니다.
phil294

1
`su -c "Your command right here" -s /bin/sh username`

위의 명령은 정확하지만 selinux가 적용되는 경우 Red Hat에서는 cron이 다른 사용자로 스크립트를 실행할 수 없습니다. 예; execl: couldn't exec /bin/sh execl: Permission denied

setroubleshoot 및 setools를 설치하고 다음을 실행하여 허용해야했습니다.

yum install setroubleshoot setools
sealert -a /var/log/audit/audit.log
grep crond /var/log/audit/audit.log | audit2allow -M mypol
semodule -i mypol.p
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.