Linux Sistemlerde 'sudo: komut bulunamadı' Hatasının Çözümü

Linux sunucularında yeni bir kullanıcı olarak sudo komutunu kullanmaya çalıştığınızda karşılaşılan 'sudo: komut bulunamadı' hatasının üç temel nedeni ve detaylı çözüm adımları.

L
Linuxize
0 görüntülenme
Linux Sistemlerde 'sudo: komut bulunamadı' Hatasının Çözümü

Giriş

Yeni bir Linux sunucusuna bağlandığınızda, bir paket kurmaya çalışırken sudo: komut bulunamadı mesajıyla karşılaşabilirsiniz. Bu hata özellikle kafa karıştırıcıdır, çünkü sudo bir Linux sistemi için yerleşik bir komutmuş gibi görünür. Oysa sudo, aslında sistemde yüklü olması gereken ayrı bir pakettir. Minimal Linux dağıtımları ve Docker tabanlı konteynerler genellikle sudo paketini yüklemezler. Ayrıca, kabuk ortamınız bozulduğunda sudo komutu ilk kaybolan komutlardan biri olabilir.

Bu rehberde, karşılaşabileceğiniz üç temel neden ve her biri için temiz çözümler sunulmaktadır:

  1. sudo paketinin sistemde yüklü olmaması
  2. Kullanıcınızın sudo komutunu kullanmasına izin verilmemesi
  3. Kabuk ortamınızın PATH değişkeninin bozulması

Hızlı Kontrol Tablosu

Kontrol Edilecek Komut Yapılacak İşlem
sudo yüklü mü?
ls -l /usr/bin/sudo
/usr/bin/sudo dosyası bulunmuyorsa, root olarak sudo paketini yükleyin
Kullanıcınız sudo kullanabilir mi?
groups kullanıcı_adı
Debian/Ubuntu sistemlerde kullanıcıyı sudo grubuna, Fedora/RHEL/Arch sistemlerde wheel grubuna ekleyin
PATH bozuk mu?
echo $PATH
Kabuk başlangıç dosyanızda /usr/bin, /usr/sbin, /bin ve /sbin dizinlerini geri yükleyin
Mutlak yol ile sudo çalışıyor mu?
/usr/bin/sudo whoami
sudo whoami çalışmıyorsa, PATH değişkenini düzeltin

Gerçek Nedeni Doğrulama

sudo komutunu çalıştırmadan önce, sistemde sudo ikilinin (binary) var olup olmadığını kontrol edin:

ls -l /usr/bin/sudo

Eğer çıktı aşağıdaki gibiyse, sudo sistemde yüklüdür ve hata ortam kaynaklıdır:

-rwsr-xr-x 1 root root 277936 Jan 17 09:42 /usr/bin/sudo

Dosya bulunmuyorsa, sudo paketini root olarak yüklemeniz gerekmektedir. Aşağıdaki bölümlerden size uygun olanı takip edin.

Debian, Ubuntu ve Türevlerinde sudo Kurulumu

Minimal Debian kurulumları ve birçok Docker tabanlı konteyner, sudo paketini yüklemez. Öncelikle root hesabına geçiş yapın, çünkü normal bir kullanıcıdan sudo olmadan yetki yükseltme yapamazsınız:

su -

Root şifresini girin. Ardından apt komutunu kullanarak sudo paketini yükleyin:

apt update
apt install sudo

Not: Ubuntu masaüstü kurulumlarında olduğu gibi root hesabına şifre tanımlanmamışsa, su komutu reddedilebilir. Bu durumda sisteminizi kurtarma moduna alarak ya da canlı bir USB kullanarak root şifresini ayarlamanız gerekmektedir.

Fedora, RHEL ve Türevlerinde sudo Kurulumu

Fedora, RHEL, Rocky Linux ve AlmaLinux gibi sistemlerde root hesabına geçiş yapın ve dnf komutunu kullanarak sudo paketini yükleyin:

su -
dnf install sudo

Daha eski Red Hat tabanlı sistemlerde yum komutu referans alınmış olabilir. Ancak, desteklenen tüm sürümlerde dnf kullanılması önerilmektedir.

Arch Linux'ta sudo Kurulumu

Arch Linux minimal bir taban sunar ve sudo ayrı bir pakettir. Root hesabına geçiş yapın ve pacman komutunu kullanarak sudo paketini yükleyin:

su -
pacman -S sudo

Alpine Linux'ta sudo Kurulumu

Alpine Linux, özellikle konteynerlerde yaygın olarak kullanılır ve paket yöneticisi olarak apk kullanır. sudo paketinin yanı sıra, daha hafif bir alternatif olan doas da tercih edilebilir.

sudo paketini yüklemek için:

su -
apk add sudo

Eğer sadece konteyner içinde yetki yükseltme ihtiyacınız varsa ve görüntü boyutunu küçültmek istiyorsanız, apk add doas komutunu çalıştırın ve ardından /etc/doas.conf dosyasına tek satırlık bir yapılandırma ekleyin:

permit :wheel as root

Kullanıcınızı sudo Grubuna Ekleyin

sudo paketini yüklemek sadece ilk adımdır. Varsayılan olarak, sadece belirli bir yönetici grubuna ait kullanıcılar sudo komutunu çalıştırabilir. Bu grup adı dağıtıma göre değişiklik gösterir.

Debian ve Ubuntu'da grup adı sudo olarak belirlenmiştir:

usermod -aG sudo kullanıcı_adı

Fedora, RHEL ve Arch Linux'ta grup adı wheel olarak belirlenmiştir:

usermod -aG wheel kullanıcı_adı

Gruba yapılan değişiklikler ancak yeni bir oturum açıldığında etkili olur. Bu nedenle, kullanıcınızı çıkarıp yeniden giriş yapmanız gerekmektedir. Ardından üyelik durumunu doğrulayın:

groups kullanıcı_adı

Çıktıda sudo veya wheel grubunun bulunması, kullanıcınızın artık yetkili komutları çalıştırabileceğini gösterir.

Boş PATH Değişkenini Düzeltin

/usr/bin/sudo dosyası mevcut olmasına rağmen shell hâlâ komut bulunamadı mesajı veriyorsa, sorun PATH değişkeninizin bozulmasından kaynaklanmaktadır. ~/.bashrc veya ~/.zshrc dosyanızda yapılan bir yazım hatası standart dizinleri silebilir. Mevcut PATH değerini kontrol edin:

echo $PATH

Eğer /usr/bin ve /usr/local/bin gibi dizinler eksikse, shell sistem ikililerini bulamaz. sudo komutunu mutlak yolunu kullanarak çalıştırarak geçici bir çözüm uygulayabilirsiniz:

/usr/bin/sudo apt update

Ancak kalıcı çözüm, kabuk yapılandırma dosyanızı onarmaktır. PATH değişkenini bozan dosyayı açın:

nano ~/.bashrc

Güvenli bir temel PATH yapılandırması aşağıdaki gibi olmalıdır:

export PATH="$HOME/bin:$HOME/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

Önemli: PATH değişkenini genişletirken, her zaman $PATH ifadesini kullanın. Örneğin, export PATH=$HOME/bin şeklinde yapılan bir atama, tüm diğer dizinleri siler ve en yaygın hatalardan biridir.

Dosyayı kaydedin ve kabuğu yeniden yükleyin:

source ~/.bashrc
sudo whoami

root yanıtı almanız, sudo komutunun yola tekrar eklendiğini ve çalışır durumda olduğunu doğrular.

Sorun Giderme

kullanıcı_adı sudoers dosyasında değil. Bu olay rapor edilecektir.

Kullanıcı mevcut ancak yetkilendirilmemiş. Root hesabına geçin ve kullanıcıyı yönetici grubuna ekleyin (yukarıda gösterildiği gibi) ya da visudo komutunu kullanarak /etc/sudoers dosyasını düzenleyin ve kullanıcı_adı ALL=(ALL:ALL) ALL satırını ekleyin. Dikkat: /etc/sudoers dosyasını doğrudan düzenlemeyin; visudo komutu sözdizimini doğrular ve kilitlenmeyi önler.

Root şifresi yok ve sudo da yok

Ubuntu'da root varsayılan olarak devre dışıdır. Sistem GRUB kurtarma menüsüne girin, root kabuğuna geçin ve passwd root komutunu çalıştırarak root şifresini ayarlayın. Ardından sudo paketini yükleyin ve kullanıcıyı grubuna ekleyin (yukarıdaki adımları takip edin).

sudo: /etc/sudo.conf kullanıcı sahibi 1000, 0 olmalı

/etc dizinindeki dosya sahipliği yanlışlıkla değiştirilmiş. Root olarak chown root:root /etc/sudo.conf /etc/sudoers ve chmod 440 /etc/sudoers komutlarını çalıştırarak sahipliği ve izinleri düzeltin.

SSS (Sık Sorulan Sorular)

Neden sudo bir kabukta çalışıyor da diğerinde çalışmıyor?

İki kabuk farklı başlangıç dosyalarını yüklediği için olabilir. Her birinde echo $PATH komutunu çalıştırarak PATH değerlerini karşılaştırın. ~/.bashrc, ~/.bash_profile, ~/.profile ve ~/.zshrc dosyalarında PATH değişkenini bozan satırları kontrol edin.

Kullanıcının sudo grubuna eklenmesi değişiklikleri hemen etkiler mi?

Hayır. Grup üyeliği giriş sırasında okunur. Değişikliklerin etkili olması için kullanıcının çıkış yapıp yeniden giriş yapması gerekir ya da su - kullanıcı_adı komutunu çalıştırarak yeni bir giriş kabuğu başlatabilirsiniz.

doas gerçekten sudo yerine geçebilir mi?

Tek kullanıcılı sistemlerde ve çoğu konteyner görüntüsünde evet. doas, daha küçük boyutlu olup çok daha kısa bir yapılandırma dosyası kullanır. Ancak, detaylı erişim kurallarına sahip çok kullanıcılı sunucularda sudo tercih edilir.

Sonuç

sudo: komut bulunamadı hatası, üç temel sorundan biri nedeniyle ortaya çıkar: eksik bir paket, eksik grup üyeliği ya da bozuk bir PATH değişkeni. Bu hatayı yukarıda belirtilen sırayla çözmek, neredeyse tüm Linux sistemlerinde sorunu giderecektir.

İleri okuma için aşağıdaki rehberlere göz atabilirsiniz:

Kaynak

Linuxize