Dış bağımlılıkları yükleyen bir komut dosyası (aslında komut dosyaları ve makefile birleşimi) yazıyorum: bazı apt-getkomutlar, bazı gitklonlama, oluşturma, yükleme, gruplara kullanıcı ekleme, ...
Bu komut dosyalarındaki işlemlerin bazıları süper kullanıcı izinleri gerektirir, bazıları gerektirmez.
Şimdiye kadar sudo ile tüm make işlemini çalıştırdım, ancak bazı dezavantajları var:
gitkopyaladığım depolarrootsahibi olarak alırım , yani daha sonrasudoveyachown- gruplara kullanıcı ekleyen komut dosyaları,
whoamigeri döndükten sonra hangi kullanıcının ekleneceğini bilmiyorroot
Yalnızca kullanıcı gerektiren komutları süper kullanıcı olarak çalıştırmanın en iyi yolu nedir? İdeal olarak, işlem yine de sudoşifremi girmemi gerektiriyor , ancak yükleme işleminin başlangıcında sadece bir kez. Sonunda unutur, ama o zamana kadar her zaman saklar (birkaç saat sürebilir).
Çevrimiçi bulduğum çözümler şunları içerir:
sudo -vama senaryoyu doğru anlarsam bu zaman aşımına uğrar. Betiğim birkaç saat çalışıyor olabilir- ile komut dosyası çalıştıran
sudo, ancak do komutlar değil ile superuser gereksudo -u $(logname) <command>. Şimdi yaptığım şey bu, ama tam tersi olması gerektiği gibi geliyor.
İdeal olarak, betiğimin:
- süper kullanıcı kimlik bilgilerini sor
- giriş yapan kullanıcı olarak normal komutları çalıştır
- adımda girilen kimlik bilgileriyle sudo komutlarını çalıştırın
sudo -ksüper kullanıcı oturumunu kapatmak için
su $SUDO_USER -c commandolarak çalıştırın ve normal kullanıcı olarak çalıştırılan komutlar için kullanın .
SUDO_USERortam değişkenini kontrol edebilir . Varsa, sudo'yu çağıran kullanıcının kullanıcı adını içerecektir. Böylece (root olarak) $ SUDO_USER: $ SUDO_GID $ dosyalarınızı düzenleyebilirsiniz. Benzer şekilde, bu değişkenleri kontrol edebilirsiniz, böylece adduser komutlarınız hangi kullanıcıyı ekleyeceğinizi bilir.