Linux’ta bazı komutlar yalnızca root kullanıcısı tarafından çalıştırılabilir. Varsayılan olarak, bu süper kullanıcı, sistemdeki tüm komutlara ve kaynaklara erişime sahiptir. Ancak, hassas görevleri herhangi bir kısıtlama olmadan gerçekleştirmek tehlikelidir. Örneğin, kasıtlı veya kazara yapılan bir hata, tüm sistemi bozabilir. Bu nedenle, Linux sudo
kullanımını teşvik eder. Bu komut, normal bir kullanıcıya, idari görevleri yürütmek için gerekli olan süper kullanıcı ayrıcalıklarını sağlar. sudo
ile çalışırken, şu hatayla karşılaşabilirsiniz:
‘cpynet is not in the sudoers file. This incident will be reported.’
Bu belgede, bu hatayı düzeltmek için kullanılan farklı yaklaşımları tartışacağız.
2. Hatanın Nedenleri
Bazen bu hatayı düzeltmemize gerek yoktur, örneğin sistem yöneticisi erişimimizi kasıtlı olarak bir güvenlik önlemi olarak kısıtlamışsa. Bu kısıtlama, şu anda karşılaştığımız soruna neden olur. Bu durumda, yöneticinin bizim için tanımladığı izinlerle çalışmak zorundayız.
Diğer taraftan, eğer sistem üzerinde gerçek bir kontrolümüz varsa, bu durumu düzeltebiliriz.
Hatanın Üretilmesi
Bu hatayı görmek için aşağıdaki komutu çalıştırabilirsiniz:
$ sudo ls
[sudo] password for cpynet:
cpynet is not in the sudoers file. This incident will be reported.
Yukarıdaki mesaj ‘cpynet is not in the sudoers file’ sadece cpynet
kullanıcısının sudoers dosyasında bulunmadığını belirtir. Bu dosya, sudo ile ilgili görevler için hem kullanıcı hem de kullanıcı grubu ayrıcalıklarını tanımlar. Ayrıca, ‘This incident will be reported’ ifadesi, Linux’un bu başarısız sudo işleminin bir raporunu oluşturduğunu, bu olay sırasında neler olduğunu kaydettiğini belirtir.
3. Kullanıcı Adını Sudoers Dosyasına Ekleme
Buradaki ana hedefimiz, kullanıcıyı doğrudan sudoers dosyasına eklemektir. Bunun için, cpynet
kullanıcısı idari görevleri yerine getiremeyeceğinden root kullanıcısına geçmemiz gerekecek:
$ su root
Password:
Geçiş yaptıktan sonra, nano
adlı bir metin düzenleyicisini kullanarak sudoers dosyasını düzenleyeceğiz. Nano, komut satırından dosyaları düzenlememize olanak tanır:
# nano /etc/sudoers
Artık sudoers dosyası düzenlemeye hazır.
Kullanıcı ayrıcalıkları tanımlamasının altında bir satır ekleyelim. Bu satır, sistem kullanıcısına belirtilen süper kullanıcı ayrıcalıklarını vermek içindir:
# User privilege specification
root ALL=(ALL:ALL) ALL
cpynet ALL=(ALL:ALL) ALL
Artık cpynet
kullanıcı erişim gerektiren görevleri yerine getirebilir. Değişikliği yaptıktan kısa bir süre sonra, bu değişiklikleri kaydetmemiz ve metin düzenleyicisinden çıkmamız gerekir. Bunu yapmak için, CTRL+X tuşlarına basarak çıkabilir, Y tuşuna basarak kaydedebilir ve Enter tuşuna basarak onaylayabilirsiniz. Son olarak, root oturumundan çıkabiliriz.
4. Kullanıcı Adını Sudo Grubuna Ekleme
Yukarıdaki çözüme benzer şekilde, önce root kullanıcısına geçmek önemlidir:
$ su root
Password:
su
komutu, başka bir kullanıcının, bu durumda root’un izinleriyle görevleri yerine getirmemize olanak tanır.
Sonraki adımda, sudoers dosyasının içeriğini göstereceğiz. Kullanıcıların ve kullanıcı gruplarının ayrıcalıklarını belirten satırlara odaklanacağız:
# cat /etc/sudoers
...
# User privilege specification
root ALL=(ALL:ALL) 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
...
Yukarıda gösterildiği gibi, root kullanıcısı ve admin ve sudo grubu üyeleri süper kullanıcı ayrıcalıklarına sahiptir. Debian tabanlı bir dağıtımda olduğumuz için sudo grubu mevcuttur. Red Hat tabanlı bir Linux dağıtımında ise, wheel kullanıcı grubuyla karşılaşırız. Bu, Red Hat tabanlı dağıtımlar için sudo kullanıcı grubunun karşılığıdır.
Artık Debian’da çalıştığımıza göre, kullanıcıyı sudo grubuna ekleyelim:
# usermod -aG sudo cpynet
Burada, usermod
komutu kullanıcının niteliklerini değiştirmemizi sağlar. Özellikle, -G
seçeneğini kullanarak cpynet
kullanıcısının grup bilgilerini güncelleyebileceğimizi belirtiyoruz. Ayrıca, -a
seçeneği, bu kullanıcının ilişkili diğer gruplarının sürecin bir parçası olarak silinmediğinden emin olur. Sonuç olarak, cpynet
artık sudo
ile idari görevleri yerine getirebilir. Red Hat dağıtımlarında, sudo yerine wheel yazarak benzer sonuçlar elde edebiliriz.
İşlemi tamamladıktan sonra, root kullanıcı oturumundan çıkabiliriz:
# exit
exit
Artık önceki kullanıcı oturumumuza geri döndük.
5. Sonuç
Bu belgede, Linux hatası ‘cpynet is not in the sudoers file. This incident will be reported.’ ifadesinin anlamını kısaca açıkladık. Ardından bu durumu çözmek için iki uygulanabilir çözümü gösterdik.