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:
sudopaketinin sistemde yüklü olmaması- Kullanıcınızın
sudokomutunu kullanmasına izin verilmemesi - Kabuk ortamınızın
PATHdeğişkeninin bozulması
Hızlı Kontrol Tablosu
| Kontrol Edilecek | Komut | Yapılacak İşlem |
|---|---|---|
sudo yüklü mü? |
|
/usr/bin/sudo dosyası bulunmuyorsa, root olarak sudo paketini yükleyin |
Kullanıcınız sudo kullanabilir mi? |
|
Debian/Ubuntu sistemlerde kullanıcıyı sudo grubuna, Fedora/RHEL/Arch sistemlerde wheel grubuna ekleyin |
PATH bozuk mu? |
|
Kabuk başlangıç dosyanızda /usr/bin, /usr/sbin, /bin ve /sbin dizinlerini geri yükleyin |
Mutlak yol ile sudo çalışıyor mu? |
|
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
visudokomutunu kullanarak/etc/sudoersdosyasını düzenleyin vekullanıcı_adı ALL=(ALL:ALL) ALLsatırını ekleyin. Dikkat:/etc/sudoersdosyasını doğrudan düzenlemeyin;visudokomutu 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 rootkomutunu çalıştırarak root şifresini ayarlayın. Ardındansudopaketini yükleyin ve kullanıcıyı grubuna ekleyin (yukarıdaki adımları takip edin).
sudo: /etc/sudo.conf kullanıcı sahibi 1000, 0 olmalı
/etcdizinindeki dosya sahipliği yanlışlıkla değiştirilmiş. Root olarakchown root:root /etc/sudo.conf /etc/sudoersvechmod 440 /etc/sudoerskomutlarını çalıştırarak sahipliği ve izinleri düzeltin.
SSS (Sık Sorulan Sorular)
Neden
sudobir 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 $PATHkomutunu çalıştırarakPATHdeğerlerini karşılaştırın.~/.bashrc,~/.bash_profile,~/.profileve~/.zshrcdosyalarındaPATHdeğ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.
doasgerçektensudoyerine 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ı sunuculardasudotercih 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:


