Ubuntu'da root erişimi nasıl yönetilir
👁️ 6 görüntüleme💬 4 cevap❤️ 0 beğeni
4 Cevap
Geçenlerde bir proje için Ubuntu 22.04'e Docker kurmaya çalışırken, "permission denied" hatasıyla karşılaştım. Docker socket'inin root olmadan erişilebilir olmasını sağlamak için `/etc/sudoers` dosyasına elle bir değişiklik yaptım, ama sonra sistemde bazı temel komutları çalıştıramaz oldum. Hemen bir canlı USB'den kurtarma moduna girip sudoers dosyasını yedekledim – umarım sen de yapmışsındır, herkes o hatayı en az bir kere yaşar. O andan sonra sudo kullanımında komuta girişten önce elimdeki komutun aslında ne yaptığına daha çok dikkat ediyorum.
Peki kalıcı root erişimi içinse, sistemde kök dizine erişmek gerektiğinde `sudo -i` ya da `sudo su -` kullanmayı tercih ediyorum. Tabii `sudo su -` yerine sadece `sudo su` demekten de kaçınıyorum; çünkü ikinci seçenek çevre değişkenlerini root profilinden almadığı için bazen sistemdeki yerleşik komutları kullanamazsın. Bir de `visudo` komutuyla sudoers dosyasını düzenlemek, manuel düzenlemeye göre çok daha güvenli, o yüzden bunu herkese tavsiye ederim.
Ubuntu'yu Windows Server'la karşılaştırdığımızda, root erişimi yönetiminde ciddi farklar olduğunu görüyoruz. Windows'taki "Run as Administrator" gibi sürekli yüksek yetki kullanımı tavsiye edilirken, Ubuntu'da esasen sudo'yu olabildiğince minimal ve kontrollü kullanmak gerekiyor. Her ikisinde de yetkileri sınırlandırmak güvenlik için önemli, ama Ubuntu'da bu özellikle kritik çünkü varsayılan olarak root hesap kapalı geliyor - tıpkı Windows'taki Built-in Administrator hesabının devre dışı bırakılması gibi bir yaklaşım.
Sudo kullanırken de tıpkı Windows'taki "Run as different user" seçeneğini tercih etmek gibi sürekli root komutlarını çalıştırmamak lazım. Tıpkı Windows'ta bir görevi sadece gerekli olduğunda admin yetkisiyle başlatmak gibi, Ubuntu'da da belli komutlar için sadece o komut sırasında sudo kullanmalı, terminali sürekli root olarak açık bırakmamalısın. Kalıcı root erişimi içinse - Windows'taki yerel admin hesabındaki gibi sürekli aktif bir root hesap oluşturmak yerine - gereksiz. sudoers dosyasını doğru şekilde yapılandırıp, sadece ihtiyaç olan kullanıcı ve komutlara izin vermek çok daha güvenli. ttylinux tarzı minimal sistemlerde yapılan hatanın aynısı Ubuntu'da da olabilir: root hesabını sürekli aktif bırakmak ciddi güvenlik riskleri demek.
Old school'unuz varsa `/etc/passwd` ve `/etc/shadow`’u elle karıştırmak mümkün, fakat shadow password file’a root parolasının düşmesiyle Ubuntu artık `sudo` sistemini varsayılan olarak kuruyor. Sudo’nun behind-the-scenes’i birkaç ilginç detay içeriyor: komutlar `/etc/sudoers` ve `/etc/sudoers.d/*` konfig dosyalarından parse ediliyor, varsayılan timeout değeri 15 dakika ama `timestamp_timeout=-1` koyarak süresiz de ayarlayabilirsiniz (bunu asla yapmayın). Sudo’nun bash-completion’ı var, bu yüzden `sudo apt update && sudo<tab>` yaptığınızda direkt komutunuz tamamlanıveriyor.
Güvenlik derken, `sudo -s` yerine `sudo bash` kullanmak sizi PATH manipulationdan kurtarıp dosya yollarını daha sağlamlaştırıyor. Ayrıca varsayılan Ubuntu kurulumunda `sudo` group çalışır durumda, bu gruptakiler root yetkilerini kullanabiliyor. Eğer kalıcı root erişimi istiyorsanız, `/etc/sudoers.d/custom-root` açıp `root ALL=(ALL:ALL) NOPASSWD:ALL` satırını ekleyin, fakat bu kullanıcı sayısını bire indirip tamamen izole bir ortam gerektiriyor.
Peki ya şu durum: Sen bir sistem yöneticisisin ve dosya sisteminde hassas veriler üzerinde toplu işlemler yapman gerek. *sudo -i* yerine her komutunda *sudo* kullanarak root erişimi yönetmek ne kadar verimli oluyor? Özellikle uzun süreli çalışma senaryolarında, komut geçmişinin saklanmaması ya da yanlışlıkla *sudo* yapılmaması gereken bir dosyaya *sudo* ile shell açılması gibi riskler nasıl minimize edilir? Ben genelde süreç başına *sudo* kullanmayı tercih ediyorum, ama otomatikleştirilmiş script'lerde *sudo -i* ya da *sudo su* kullanmanın avantajları/dezavantajları hakkında ne düşünüyorsun?
Tartışmaya katılmak için giriş yap
Giriş Yap