Parola olmadan sudo kullanan bir uygulamayı nasıl çalıştırırım?


40

... ancak yönetici ayrıcalıklarına ihtiyaç duyan uygulamalar için hala gerekli olabilir mi?

Aşağıdakilere izin vermek için:

$ apache2ctl restart
httpd not running, trying to start
(13)Permission denied: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs

$ sudo !!
sudo apache2ctl restart             #no password asked
$                                   #works!

Başvuru için bu kurulum amazon en e3 örnekleri üzerinde gördüm

Herhangi bir fikir?


Bu, forumlarda sıkça kullandığınız programları belirlemek için ayrı bir dosya oluşturmayı ayrıntılandıran harika bir eğitimdir . Ve güvenlik nedeniyle iyi bir fikirdir.
Todd Partridge 'Gen2ly'

Yanıtlar:


51

Sudoers dosyasını düzenlemeniz gerekir. Başarının size daha az güvenli bir sistem sağladığı ve başarısızlığın sudo'yu kırabileceği bildirilir. HER ZAMAN sudoers dosyasını düzenleyin; sudo visudovisudo hataları denetler ve varsa bulunursa dosyayı kaydetmez.

Parola olmadan root olarak çalışmak için herşeye izin vermek kötü bir fikirdir, bu yüzden ihtiyacınız olan tek çalıştırılabilir dosyayı çalıştırmak için (apache2ctl); aşağıdakileri dosyanın en altına ekleyin:

YOURNAME ALL = NOPASSWD: /usr/bin/apache2ctl

Yolu seçerek, tamamen şifresiz sudo vererek, "ALL" ile çalıştırılabilir bir dosyaya geçebilirsiniz.

Kullanıcı adınız ve basın ile adınız değiştirin Ctrl+ Xkaydetmek ve çıkmak. Bir hata meydana gelirse, geri dönüş, düzenleme veya yine de kaydetme önerisi sunar.

Yürütülebilir dosyanın tam yolunu kullandığınızdan emin olun :
örn. /usr/bin/apache2ctlsadece yerine apache2ctl. Bu önemlidir, çünkü sudo yolu açıkça belirtilmeden, kullanıcının geçerli yolu üzerinde apachectl adlı programın root olarak çalışmasına izin verir.


3
Her normal kullanıcının Ubuntu sistemlerinde benzer adlı bir gruba sahip olması nedeniyle, normalde sorun olmayan, kullanıcı adınızdaki gruba%YOURNAME izin vereceğini unutmayın . Kullanıcıya izin vermek için % olmadan belirtin . YOURNAME
Daniel Werner

Daha yapıcı olmanın bir yolu var mı? (yalnızca çalıştırılabilir bazı fonksiyonlar)
3pic

1
Eski sonrası, ama kesinlikle (Aşağıdaki tüm hiçbir tartışmaya o verilen argümanlar ya belirli bir ana makine adına Sudoers' girişini (mümkünse) kısıtlayarak cevabını tamamlamak ve olur apache2ctlböylece gibi): YOURNAME YOUR-HOSTNAME = NOPASSWD: /usr/bin/apache2ctl <specific arg | "">. --- Her durumda man 5 sudoers, gidilecek referanstır.
Cbhihe

25

Bu sorunun asıl cevabı karmaşık olabilir çünkü sudo çok güçlüdür ve harika şeyler yapacak şekilde yapılandırılabilir. Bu, belgelerde ayrıntılı olarak açıklanmaktadır .

Kısa cevap sudo visudobir terminalde gerçekleştirilir. Eğer ilk kez visudo çalıştırıyorsanız, hangi editörü tercih ettiğinizi soracaktır. nano'nun genellikle kullanımı en kolay olduğu düşünülür, ancak en rahat / aşina olduğunuz editörü seçin. Kime erişmek istediğine karar vermen gerekecek; bu olabilir ALLherkes için (bir çok kötü bir fikir) , bir kullanıcı veya sistem grubunun. Gruplara% işareti eklenmiştir. Örneğin, steroid_userstüm komutlar için bir şifreye ihtiyaç duymadan herkese grup kök ayrıcalıkları vermek istiyorsanız, şunları eklersiniz:

%steroid_users ALL=(ALL) NOPASSWD: ALL

dosyanın sonuna kadar çıkın ve dosyayı kaydedin. Her şey yolunda giderse ve steroid_users grubunun üyesiyseniz sudo *some-command*, şifrenizi girmenize gerek kalmadan sorun çıkartabilirsiniz .

Giriş yaparken terminalinize erişimi olan herhangi birisinin - veya anahtar tabanlı kimlik doğrulaması için ssh kurulumunuz varsa ( veya daha da kötüsü) , şifresiz oturum açma oturumlarını etkinleştirmiş olduğunu - tüm sitenize eksiksiz ve sınırsız erişim sağladığını unutmayın. sistemi. Sisteminizde birden fazla kullanıcı varsa veya bu bir dosya sunucusuysa, tüm kullanıcıların dosyaları kök herhangi bir şey yapabileceği için risk altında olabilir !

Ayrıca, bir hata yaparsanız, visudo çıkacak ve hata mesajı verecek ve değişiklikleri dosyaya kaydetmeyecektir. Bu tamamen sudo kırılmasını önlemeye yardımcı olacaktır. Belgeleri gerçekten okumalısınız . Sudo, tüm sisteminizi ifşa etmeye gerek kalmadan, kullanıcılara işlerini yapmak için yeterince erişim sağlamak için tasarlanmıştır. Belirli komutlar için yalnızca parola ücretsiz erişim vermek avantajlı olabilir.

Umarım bu yardımcı olur.


İşe yaradı , bunu aldım ve askubuntu.com/questions/192050/… adresinden "sudo service sudo restart" kullandım ve bunların hepsini aktif Ubuntu oturumumda kullanabildim. Müthiş!
Patrick

5

Kullanıcı veya grubunuz için izin verilen komutların listesine NOPASSWD eklemek için '/ etc / sudoers' dosyasını (bunun için 'visudo' komutu vardır.) Düzenlemeniz gerekir. Eğer kullanıcı 'admin' grubundaysa - Aşağıdakilere ihtiyacınız var:

%admin ALL=(ALL) NOPASSWD: ALL

Https://help.ubuntu.com/community/Sudoers , btw adresini kontrol edin .


3

Nopasswd bayrağını kullanıcı listesine ekleyebilir, ancak soru sorulan tüm şifreleri ortadan kaldırmaz. Sadece ilki istenecek.

  1. Sudoer'leri düzenleyin: sudo visudo(sudo kullanmalısınız. Bu bir yönetici dosyasıdır.)
  2. Kullanıcıyı Yönetici Satırından sonra (sonunda) nopasswd bayrağıyla ekleyin. Örneğin:
    cyrex ALL = NOPASSWD: ALLveyacyrex ALL = (ALL) NOPASSWD: ALL

2
sudo visudo
%<GROUP> ALL = NOPASSWD: apache2ctl

veya

sudo visudo
%<GROUP> ALL = NOPASSWD: /etc/init.d/apache2

Sanırım bu işe yarar.

Ancak sudo şifresini çıkarırken dikkatli ol.


2
Güvenlik nedeniyle, ilk örnekte mutlak yolu belirtmelisiniz - mantıksız bir kullanıcı $ PATH'yi değiştirebilir ve root erişimini nitelenmemiş bir komut adıyla çalabilir.
bgvaughan

0

Şimdi basit cevap için! Hiçbir şeyi karıştırmanın ya da yüklemenizi zorlaştırmanın hiçbir yolu yoktur.

Sadece birkaç kez şifrenizi girin ve daha sonra tekrar girmek zorunda kalmayacaksınız! Bu, "root" grubuna yerel bir yönetici hesabı eklemenize izin verir, bu daha sonra tüm gruba "root" süper kullanıcı ayrıcalıklarına izin verecek bir şablondan açıklama yapılmaz. Bu prosedürle ilgili güvenlik kaygımı / çözümümü bu yazının sonraki bölümlerinde okuyabilirsiniz.

% username & kullanıcı adınızın global değişkenidir (istediğiniz kullanıcı adıyla değiştirin)

Adım 1: Bir terminal penceresi açın ve " sudo usermod -a -G root %username%" yazın

Adım 2: Sonra bunu kopyala / yapıştır ...

sudo sed -i 's/# auth       sufficient pam_wheel.so trust/auth       sufficient pam_wheel.so trust/g' /etc/pam.d/su`

2. Adım VEYA türü

sudo nano /etc/pam.d/su`

Satır 19'a git ve önce "#" yi kaldır # auth sufficient pam_wheel.so trust(bazıları için farklı bir satır numarası olabilir)

* İlk komut% username% 'nizi "root" grubuna ekler.

İkinci / üçüncü komutlar, "root" grubundaki tüm üyelerin bir şifre olmadan süper kullanıcı olmasına izin verirken, kullanıcının sadece "root" su kimlik doğrulaması için ayrıcalıklarına izin verir.


EndNote:

Etrafta uğraşma /etc/sudoers... 'su' onayının geçmesi gereken çok sayıda kontrol / denge var. Süper kullanıcı kimlik doğrulaması, tüm diğer giriş kimlik doğrulamalarıyla aynı pam.d prosedürünü kullanır. "/etc/security/access.conf", tcp / ip (192.168.0.1) iletişimi ve telnet hizmetleri (tty1 & tty2 & tty3 ... vb.) üzerinden erişim kontrolü düzenine sahiptir. Güvenlik endişeniz ise, endişeniz odadan çıkarken bilgisayarınıza dokunan birine karşı uzaktan / kod tehditlerine yönelik olmalıdır !!!

Paranoya için gıda (bunu sadece incelemeye yazmayın):

sudo sed -i 's/#-:ALL EXCEPT (wheel) shutdown sync:LOCAL/-:ALL EXCEPT (wheel) shutdown sync:LOCAL/g' /etc/security/access.conf

^ Bu sisteme ya da root üyesi olmayan herkes için konsola erişimi engeller. Bazen programlar, kullanıcı adlarını / sömürülen gruplarını yükler!


2
Bir güvenlik uzmanı değil, ancak sezgisel olarak biraz sayaç geliyor. Belirli bir uygulamanın sudo rafine edilmesinin "karmaşıklığından" kaçınmak için tek bir kullanıcının şifre olmadan belirli bir uygulamayı çalıştırmasına izin vermek için tüm grubun şifrelerini devre dışı bırakıyorsunuz, değil mi? Ve bunların hepsi ortak bir sunucuda mı? Senaryo temel hayatta kalma içgüdülerinizi devre dışı bıraktı mı? Güvenlik TASARIM TARAFINDAN KOMPLEKSİDİR. Unutma, bir soğan gibi. Katmanları var ve sizi ağlatıyor ... Tehlike altındaki sunuculardaki veri kaybı denklemin sadece bir parçası. Sisteminizden gelen bir bilgisayar korsanları saldırısına eşit saldırılar eşit derecede ciddi fakat çoğu zaman göz ardı
ediliyor

2
Sayaç sezgisel ve karşı sağduyulu: Sadece bir kurabiyeye ihtiyacı olan bir kullanıcı için tüm çerez kavanozunu açmak oldukça sorumsuz. Kullanıcıları sudoers listesine ekler ve sudoers dosyasını / dosyalarını düzenlemek yerine şifreleri girme gereksinimini kaldırırsınız. “Bir tabanca çocuklar için güvenli değilse, onlara bir kanon vermeyin.” -me
John
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.