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


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.