Bu, Sudoers dosyası ve genel olarak sudo komutu ile ilgili oldukça karmaşık bir sorudur.
NOT: Bu değişiklikleri tamamen öğrenme amaçlı kullandığım Ubuntu Desktop 13.04 çalıştıran özel bir makinede yaptım. NOPASSWD sudo'yu etkinleştirmenin büyük bir güvenlik riski olduğunu biliyorum.
Başlangıçta, sudoers dosyasında (/etc/sudoers) yaptığım tek değişiklik, 'nicholsonjf''nin sudo ile tüm komutları parola girmek zorunda kalmadan çalıştırmasını sağlayan bir kullanıcı belirtimiydi ('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' olarak her komut çalıştırdığımda hala şifrem isteniyordu. Sadece sudo ve admin gruplarından 'nicholsonjf''yi kaldırdıktan sonra sudo komutlarını 'nicholsonjf' olarak çalıştırmaya başlayabildim.
Bunun neden işe yaradığını açıklayabilecek biri var mı?
Bunun nedeni 'nicholsonjf' kullanıcısının sudo haklarını 'admin' ve 'sudo' grup özelliklerinden (aşağıda sudoers dosyasında görülüyor) devralması ve bu grupların yapılandırma dosyasında daha aşağıda oldukları için 'nicholsonjf' kullanıcı özelliğini geçersiz kılması mı?
Eklediğiniz satır geçersiz kılındı. "Man sudoers "dan:
Bir kullanıcı için birden fazla giriş eşleştiğinde, bunlar sırayla uygulanır. Birden fazla eşleşme olduğunda, son eşleşme kullanılır (en spesifik eşleşme olması gerekmez).
Sizin durumunuzda nicholsonjf
sudo
grubunun bir üyesiydi, bu nedenle bu satır onun için geçerliydi:
%sudo ALL=(ALL:ALL) ALL
Eğer /etc/sudoers
içindeki girdileri geçersiz kılmak istiyorsanız, sadece yeni girdileri onlardan sonra koyun.
Yeni giriş şöyle görünmelidir
Tek bir kullanıcı için myuser ALL=(ALL) NOPASSWD: ALL
veya
Bir grup için %sudo ALL=(ALL) NOPASSWD: ALL
.
Tek bir kullanıcı için, sudo visudo
kullanarak sudoers
dosyanızın sonuna şu satırı ekleyin
superuser ALL=(ALL) NOPASSWD: ALL
Bir grup için
%supergroup ALL=(ALL) NOPASSWD: ALL
Vince]1'in bir yorumda belirttiği gibi, bu satırı kullanabilirsiniz:
%sudo ALL=NOPASSWD: ALL
(Bu, şunlar cevaplar'te gösterilen çizgilerden farklıdır ve benim için sorunu çözdü).