Sudoers dosyası, kullanıcı için NOPASSWD'yi etkinleştir, tüm komutlar


142

önsöz

Bu, Sudoers dosyası ve genel olarak sudo komutuyla ilgili oldukça karmaşık bir sorudur.

NOT: Bu değişiklikleri yalnızca öğrenme amacıyla kullandığım Ubuntu Desktop 13.04 çalıştıran özel bir makinede yaptım. NOPASSWD sudo'yu etkinleştirmenin çok büyük bir güvenlik riski olduğunu biliyorum.

Soru

Başlangıçta, sudoers dosyasına yaptığım tek değişiklik (/ etc / sudoers) bir satırdı, 'nicholsonjf' nin tüm komutları sudo ile bir parola girmek zorunda kalmadan çalıştırmasını sağlayan bir kullanıcı özelliği oldu (nicholsonjf ile başlayan satıra bakın) '):

# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL
nicholsonjf    ALL=NOPASSWD: ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d

Ancak, bu işe yaramadı ve 'nicholsonjf' komutunu her çalıştırdığımda hala şifrem istendi. Sudo komutlarını yalnızca 'nicholsonjf' olarak çalıştırmaya başlayabildiğimde, 'nicholsonjf' sudo ve admin gruplarından kaldırılmıştı.

Bunun neden işe yaradığını kimse açıklayabilir mi?

Çünkü 'nicholsonjf' kullanıcısı, 'nicholsonjf' kullanıcı spesifikasyonunu geçersiz kılan iki grup 'admin' ve 'sudo' spesifikasyonundan (aşağıda sudoers dosyasında görüldüğü gibi) sudo haklarını miras alıyordu. yapılandırma dosyası?


7
Not: ALL = NOPASSWD: ... TÜM yoksa çalışmıyor: ALL = (ALL) NOPASSWD TÜM olmak zorunda
André Verwijs


Yanıtlar:


164

Eklediğiniz satır geçersiz kılındı. Kimden man sudoers:

Bir kullanıcı için birden fazla giriş eşleştiğinde, sırayla uygulanır. Birden fazla eşleşmenin olduğu yerlerde, son eşleşme kullanılır (bu, en özel eşleşme olması gerekmez).

Davanızda nicholsonjfgrubun bir üyesiydi, bu sudoyüzden onun için bu çizgi uygulandı:

%sudo   ALL=(ALL:ALL) ALL

Girdileri geçersiz kılmak istiyorsanız /etc/sudoers, yeni girişleri sadece bunlara koyun.

Yeni giriş şöyle görünmeli

myuser ALL=(ALL) NOPASSWD: ALL tek bir kullanıcı için veya

%sudo ALL=(ALL) NOPASSWD: ALL bir grup için.


6
Tam bir çözüm için NOPASSWDbu cevapta bir şeyler görmek istiyorum ...
Daniel Alder

22
Bence çözüm şöyle olmalı:%sudo ALL=(ALL) NOPASSWD:ALL
Daniel Alder,

3
@DanielAlder: Sorunun açıklama çizgisi nicholsonjf ALL=NOPASSWD: ALLdoğru. Cevapta açıkladığım gibi sadece yanlış bir yerdeydi. ------ RunasŞartname - sizin durumunuzda (ALL)- isteğe bağlıdır. Belirtimi çıkarırsanız, komutları olduğu gibi çalıştırabilirsiniz, rootkullanamazsınız -uve -gseçeneklerini kullanabilirsiniz sudo.
pabouk

Bu, birden çok kullanıcıya şifresiz erişim sağladığı için daha kötü bir güvenlik riskidir. Bu sizin kişisel PC'niz ise o zaman önemli değil - belki. Sadece kişisel çizgiyi taşıyabilirdim.
Mark Williams,

4
Debian / ubuntu bazlı bir şey kullanıyorsanız, düzeltmeden ziyade bir ekleme (genellikle uygulanabilir, başka yerde görülemez) Paket yöneticisi tarafından yönetilecek.
Aquarion

119

Tek bir kullanıcı için, bu satırı sudoerskullanarak dosyanızı sonuna ekleyin.sudo visudo

superuser ALL=(ALL) NOPASSWD: ALL

Bir grup için

%supergroup  ALL=(ALL) NOPASSWD: ALL

8
Bu cevabı okumadan önce yaptım %sudo ALL=NOPASSWD: ALLve işe yarıyor. Genişletilmiş Backus-Naur Formunu anlamak gerçekten zor olan tek kişi ben miyim?
Vince

4
@Vince Komutunuzu kullandığınızda sudosudo ayrıcalıklarına sahip kullanıcı olarak parola olmadan yapamam . Örneğin sudo -u root -içalışır, ama sudo -u git -iolmaz.
NeverEndingQueue

Bu, OP'nin sorusunu cevaplarken, çoğu insanın Google'a bakarken bu sayfaya ulaştığı şey değil, kabul edilenden çok daha faydalı bir cevap.
Mahmud Al-

3

O kullanıcı kullandığında bir şifre geçerli kullanıcı istemi asla To sudodo

echo "$USER ALL=(ALL:ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/dont-prompt-$USER-for-password

Bu, adında bir dosya oluşturacak /etc/sudoers.d/dont-prompt-<YOUR USERNAME>-for-sudo-passwordve bu komutu koştuğunuz kullanıcının, komutu yürütürken kendi parolasını girmesinin istenmeyeceği anlamına gelecektir sudo. Yine de sizden Ubuntu Yazılım grafik uygulamasından bir şeyler yüklemek gibi diğer bağlamlarda parola istenir .

İçinde satır ekleyerek üzerinde bu şekilde yapmanın avantajları echokomuta /etc/sudoerskullanarak sudo visudo(diğer cevaplar önerdiği gibi) vardır

  1. /etc/sudoersbazen dosyalar ise sistem güncellemeleri ile değiştirilir /etc/sudoers.ddeğildir
  2. sudo visudoyöntemi (bu çok soru ile kanıtlandığı gibi) hata eğilimli, oysa kopya / komut kadar karışıklık çok zor olan yapıştırma

sudo cat /etc/sudoers.d/READMEBu özelliğe göre (fazladan sudoer dosyaları koymak /etc/sudoers.d) 1990'ların sonlarında ortaya çıkan Debian 1.7.2p1-1'den bu yana varsayılan olarak etkinleştirildi (Ubuntu, Debian'a dayanmaktadır ).


(daha iyi bir dosya adı bulabilirseniz cevabımı düzenlemek için çekinmeyin)
Boris

0

As Vince olan Bir yorumda , bu satırını kullanabilirsiniz:

%sudo ALL=NOPASSWD: ALL

(Bu, bu cevaplarda gösterilen satırlardan farklıdır ve sorunu benim için çözdü.)


@Eliah bu diğer cevaplardan farklı değildir. Tek yaptığı supergroupFedir'in cevabındaki yer tutucuyu değiştirmek sudo. Sırada ne var, grup için başka bir kullanıcı wheelmı? Veya kullanıcının kullandığı diğer herhangi bir grup?
muru,

1
@muru "Öyle şey yer tutucu yerine ise supergroupbirlikte Fedir yanıtında sudo." Ne? Değiştirme supergroupile sudohat içinde %supergroup ALL=(ALL) NOPASSWD:ALLverim %sudo ALL=(ALL) NOPASSWD:ALLdeğil %sudo ALL=NOPASSWD: ALL.
Eliah Kagan

Tartışmalı olarak daha da kötüsü, çünkü NOPASSWD sadece hedef kullanıcı olarak root için. Yani, soruyu doğru cevaplamıyor bile!
muru,

@muru nedir olduğu bile tartışmalı , ancak, bir ikame olduğu supergroupile sudo. Bu kendi cevabı, teşekkür mesajı veya başka bir cevabın kopyası değil. Fakat evet, katılıyorum: bunu istemedikleri sürece , çoğu kullanıcı için diğer cevaplardaki yöntemler kadar iyi olmayacak. (Ancak, özellikle soruyu dikkate alarak "tüm komutlar", "tüm hedef kullanıcıları değil"
deyince

Bu benim için çalıştı ve diğer kullanıcılarla paylaşmak istedim :) (eğer istersem yorumumu kaldır).
E. Fortes
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.