Komut dosyası şifresiz başka bir kullanıcı olarak nasıl çalıştırılır?


146

User2 olarak çalıştırılması gereken script.sh var. Ancak, bu komut dosyası uygulamamda yalnızca kullanıcı1 altında çalıştırılabilir.

Aşağıdaki komutun çalıştırılmasını istiyorum:

su user2 -C script.sh

ancak şifresiz çalışabilir.

Ayrıca bunun çok kısıtlayıcı olmasını istiyorum, çünkü user1'de kullanıcı2 altında yalnızca script.sh çalıştırılabilir ve başka hiçbir şey çalıştırılamaz.

Bunu sudoers dosyasıyla yapmayı denedim ve saatlerce denedikten sonra kafam karıştı.

Birisi bunun nasıl başarılabileceğine dair açık bir örnek sunabilirse (sudoer kullanmak gibi genel bir şey yerine), bu çok takdir edilecektir.


16
Özellikle kapanışta değilim. Bu, sistemin belirli bir şekilde nasıl programlanacağıyla ilgili bir sorudur; bu nedenle, kabuk programlama ile ilgilidir ve programlama ile ilgili sorular için SO kapsamındadır. Açıktır ki, bazı insanlar bunu konu dışı olarak görmezler, bu da reddedilmelidir; soru ve cevapların hepsinde hatırı sayılır sayıda artı oy var.
Jonathan Leffler

Yanıtlar:


122

Arayın visudove şunu ekleyin:

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

Komut yolları mutlak olmalı ! Sonra sudo -u user2 /home/user2/bin/test.shbir user1kabuktan arayın . Bitti.


3
Bir yoktur Sudoers güzel açıklama Ubuntu yardımına formatında.
Sudoers için kılavuz

peki bu, tüm kullanıcılar için yalnızca kullanıcı1 yerine kullanıcı2 olarak çalıştırılacak şekilde nasıl ölçeklenir?
jiggunjer

193

koşmayı dene:

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

Bu, o kullanıcı olarak sudo için izinleriniz olması koşuluyla, komutu kullanıcı adı olarak çalıştıracaktır.


17
Bunun gibi tam sudo haklarına sahip normal bir kullanıcı olarak çalıştı:sudo su -c "Your command right here" -s /bin/sh otheruser
rubo77

5
Sadece bir not herhangi mac kullanıcıları için, görünüşe sözdizimi biraz farklıdır: su username -c "command".
NHDaly

1
screenBaşka bir kullanıcı olarak başlamaya çalışıyorsanız, bu yardımcı olabilir - linuxquestions.org/questions/linux-software-2/…
Mint

2
eğer username(veya söz konusu, user2) bir şifre kendisi vardır, bu onun için istemi atlamak için izin vermeyecektir. diğer yanıt şu anlama gelir: parola gerekmez, hem kullanıcı1 hem de kullanıcı2.
phil294

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

Yukarıdaki komut doğrudur, ancak Red Hat'ta selinux zorlarsa cron'un başka bir kullanıcı olarak komut dosyalarını çalıştırmasına izin vermeyecektir. misal; execl: couldn't exec /bin/sh execl: Permission denied

Setroubleshoot ve setools'u kurmam ve buna izin vermek için aşağıdakileri çalıştırmam gerekiyordu:

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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.