Bir betiğin bir kısmını farklı (root olmayan) bir kullanıcı olarak çalıştırmanın bir yolu var mı? Eğer yardımcı olursa, farklı bir kullanıcı olarak çalıştırılacak olan bölüm betiğin sonunda ortaya çıkar.
Düzenleme:
İşletim Sistemi -> Ubuntu 9.04
Bir betiğin bir kısmını farklı (root olmayan) bir kullanıcı olarak çalıştırmanın bir yolu var mı? Eğer yardımcı olursa, farklı bir kullanıcı olarak çalıştırılacak olan bölüm betiğin sonunda ortaya çıkar.
Düzenleme:
İşletim Sistemi -> Ubuntu 9.04
Yanıtlar:
Koddaki sudo komutunu kullanın.
Şeklinde:
sudo -u username command
sudo komutu çalıştırır komutu kullanıcı olarak kullanıcı adı .
Senaryo root olarak çalıştırılıyorsa, şifre isteyeceğini sanmıyorum. Aksi halde, bu makalede sudo'nun bir komut satırında parola ile nasıl kullanılacağı anlatılmaktadır ? , ve bu makalede sudo şifresiz nasıl kullanılacağı anlatılmaktadır ?
chmod +x script.sh
ve sonra sadecesudo -u username script.sh
i
kullanıcının ortamını elde etmek istiyorsanız bu seçeneği de ekleyin
Bu cevap iyidir, ancak sunucu hatası önerisi biraz tehlikelidir - herkesin kök olarak herhangi bir şeyi çalıştırmasına izin verir! Bu yüzden burada gönderiyorum çünkü yorumu formatlayamıyorum.
İhtiyacınız olan izinleri olabildiğince tam olarak verebilmek için visudo kullanmanızı tavsiye ederim. Şunun visudo
gibi bir satır yazın ve ekleyin:
username hostname = NOPASSWD: /full/path/to/command1, full/path/to/command2
Aynı şeyi birçok ana bilgisayarda çalıştırmanız gerekiyorsa, şunu açabilirsiniz:
username ALL = NOPASSWD: /full/path/to/command1, full/path/to/command2
Ama ben de * kullanmazdım *:
username ALL=(ALL) NOPASSWD: ALL
veya kullanıcı adı hostname = ALL
Sudoer adam sayfası kanlı detaylarını çok
username
adıyla değiştirin ). Çalıştırmak istediğiniz yürütülebilir dosya yalnızca belirli bir kullanıcı tarafından çalıştırılabilirse, bu da iyidir - bu kullanıcı adını sudo -u username commandline
komut dosyasının satırına iletin.
# I = beğen:
#test if running bash as a different user works
sudo -u nobody bash -c : && RUNAS="sudo -u nobody"
echo 1: $USER
#Runs bash with commands between '_' as nobody if possible
$RUNAS bash<<_
echo 2: \$USER
_
echo 3: $USER
# ./koşmak
1: root
2: nobody
3: root
bundan emin değilsiniz, ancak SADECE bu betiğin sonunun farklı bir kullanıcı olarak çalışmasını istiyorsanız su someuser
, betiğin sonundan önce ekleyebilirsiniz .
Bir şey mi kaçırıyorum?
Umarım yardımcı olur,
Saygılarımızla
Bu şekilde, bir betiğin sonu farklı kullanıcı (root) tarafından yürütülür. Lütfen $[LINENO+2]
ve notlarını not edin exit $?
. Bunların betiğin sonunu sadece bir kez çalıştırmak ve sudo
çağrının çıkış kodunu korumak için yapılması gerekir .
#!/bin/bash
echo $USER
# pipe the rest of this script via a sudo call
tail -n +$[LINENO+2] $0 | exec sudo bash
exit $?
echo $USER
exit 1