Bir programı “sudo” olmadan root olarak nasıl çalıştırırım?


10

OS X'te yalnızca root olarak çalıştırılabilen belirli bir ikili programım var.

sudoHer başlattığımda ve parolayı yazarken yoruldum ve parola sormadan düzenli olarak çağırdığımda otomatik olarak kök olarak çalışmasını istiyorum.

Programın sahibi kök ve grubu tekerleği.

Ben chmod ug+sroot / wheel yürütme üzerine userid ve groupid ayarlamak için çalıştı , ama sudo olmadan programı çalıştırdığınızda hala sadece sudo veya root olarak çalışabilir şikayet ediyor.


Belirli bir zamanda veya bir olay meydana geldiğinde çalıştırılabilir mi?
user151019

9
Eski zaman unix gurusları, düzenli olarak elle sadece köklü bir işlem başlatmanın yanlış yaptığınız anlamına gelir. Bu otomatikleştirilebilecek bir şey mi? Yoksa bir daemon olarak mı çalışıyorsunuz? Daha fazla detay, farklı türden çözümler için öneriler getirebilir.
dmckee --- eski moderatör yavru kedi

Program aslında root'a mı ait? Setuid / gid dosyanın kullanıcı / grubunu kullanır.
Daniel Beck

2
… "Daha fazla ayrıntı", bu programın ikili dosyasının NFS'ye bağlı bir birimde olup olmadığı ve nosuidbağlama seçeneğini kullanıp kullanmadığınız gibi şeyleri de içerir .
JdeBP

@ dmckee çok sayıda mac kullanıcısı iş istasyonlarında sunucu yazılımı çalıştırıyor ve gerçekten ihtiyaç duymaması gereken şeyler için kök gerektiriyor ... ama kök olmadan çalışmak için bir LAMP yığını yeniden yapılandırmak eşek için bir acı. Öte yandan, günde 20 kez apache'yi yeniden başlatmak ve her seferinde sudo yazmak da kıçta bir acıdır. Bu basit bir çözüm.
Abhi Beckert

Yanıtlar:


2

Yürütmeye çalıştığınız programın bir kabuk komut dosyası değil, aslında bir ikili olduğundan emin misiniz? Kabukların çoğu suid senaryolarını görmezden gelir, çünkü güvenli bir şekilde yapmak gerçekten çok zordur. Kontrol etmenin kolay bir yolu file, programdaki komutu kullanmaktır .


17

Sorununuza yarım çözüm:

sudoers dosyasında aşağıdakileri ekleyin:

username ALL= NOPASSWD: /path/to/command

Sonra komut satırından şunu yazabilirsiniz:

sudo command

ve şifrenizi sormadan komutu çalıştırır. Bu komut root olarak çalışacaktır.

Unutmayın, kullanıcı adını gerçek kullanıcı adınızla değiştirmeniz gerekir.


En iyi cevabı en altta bulmak hayretler içinde. Teşekkür ederim!
CDR

FYI, diğer yarıyı çözmek için (sudo komutunu yazmak zorunda kalmadan) komutta sudo içeren bir kabuk takma adı oluşturun (surm = sudo rm "$ @" gibi)
Walter

4

Eğer gerçekten herhangi bir nedenle daemon olarak çağırmak yapamıyorsanız (bu soru o örneğe ilgili olacaktır) , bu yöntem olabilir birlikte saldırıya uğrayacaktır, ama oldukça kirli ve tüm de güvenli.

Kavram, bir AppleScript ile başlatmaktır. İlk önce işlemi komut satırından nasıl çağıracağınızı bilmeniz gerekir (bu zaten sudo kullanıyorsanız, hepinizin ayarlanmış olması gerektiği anlamına gelir). Bu işlemi do shell scriptkomutu kullanarak başlatacaksınız ve sudo kullanmak yerine kimlik bilgilerinizi AppleScript'e yazacaksınız:

do shell script "/path/to/your/executable/here" user name "me" password "mypassword" with administrator privileges

Bu güvensizlik konusunu tekrarlıyorum : BU YÖNETİCİ KREDİLERİNİZ DÜZ METİNDE SAKLANACAK. Mümkünse, bunu bir LaunchDaemon olarak arka planlamak için bir yol bulmalısınız.



2

OSX üzerinde varsayalım / usr / local / bin / ProgramAdınız içinde konum olduğunu varsayalım ... Bu sorunu çözmek için aşağıdaki komutu, Dosya kökleri sadece dosyaların kendisi yerine dosya hiyerarşileri için Kullanıcı Kimliği / Grup Kimliği değiştirmek için .

sudo chown -R $(whoami) /usr/local/bin/

... sonra Terminal'de programınızı çağırınName, $ Programınız


Benim sorunum yüklü programlar uygun izinleri olmadan yüklendi, bu yüzden bu programların dizinleri üzerinde koştu ve şimdi onlar iyi w / o sudo çalıştırın. Teşekkürler!
atwixtor

0

Yapabilirsin

sudo tcsh

bu da sizi bir kök kabuğa koyacaktır.


0

programın kendisi ID = 0 ile çalışıp çalışmadığını kontrol ediyor gibi görünüyor


1
… Tabii ki set-UID süper kullanıcısı ise (yukarıda belirtilen endişeleri bir kenara bırakarak) ne olacaktır. Muhtemelen söylemeye çalıştığınız program, sadece etkili UID 0'dan ziyade gerçek UID 0'ı kontrol ediyor.
JdeBP

-1

Yapabilirsin sudo chown YOUR-USERNAME-HERE BINARY-NAME-HERE.

Yine de, dmckee'nin yorumuna tamamen katılıyorum.


Bu her şeye nasıl yardımcı olabilir? ⁠
Scott
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.