MacOS Sierra'da çalışıyor: Ruby programım var - setup.rb - Yeni bir Mac'te bir geliştirme ortamı oluşturmak için.
Kullanarak programı başlatmam gerekiyor sudo ruby setup.rb Çünkü gerektiren bazı şeyler yapar sudo.
Program, tembel bir programcının başka bir şey yapmak istemesi için yeterince uzun, belki bir fincan kahveyi tokatlamak için yeterince uzun olan (yaklaşık 2 dakika) oldukça uzun süren görevlerle başlar.
İşte benim bilmecem: 2 dakikalık görevden sonra kullanmam gerekiyor security Anahtarlıkla etkileşime giren komut. Bu komut benden anahtarlığın şifresini isteyecek, bu nedenle giriş beklediğinden dolayı yakut programını durduracak.
Anahtarlık parolasını şifreye geçirebileceğimi biliyorum security komutunu kullanarak -p <PASSWORD> bayrağı.
Çoğu (tümü?) Anahtarlık, macOS giriş bilgileriyle aynı şifreyi kullanacak şekilde ayarlandığı için (en azından benim makine paylaşımım ...), Kullanıcının başlamak için girdiği şifreyi iletmek istiyorum. setup.rb -e security Komut. Mümkün mü?
Hem çirkin hem de çirkin bir çözüm emniyetsiz doğrudan sudo şifresiyle kullanıcıyı doğrudan yönlendirmek, ancak kendi istemi kullanarak, şifreyi bir değişkende saklamak ve sonra security komutunu kullanarak -p bayrağı. Güvenli olmasının dışında, kullanıcının şifreyi iki kez kullandığı anlamına gelir. Fakat bu işi yapacak çünkü kullanıcı bilgisayardan bir fincan kahve içebilir setup.rb Tüm girişini istemeden işlerini yapabilir.
Elbette daha iyisini yapabiliriz?
security Komut.
security önce bir kilit dosyasına dokunun, uzun ilk betiğin arkaplanı ve güvenlik kodunun geri kalanına devam etmeden önce ilk komut dosyasının kilit dosyasını kaldırmasını bekleyin.
sudo scriptbetiğin içinden ("olabilir" çünküsudoyapılandırma, kullanıcıdan bir parola bile istenmeyebilir). Belki taşıyabilirsinsecurityKomut dosyanızın başına komutunu verin ve sonucu daha sonra kullanmak üzere saklayın. Veya arka planda uzun koşucuları çalıştırmak&?