- Root erişimi tam kontrol sağlar, ancak Ubuntu ve diğer dağıtımlar riskleri azaltmak için varsayılan olarak devre dışı bırakılmıştır.
- Sudo, duruma göre ayrıcalıkları yükseltmenize olanak tanır ve her komutu kimin yürüttüğünün kaydını tutar.
- Grafik uygulamaları için, .desktop başlatıcılarında kullanılabilen kdesu, gksu, gksudo veya pkexec gibi yardımcı programlar mevcuttur.
- Güvenlik, en az ayrıcalık ilkesini kullanmaya, güvenilmeyen komut dosyalarından kaçınmaya ve yüksek yetkiye sahip erişimleri denetlemeye bağlıdır.

Windows'ta birçok kişi, Başlat menüsünden bir programı yükseltilmiş ayrıcalıklarla açmak için Shift+Enter veya Shift+sol tıklama tuşlarına basmaya alışkındır. Linux'ta bu her zaman kolay değildir, çünkü güvenlik root, sudo ve grafiksel yardımcı araçlara dayanır ve her masaüstü ortamının kendi araçları vardır. Yine de, bir başlatıcıdan, kısayoldan veya uygulamalar menüsünden uygulamaları root olarak başlatmanın oldukça basit yolları vardır, ancak bunu yapmanın ne anlama geldiğini anlamak önemlidir.
Buradaki kilit nokta, root kullanıcısının sistem üzerinde mutlak kontrole sahip olması ve modern dağıtımların, özellikle Ubuntu ve türevlerinin, doğrudan oturum açmayı genellikle devre dışı bırakmasıdır. Bu nedenle, root olarak oturum açmak yaygın değildir; bunun yerine, `sudo` veya parola isteyen grafiksel bir program kullanarak zaman zaman ayrıcalıkları yükseltmek tercih edilir. Bir başlatıcı simgesinin bu ayrıcalıklarla bir uygulamayı başlatmasını istiyorsak, yürüttüğü komutu değiştirmemiz veya özel bir başlatıcı oluşturmamız gerekecektir.
Bir şeyi root olarak çalıştırmak gerçekte ne anlama geliyor?

Linux'ta root, UID 0'a sahip ve sınırsız ayrıcalıklara sahip hesaptır . Herhangi bir dosyayı okuyabilir, değiştirebilir veya silebilir, yazılım yükleyebilir, çekirdek yapılandırmalarını değiştirebilir ve herhangi bir kullanıcıya ait işlemleri kontrol edebilir. Bu, onu inanılmaz derecede güçlü bir araç haline getirir, ancak dikkatsizce kullanıldığında büyük bir risk de oluşturur. `rm` veya `mv` komutlarında yapılan basit bir yazım hatası sistemi kullanılamaz hale getirebilir ve root olarak çalıştırılan kötü amaçlı bir komut dosyası, neredeyse hiçbir iz bırakmadan arka kapılar yükleyebilir, güvenlik önlemlerini değiştirebilir veya veri çalabilir.
Ubuntu'da root hesabının varsayılan bir şifresi yoktur ve doğrudan giriş yapılmasına izin verilmez. Felsefe, normal kullanıcı hesabınızla çalışmanız ve belirli görevler için `sudo` kullanmanızdır . `sudo`, temelde, `sudo` grubuna aitseniz kendi şifrenizle kimlik doğrulamasından sonra, genellikle root olan başka bir kullanıcı olarak bir komut çalıştırmak anlamına gelir. Bu, maruz kaldığınız süreyi sınırlar ve kimin ne yaptığının kaydını tutar.
Ancak, hasar görmüş bir sistemi kurtarma, kısıtlı ortamlarda çalışma veya kalıcı erişim gerektiren hizmetleri yapılandırma gibi çok özel durumlarda, geçici olarak root yetkisini etkinleştirmeyi düşünebilirsiniz. Genel öneri, ihtiyaç duyulduğu anda tekrar devre dışı bırakmaktır. Root olarak geçirdiğiniz süre ne kadar az olursa, makinenin kararlılığı ve güvenliği için o kadar iyidir.
Root işlemlerini dikkatsizce kullanmanın riskleri
En belirgin tehlikelerden biri, hayati öneme sahip dosyaların yanlışlıkla silinmesidir . Root yetkisine sahip olduğunuz için herhangi bir izin kısıtlaması yoktur; `sudo rm -rf /` gibi bir komut, uyarı vermeden sistemi tamamen silebilir. Ayrıca, bu silme işlemleri için genellikle geri dönüşüm kutusu da bulunmaz, bu nedenle kurtarma işlemi karmaşık adli bilişim araçları veya hatta tam bir sistem yeniden kurulumu gerektirebilir.
Bir diğer risk ise güvenilmeyen komut dosyalarını çalıştırmaktır. Herhangi bir siteden indirdiğiniz kodu yüksek ayrıcalıklarla çalıştırırsanız, aslında ona evinizin anahtarlarını vermiş olursunuz . Komut dosyası zararsız görünse bile, yıkıcı talimatlar içerebilir veya root ayrıcalıklarıyla kötü amaçlı yazılım yükleyebilir. Bu nedenle, kodu incelemek, resmi kaynakları kullanmak, sağlama toplamlarını kontrol etmek ve üretim ortamında çalıştırmadan önce sanal bir makinede veya konteynerde test etmek önerilir.
Ayrıca izlenebilirlik sorunu da var. `sudo` kullandığınızda, sistem komutu, komutu veren kullanıcıyı ve zamanı `/var/log/auth.log`, `/var/log/secure` veya `journalctl` dosyalarına kaydeder . Doğrudan root olarak giriş yaparsanız, her şey root olarak görünür ve hangi kişinin hangi değişikliği yaptığını bilme olanağını kaybedersiniz. Birden fazla yöneticinin bulunduğu veya ISO 27001, PCI DSS veya diğer denetim standartlarının uygulandığı ortamlarda, bu izlenebilirlik eksikliği önemli bir zayıflıktır.
Terminalden ayrıcalık elde etme yolları

En yaygın ve önerilen yöntem, belirli bir komutun başına `sudo` eklemektir. Örneğin, paketleri güncellemek, bir hizmeti yeniden başlatmak veya korumalı bir dosyayı düzenlemek için `sudo`, root şifresi yerine kullanıcı şifrenizi isteyecek ve kimliğinizi doğruladıktan sonra komutu yükseltilmiş ayrıcalıklarla çalıştıracaktır. Farklı bir kullanıcı olarak çalıştırmanız gerekiyorsa, `sudo -u kullanıcı adı komutu` kullanabilirsiniz. Ve `sudo` kullanmayı unuttuğunuzu fark ederseniz, son komutu `sudo !! ` ile tekrarlayabilirsiniz.
Ard arda birkaç yönetimsel işlem gerçekleştireceğiniz zaman, geçici bir root kabuğu açmak kullanışlı olabilir. `sudo -i` tam bir root oturum açma işlemini simüle eder, root ortamını yükler ve sizi ana dizine yerleştirir. `sudo su` veya `sudo su -` de çalışır, ancak `sudo -i` genellikle daha güvenilirdir. Bu oturumdan çıkmak için `exit` yazmanız yeterlidir. Açık bir root kabuğunu gözetimsiz bırakmak tavsiye edilmez.
Öte yandan, `su` komutu kullanıcı değiştirir. `su - root` veya sadece `su -`, hedef kullanıcının ortam değişkenlerini de benimserken, `su root` veya tire olmadan `su`, önceki ortamın bir kısmını korur. Bu fark, `komut bulunamadı` gibi hataları açıklar: yönetim komutları genellikle `/usr/local/sbin`, `/usr/sbin` ve `/sbin` yollarında bulunur ve bu yollar her zaman normal bir kullanıcının PATH'inde görünmez. Tire olmadan `su` kullanırsanız, tam yolu yazmanız veya root PATH'ini devralmak için `su -` kullanmanız gerekir.
Root kullanıcısı için parola etkinleştirmek istiyorsanız, `sudo passwd root` komutunu kullanabilirsiniz . Ubuntu bunu önermez, ancak teknik olarak root kullanıcısının parolaya sahip olmasına izin verir. Hesabı kilitlemek için `sudo passwd -l root` , kilidi açmak için ise `sudo passwd -u root` komutunu kullanın. SSH'de doğrudan root erişimi, `/etc/ssh/sshd_config` dosyasındaki `PermitRootLogin` ayarı ile kontrol edilir . Bunu `no` veya en fazla `prohibit-password` olarak ayarlayarak yalnızca SSH parolalarına izin vermek en güvenlisidir. Ardından, SSH hizmetini yeniden başlatmanız gerekir.
Kazakları doğru şekilde yapılandırın.
`/etc/sudoers` dosyası, `sudo` komutunu kimin ve hangi amaçla kullanabileceğini tanımlar. Bu dosyayı manuel olarak düzenlemek yerine, `sudo visudo` komutunu kullanmak en iyisidir; bu komut dosyayı kilitler ve kaydetmeden önce sözdizimini kontrol eder. Temel kural `host user=(target_user)` şeklindedir. Örneğin, `bob ALL=(ALL) ALL` komutu, `bob` kullanıcısının herhangi bir makinede root olarak herhangi bir komutu çalıştırmasına olanak tanır. `%admin ALL=(ALL) ALL` gibi gruplar da kullanılabilir.
Daha ince yetkiler vermek için takma adlar kullanılır. `User_Alias ADMINS = alice, bob` kullanıcıları gruplandırır ve `Cmnd_Alias LOCATE = /usr/sbin/updatedb` komutları gruplandırır. Ardından, `ADMINS ALL = LOCATE` kullanılarak bu kullanıcıların yalnızca bu komutları çalıştırabilmesi sağlanır. `NETWORKING` gibi takma adlar, `route`, `ifconfig`, `ping`, `iptables` vb. komutlar için oluşturulabilir. Bu, hiç kimseye tam root erişimi vermeden en az ayrıcalık ilkesini uygular.
NOPASSWD seçeneği , örneğin `pi ALL=(ALL)` gibi belirli komutları parola olmadan çalıştırmanıza olanak tanır. NOPASSWD: ALL. Bu kullanışlıdır, ancak kötüye kullanılırsa tehlikelidir. Ayrıca, `sudo`'nun her kullanımı kaydedilir; bu da erişimi denetlemeye ve sorunları gidermeye yardımcı olur. Bir şey bozulursa, bu günlükleri incelemek, hataya hangi son değişikliğin neden olduğunu gösterebilir.
Grafiksel uygulamaları başlatıcıdan root olarak başlatma

Grafik arayüzü olan programlar için, parola istemi için bir terminal olmadığı için `sudo` kullanmak genellikle iyi sonuç vermez. İşte burada grafiksel yardımcılar devreye giriyor . KDE'de `kdesu` bulunur : Uygulamayı hangi komutun başlattığını biliyorsanız, `kdesu that_command` komutunu çalıştırabilirsiniz. KDE menüsündeki `Komut Çalıştır` seçeneği, başka bir kullanıcının kimlik bilgilerini girerek uygulamayı o kullanıcı olarak başlatmanıza da olanak tanır. GNOME ve GTK ortamlarında `gksu` ve `gksudo` yaygın olarak kullanılıyordu ; bunlar `sudo` veya `su` için ön uçlardır. Örneğin, `gksu synaptic` veya `gksudo gparted` uygulamayı açar ve parola ister.
Modern sistemlerde gksu ya önerilmez ya da kullanımdan kaldırılmıştır. Genellikle kullanılan alternatifi , PolicyKit tabanlı olan ve programların tanımlanmış politikalara göre ayrıcalıklarla çalışmasına olanak tanıyan pkexec'tir . Birçok güncel başlatıcı, yönetimsel görevler için pkexec kullanır. Fikir aynıdır: kullanıcının bir terminal açmasına gerek yoktur, ancak sistem yetkilendirmeyi kontrollü bir şekilde doğrular.
Başlatıcıda bir kısayol oluşturmak için bir .desktop dosyasını düzenlemeniz gerekir . `Exec` satırı anahtardır. Root olarak çalıştırmak istiyorsanız, `Exec=gksu /path/to/program`, `Exec=kdesu /path/to/program` veya `Exec=pkexec /path/to/program` gibi bir şey kullanabilirsiniz. Doğrudan `sudo` kullanıyorsanız, başlatıcının `Terminal=true` özelliğine sahip olması veya grafiksel bir parola istemi yapılandırmanız gerekir. Ayrıca Alt+F2 tuşlarına basıp yardımcı programı ve program adını yazmayı da deneyebilirsiniz, örneğin `gksu synaptic`. KDE'de, `kdesu synaptic` veya başka bir kullanıcı olarak çalıştırma seçeneği benzer bir işlevi yerine getirir.
GUI uygulamaları için bir sarmalayıcı olan consolehelper adlı klasik bir alternatif mevcuttur . Örneğin, /usr/bin/xterm-root'u /usr/sbin/consolehelper'a işaret eden bir sembolik bağlantı oluşturursunuz. Ardından, config-util'den alınan kimlik doğrulama, hesap ve oturum eklemeleriyle /etc/pam.d/xterm-root'u oluşturarak PAM'ı yapılandırırsınız. Daha sonra, USER=root ve PROGRAM=/usr/bin/xterm ile /etc/security/console.apps/xterm-root'u tanımlarsınız. xterm-root çalıştırıldığında, consolehelper PAM kimlik doğrulaması için bir istemde bulunur ve xterm'i root olarak başlatır. "Xlib connection to :0.0 refused by server" hatasıyla karşılaşırsanız, xhost local:root çalıştırmak yardımcı olabilir.
Her durumda, grafiksel uygulamaları root olarak açmanın dezavantajları vardır: ortam değişkenlerini karıştırır, oturum veri yolunu bozabilir, Wayland veya X11'i etkileyebilir ve ana dizininizde root'a ait dosyalar oluşturabilir. Bunu yalnızca belirli yönetim araçları için kullanmak ve işiniz bittiği anda kapatmak en iyisidir. İnternette gezinmeyin veya şüpheli belgeleri root olarak açmayın , çünkü herhangi bir güvenlik açığı tam yetkileri devralacaktır.
Kök erişimi gerektiren görevlere ilişkin yaygın örnekler
Birçok günlük işlem, yüksek yetki gerektirir. Apt, zypper, dnf veya yum ile paketleri yönetmek genellikle sudo gerektirir. Örneğin, `sudo apt update` , `sudo apt install firefox` veya `sudo zypper install docker-ce`. Aynı durum sistem servisleri için de geçerlidir: `sudo systemctl restart apache2`, `sudo systemctl restart ssh` veya `sudo systemctl restart nginx`. Kullanıcı hesaplarını değiştirmek için `sudo usermod`, dosya sahipliğini değiştirmek için ise `sudo chown` kullanılır. `/etc/ssh/sshd_config` gibi kritik yapılandırmaları düzenlemek de nano, vim veya gedit ile yapıldığında root yetkileri gerektirir.
`zypper repos` veya `systemctl status NetworkManager` gibi yalnızca bilgi okuyan veya sistemi değiştirmeyen komutlar için `sudo` kullanmanıza gerek yoktur. Her şey için alışkanlık gereği `sudo` kullanmak kötü bir uygulamadır. Mantıklı olan, ayrıcalıkları yalnızca görev gerektirdiğinde yükseltmek ve ardından mümkün olan en kısa sürede normal kullanıcıya geri dönmektir.
Yüksek yetkilere sahip kişilerle çalışırken en iyi uygulamalar

En az ayrıcalık ilkesi her şeye rehberlik etmelidir. Mümkün olduğunca tek tek komutlar için `sudo` kullanın, kesinlikle gerekli olmadıkça kalıcı root kabuklarından kaçının ve işiniz bittiği anda çıkın. Bilinmeyen kaynaklardan gelen komut dosyalarını root olarak çalıştırmayın; kodu önceden inceleyin, resmi depolardan veya saygın projelerden indirin, sağlama toplamlarını doğrulayın ve herhangi bir şüpheniz varsa izole bir ortamda test edin. Tam yetkiye sahip üçüncü taraf kodlarla uğraşırken sağlıklı bir doz şüphecilik erdemdir .
Ayrıca, her şey için yalnızca sudo grubuna güvenmek yerine, sudo kullanıcılarını ayrıntılı olarak yapılandırmak ve günlükleri denetlemek de tavsiye edilir. Sunucuları yönetiyorsanız, kötüye kullanımı tespit etmek için `/var/log/auth.log`, `/var/log/secure` veya `journalctl -xe` komutlarını kontrol edin. Çok kullanıcılı ortamlarda, her komutu kimin çalıştırdığını bilmek, hesap verebilirlik ve güvenlik düzenlemelerine uyum açısından çok önemlidir.
Başlık kullanarak root erişimini etkinleştirme ve devre dışı bırakma
Kök erişimini etkinleştirmeye karar verirseniz, `sudo passwd root` komutuyla bir parola atayın, yalnızca gerekli görevler için kullanın ve ardından hesabı yeniden kilitleyin. Doğrudan SSH oturum açmayı devre dışı bırakmak için `sshd_config` dosyasını düzenleyin ve `PermitRootLogin no` veya `prohibit-password` ayarını yapın, ardından SSH'yi yeniden başlatın. Hesabı yerel olarak kilitlemek için `sudo passwd -l root` komutunu kullanın. Kilidi açmak için `sudo passwd -u root` komutunu kullanın. Bu önlemler saldırı yüzeyini azaltır ve en güçlü hesaba karşı kaba kuvvet saldırılarını önler.
Çoğu durumda, ilk sorunun pratik cevabı evettir: kdesu, gksu, gksudo veya pkexec gibi grafiksel bir yardımcı program kullanarak veya uygun komutu içeren bir .desktop dosyası oluşturarak, başlatıcıdan root ayrıcalıklarıyla bir programı çalıştırabilirsiniz. Ancak, bunu her uygulama için açık bırakmamalısınız. Açık isimlere sahip özel yönetici başlatıcılarına sahip olmak ve bunları yalnızca gerektiğinde kullanmak daha iyidir.
Önemli olan nokta şu ki, root bir oyuncak değil ve sudo tam olarak her tıklamayı kalıcı bir riske dönüştürmeden sizi güçlendirmek için var. Grafiksel bir uygulamayı süper kullanıcı olarak başlatmanız gerekiyorsa, parola gerektiren yardımcı uygulamalara öncelik verin, uygulamanın gerçekten buna ihtiyacı olup olmadığını doğrulayın ve kullanımını yönetimsel görevlerle sınırlayın. Bu şekilde, Linux'u bu kadar güçlü kılan güvenlikten ödün vermeden başlatıcının rahatlığından yararlanabilirsiniz.