Standart bir istemci terminalinden yönetici ayrıcalıklarına sahip bir komut dosyası çalıştırma


1

Tekerleği yeniden icat etmeye çalıştığım güçlü hislerim var, ancak mevcut bir çözüm bulamadan biraz zaman geçirdim.

Birkaç sudos ile zaten çalışan bir kabuk komut dosyası var. İlk hedefi yönetici kullanıcılardı, bu yüzden her şey yolundaydı. Ama şimdi standart kullanıcılar için bir barikatı vuruyorum. Sudo işe yaramaz ve bu betiği herhangi bir makinede herhangi bir zamanda çalıştırmam gerektiğinden, sudoer'leri düzenlemek bir seçenek değildir.

Bu betiği, yönetici kullanıcısı ve parola için bir kez sorması ve ardından bu kimlik bilgilerini gerektiği kadar çalıştırmak için kullanması için nasıl yeniden yazarım? Özellikle yapmaya çalıştığım şey, şifrenizi bir satırlık şifreyle beslemektir, ancak güvenlik riski bir yana, hiçbir zaman 'echo | su ... ', forumlarda görüldüğü gibi.

Teşekkürler


Script zaman aşımından uzun sürüyor sudomu?
yokuş yukarı

Sorun bu değil, standart bir istemci terminalinden bir komut dosyasındaki herhangi bir sudo tetikleyecektir 'adı sudoers dosyasında değil. Bu olay bildirilecek '
Arno Mad

Bu doğru değil. sudoersDosyada bulunmayan herhangi bir kullanıcı hatayı tetikleyecektir. Standart bir kullanıcı veya yönetici olarak giriş yapmış olmanız önemli değil.
Allan,

Doğru, aşırı basitleştirdim. Normal bir macta standart kullanıcılar sudo'larda değiller, yöneticiler de öyle. Öyleyse asıl soru, nasıl sudo kullanmaktan kaçınmak?
Arno Mad

1
Bu da doğru değil. On tüm Mac'ler, Yöneticiler içindedir wheelgrubunda olduğu içinde sudoersdosyanın. sudoersBirisi tarafından açıkça belirtilmedikçe dosyada hiçbir kullanıcı, yönetici veya standart yoktur.
Allan,

Yanıtlar:


2

Genel olarak konuşursak, komut dosyasını bir yönetici yürütüyormuş gibi yazarsınız ve kullanıcının çalıştırmak için kök ayrıcalıklarına sahip olup olmadığını kontrol edin. Komut dosyasının kök ayrıcalıklara ihtiyaç duyduğu tüm bash komut dosyalarımda, kullanıcının doğru ayrıcalıklara sahip olup olmadığını doğrulayan aşağıdaki kod snipit'im var:

# Validates that user is root; exits if not
echo "Checking Root Privileges"
if [ $(id -u) -ne 0 ]
  then exit 1;
  else echo "User is root";
fi

Temel olarak, tüm UIDyaptığı şu anda oturum açmış kullanıcı için 0 olduğunu kontrol etmektir . Komut satırında deneyebilirsiniz:

$ id -u                # My login
503

$ sudo id -u           # Root privileges
0

Senaryoyu çalıştırıyorum ....

Komut dosyasını yönetici ayrıcalıklarına sahip olmayan bir giriş hesabından çalıştırabilmenizin birkaç yolu vardır:

  • onları sudoersdosyaya ekleyin veya wheelgruba ekleyin
  • bunları sudoimtiyazları olan bir gruba (tekerleğin yanında) ekleyin
  • betiği ssh ile yönetici kimlik bilgileriyle uzaktan çalıştır
  • betiği bir Başlatma Daemon'u olarak bir başlatılmış plist olarak çalıştırın (root olarak çalışır)
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.