Aynı komut dosyasındaki komutları yürütmek için bir bash komut dosyasında kullanıcı kimliği nasıl değiştirilir / chage edilir?


15

Bir komut dosyası içindeki kullanıcı kimliğini (yükleme işleminin bir parçası olarak kök olarak yürütülür) harici bir komut dosyası çağırmadan yürütmek ve sonra rootdiğer komutları çalıştırmak için geri döndürmenin bir yolu var mı?

Çeşit:

#!/bin/bash
some commands as root
SWITCH_USER_TO user
some commands as user including environment variables checks, without calling an external script
SWITCH_USER_BACK
some other stuff as root, maybe another user id change...


Bu yanıta bir göz atmalısınız stackoverflow.com/a/17758312/1243547
Klaus

Yanıtlar:


29

Hayır. Ama sudobir kabuk çalıştırmak ve komutları beslemek için bir yorumlu metin kullanmak için kullanabilirsiniz.

#!/bin/bash
whoami
sudo -u someuser bash << EOF
echo "In"
whoami
EOF
echo "Out"
whoami

Bu kesinlikle işleri aynı senaryoda bir arada tutma işini yapar ve ayrıca her şey
EOF'dan

Bu cevap, bu sorunun kopyaladığı sorudaki tüm cevaplardan daha iyidir .
Dan Dascalescu

1
Merak ediyorum, eğer bunu yapacak olsaydım, EOF kullanmazdım ve bunun yerine heredoc'un adını SUDO olarak değiştirirdim. Bu şekilde içeren kod içinde süper kullanıcı olarak çalışıyorum hatırlıyorum.
Joe Heyming

Bazı nedenlerden dolayı, heredoc komutunda ayarın değiştiği, vars ayarlanmadığı anlaşılıyor. Eğer dener BLA="something"ve sonra örneğin:, echo "In: $BLA"BLA boş görünüyor
Efren
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.