blog posts

Sudo komutu nedir? Su komutundan farkı nedir?

Sudo ve su komutları, Unix ve Linux işletim sistemlerinde komut satırı ortamında kullanılabilen iki yaygın Sudo komutu nedir komuttur. Bu iki komutun işletim sistemindeki kullanıcı erişimlerinin ve izinlerinin yönetimi konusunda farklılıkları vardır . Bu yazımızda sudo komutunu ve su komutu ile farkını inceleyeceğiz.

su: Bir komutu root olarak çalıştırmanıza izin verir ancak root şifresini bilmenizi gerektirir. Su ile yürütülen tüm komutlar günlüğe kaydedilmez. sudo: Bir komutu root olarak çalıştırmanıza izin verir. Yapılandırmaya bağlı olarak komut, root parolası gerektirmez.

Linux’taki sudo komutu, kullanıcıların, yönetici erişimi veya özel erişimle komutları çalıştırmak için geçici yönetici hakları kazanmalarına olanak tanır. Normal kullanıcılar sudo’yu kullanarak geçici olarak sistem yöneticisi olarak hareket edebilir ve normalde erişemeyecekleri komutları çalıştırabilir.

Su komutu ayrıca kullanıcıların kök kullanıcı hesabına veya işletim sistemi yöneticisine tam ve kalıcı olarak geçiş yapmasına da olanak tanır. Kullanıcılar su komutunu kullanarak, kök kullanıcı hesabına giriş yaparak ve yönetici erişimi gerektiren komutları çalıştırarak sisteme tam erişim sağlayabilirler.

Sudo ve su komutu arasındaki temel fark, sudo kullanarak bir kullanıcının belirli bir komut için geçici olarak yönetici erişimi elde edebilmesi, su kullanarak ise kullanıcı hesabını şu şekilde değiştirerek kalıcı olarak yönetici erişimi elde edebilmesidir: Kök hesap tam erişim kazanır sisteme.

Bu makaleyi okumaya devam ederken, her komutun avantajlarını ve sınırlamalarını ve sudo veya su kullanımı arasında seçim yaparken neleri dikkate almamız gerektiğini keşfedeceğiz.

Burada anlattıklarımız hem Linux sisteminde hem de Linux sunucusunda çalışacaktır . Linux işletim sisteminin hayranıysanız, sunucunuzda bulundurabilirsiniz. Bunun için Linux sanal sunucu satın alma sayfasına gidebilirsiniz .

Sudo nedir?

Süper kullanıcı do veya yedek kullanıcı do anlamına gelen sudo, kimliğe bürünme gerektirmeden süper kullanıcı istemini yürüten bir komuttur.

Çalıştırmak istediğiniz komuttan önce sudo komutunu kullanarak kimliğinizi değiştirmenize gerek kalmadan o komutu yükseltilmiş yönetici ayrıcalıklarıyla çalıştırabilirsiniz. Başka bir deyişle, sudo kullanarak komutları yönetici erişimine sahip normal bir kullanıcı gibi çalıştırabilirsiniz.

/etc/sudoers dosyasındaki ayarlarınıza bağlı olarak, bireysel komutları root olarak veya başka bir kullanıcı olarak verebilirsiniz. Komutları root yetkisiyle çalıştırmaya devam etmek için her zaman sudo komutunu kullanmalısınız. Örneğin, Nginx paketini kurmak istiyorsanız şunu çalıştırırsınız:

$ dnf install nginx

Ancak root değilseniz veya sudo grubunda değilseniz bir hata göreceksiniz. Bunun yerine şu komutu çalıştırırsanız:

$ sudo dnf install nginx

Parolanız istenecek ve sudo grubunun üyesiyseniz komutu çalıştırabilirsiniz.

Kök kullanıcı olarak etkileşimli bir oturuma geçmenin basit bir yolu şudur:

$ sudo –i

Sudo’yu kullanmanın ardındaki teori, çalıştırdığınız herhangi bir komuttan önce sudo verme eyleminin, yaptığınız şey hakkında daha fazla düşünmenizi sağlayacağı ve sınırsız güce sahip bir hesapla daha az hata yapacağınızı umarız.

komut su

Öte yandan su, kullanıcı değiştir veya yedek kullanıcı anlamına gelir. Temel olarak, belirli bir kullanıcıya geçiş yapıyorsunuz ve geçiş yaptığınız kullanıcı için bir şifreye ihtiyacınız var. Çoğu zaman geçiş yaptığınız kullanıcı hesabı kök hesaptır ancak sistemdeki herhangi bir hesap da olabilir.

Örneğin şunu yazarsanız:

$ su –

Yukarıdaki örnekte root hesaba geçiş yapıyorsunuz ve root şifresine ihtiyacınız var. (-) anahtarı, kendi ortamınızı değiştirmeden tek bir komut için yalnızca kök kullanıcıya güç vermek yerine, size kök ortamı (yol ve kabuk değişkenleri) verir.

$ su Bryant

İkinci örnekte Bryant’a geçiş yapıyorsunuz, dolayısıyla root değilseniz Bryant şifresine ihtiyacınız olacak.

Bryant yolunu ve ortam değişkenlerini içeren Bryant kullanıcı hesabına geçmek istiyorsanız (-) anahtarını kullanın:

$ su – bryant (-) anahtarı, o kullanıcı hesabıyla doğrudan oturum açmakla aynı etkiye sahiptir. Aslında o kullanıcı siz olursunuz.

Sudo neden alternatiflerinden daha iyi?

Sudo, erişimi yükseltmenin en iyi ve en güvenli yoludur. Şimdi işleri yapmanın başka bir yoluna bakalım. “su” switch user komutu root şifrenizi isteyecek ve size # sembolüyle gösterilen bir süper kullanıcı komutu verecektir. Bu sembol # “Tehlike! Root olarak oturum açtınız!”. Vereceğiniz ilk komut iyi sonuç verebilir. Ancak unutmanız, root olarak oturum açmanıza neden olacaktır. Kötü bir yazım hatası ve olmaması gereken bir şey oluyor! İndirdiğiniz sahte MP3 yerine tüm sabit sürücüyü sildiniz.

Sudo komutunu kullanarak her komuttan önce “sudo” girmelisiniz. Bu, normal kullanıcı moduna dönmeniz gerektiğinin hatırlatılmasına gerek olmadığı ve daha az kilitlenme meydana geleceği anlamına gelir.

sudoers dosyası

Bu dosya sudo’nun karanlık ve gizli kısmıdır. Bu dosya, yükseltilmiş erişim elde etmek için sudo komutunu kimlerin kullanabileceğini kontrol eder. Bu dosya genellikle /etc/sudoers dizininde bulunur. Bu dosyayı düzenlemenin en iyi ve en güvenli yolu visudo komutunu kullanmaktır. Bu komut, dosyayı düzenlemeniz ve kaydetmeniz için vi düzenleyiciyi yükseltilmiş erişimle açacaktır. Ayrıca sudoers dosyasını da kilitler, böylece başka kimse onu düzenleyemez.

Düzenleme tamamlandıktan sonra bu komut, dosyayı basit hatalara karşı kontrol eder. Bu, sudo dosyasını düzenlemenin herhangi bir düz metin düzenleyiciyi kullanmaktan daha güvenli bir yoludur. Bu dosya birçok parametre içermektedir. Hangi gruptaki hangi kullanıcıların hangi komutları çalıştırabileceğini belirleyebilirsiniz. Aşağıdakileri ekleyerek kendimize sudo’ya erişim izni vereceğiz:

username   ALL=(ALL)       ALL //gives user "username" sudo access%wheel     ALL=(ALL)       ALL //Gives all users that belong to the wheel group sudo access

Belirtilen kullanıcı adı artık tüm kök ayrıcalıklarını kullanabilecektir. Ayrıca bir kullanıcının veya grubun ALL parametresi yerine yalnızca belirli hizmetlere veya sunuculara sudo erişimine sahip olmasına da izin verebilirsiniz.

Sudo ve su arasındaki fark

Linux ile çalışırken yönetim programlarını çalıştırmanın iki yolu vardır. “Su” komutunu kullanarak root kullanıcıya geçebilir veya “sudo” komutunu kullanabilirsiniz. Hangisini kullanacağınız, sahip olduğunuz Linux türüne bağlıdır. Fedora, Red Hat ve openSuSE gibi bazı Linux dağıtımları kök hesaba erişime izin verirken, Ubuntu ve Debian gibi diğerleri bunu yapmamaktadır. Bu blogda Ubuntu’dan bahsediyorum.

Unix su komutu “yedek kullanıcı”, “süper kullanıcı” veya “kullanıcı değiştir” anlamına gelir ve root olarak oturum açmanıza ve sistemde istediğinizi yapmanıza olanak tanır.

Sudo, “yedek kullanıcı” veya “süper kullanıcı” anlamına gelir ve mevcut kullanıcı hesabınızı geçici olarak root ayrıcalıklarına yükseltmenize olanak tanır.

‘Sudo’ ile hâlâ hesabınızı kullanıyorsunuz, ancak root erişimiyle, ‘su’ ile ise aslında root olarak oturum açmış oluyorsunuz. Ayrıca ‘sudo’daki root erişimi yalnızca sınırlı bir süre için geçerlidir. Bu süre dolduktan sonra root erişimi elde etmek için şifrenizi yeniden girmeniz gerekecektir.

‘Sudo’yu kullanarak, ‘su’ ile yapabildiğiniz hemen hemen aynı şeyleri yapabilirsiniz. Bunu kullanmak için tüm kök komutların başına “sudo” eklemeniz yeterlidir. Kök kullanıcı erişimine sahip olmak tehlikeli olabilir, ancak su yerine sudo kullanmak sisteminizin güvenliğini sağlamanıza yardımcı olabilir. Eğer Linux kullanıyorsanız ve işlemlerinizi güvenli bir şekilde yapmak istiyorsanız bu iki komutu bilmeniz ve anlamanız gerekmektedir.

Sudo ve su komutlarını kullanma

Uyarı: Sudo’yu bir kullanıcının bir işlemi gerçekleştirmesine izin verecek şekilde yapılandırmanın o kullanıcıya kök izinleri vermekle eşdeğer olduğu konusunda sizi burada uyarmalıyım. Bir kullanıcıya sudo gücü vermeden önce bunun güvenlik ihtiyaçlarınıza uygun olduğundan emin olmanız önerilir.

  Linux, Ubuntu ve Centos’ta ftp sunucusunun nasıl kurulacağını öğrenmek için buraya tıklayın

Sudo’nun temel formunu kullanmak çok basittir. Bilgisayarınıza yeni yazılım yüklemek için dpkg komutunu çalıştırmanız gerektiğini düşünün. Komutu yalnızca normal bir kullanıcı olarak verirseniz dpkg -i software.deb, kullanıcının bu komutu yürütmek için uygun erişime sahip olmadığını bildiren bir hata mesajı alırsınız. Bunun nedeni, normal kullanıcıların varsayılan olarak bir Linux makinesine program yükleyememesidir. Bir Linux makinesine program yüklemek için süper kullanıcı erişiminizin olması gerekir. Bu nedenle, kurulumu başarılı bir şekilde çalıştırmak için bunun yerine komutu sudo dpkg -i software.debvereceksiniz .

Sudo komutunu kullanarak root kullanıcı erişimine izin verin

Güvenliğin önemli olduğu ortamlarda root kullanıcı hesabına ve şifresine erişimin kısıtlanmasını öneriyorum. Sudo’yu kullanarak, sistem yöneticileriniz belirli kullanıcılar (veya kullanıcı grupları) için Ubuntu’daki kullanıcılara root erişimini etkinleştirebilecektir . Daha da önemlisi, tüm komutlar ve bağımsız değişkenler, güvenlik protokolünüzün ve uyumluluk davranışınızın bir parçası olarak günlüğe kaydedilecektir . Etkinliği günlüğe kaydetmek için sudo güvenlik politikanızı yapılandırdığınızdan emin olun. Bunu dosyayı kullanarak /etc/sudoersyapabilirsiniz . Sudoers dosyasının içinde, sudo komutlarıyla sunucuya erişimi kontrol etmeyi kolaylaştırmak için kullanıcı gruplarınızı ve komut setinizi yapılandırın.

Ubuntu’da sudo kullanıcısı nasıl oluşturulur

Sudo komutu, normalde yalnızca kök kullanıcıya verilen normal kullanıcıların bir bölümünden normal kullanıcılara yönetim erişimi vermenizi sağlar. Aşağıda, sunucunuzun sudoers dosyasını değiştirmek zorunda kalmadan Linux’ta sudo erişimiyle yeni bir kullanıcı oluşturmanın en kolay yolunu  göstereceğim . Sudo’yu yalnızca mevcut bir kullanıcı için yapılandırmanız gerekiyorsa 3. adıma geçin.

Sudo erişimine sahip yeni bir kullanıcı oluşturma adımları:

1. Kök hesapla Ubuntu sunucunuza giriş yapın.

ssh root@server_ip_address

2. Sisteme yeni bir kullanıcı eklemek için “adduser” komutunu kullanın.

(Hesaplarınızda yer almamızı istemiyorsanız, ‘asam’ı oluşturmak istediğiniz kullanıcıyla değiştirdiğinizden emin olun!)

adduser asam

Komut ekranına yeni kullanıcı şifresini girin ve onaylayın. Bunu yaparken güçlü bir şifre kullanmanız önemle tavsiye edilir.

  • Şifrenizi girin:
  • Yeni şifreyi tekrar girin:
  • Şifre: Şifre başarıyla güncellendi

Yeni kullanıcı bilgilerini ayarlamak için talimatları izleyin. Tüm bu bilgileri boş bırakmak için varsayılan ayarları kabul edebilirsiniz.

Kullanıcı bilgilerini girin:

Kullanıcı adı için kullanıcı bilgilerini değiştirin:

(Yeni değeri girin veya varsayılan olarak ENTER tuşuna basın)

3. Sudo grubuna bir kullanıcı eklemek için “usermod” komutunu kullanın.

usermod -aG sudo asam

Ubuntu’da varsayılan olarak sudo grubunun üyelerinin sudo erişimi vardır.

4. Yeni kullanıcı hesabında sudo erişimini test edin.

Yeni kullanıcı hesabına geçmek için su komutunu kullanın.

su – username

Yeni bir kullanıcı olarak, süper kullanıcı izniyle çalıştırmak istediğiniz komutun başına “sudo” ifadesini ekleyerek sudo’yu kullanabildiğinizi kontrol edin.

sudo command_to_run

Bir oturumda sudo’yu ilk kez kullandığınızda sistem sizden hesap şifresini isteyecektir. Devam etmek için şifreyi girin.

Çıktı:

[sudo] password for asam:

Kullanıcı (asam) doğru gruba atanmışsa ve doğru şifreyi girdiyseniz sudo tarafından verilen komut root erişimiyle yürütülecektir.

Bir sudo kullanıcısını kaldırma adımları

Asam kullanıcı hesabını kullandıktan sonra, şu kök komutu kullanarak onu (beni) hiçbir dosyasını silmeden kullanıcı hesabından kaldırabilirsiniz:

deluser asam

Sudo erişimi olan, root olmayan başka bir hesapla oturum açtıysanız bunun yerine aşağıdakini yazabilirsiniz:

sudo deluser asam

“Asam” kaldırıldığında asam ana dizininin de kaldırılmasını tercih ederseniz, root olarak aşağıdaki komutu verebilirsiniz:

deluser --remove-home asam

Bu komutu, sudo erişimine sahip, root olmayan bir kullanıcı olarak çalıştırıyorsanız, bunun yerine şunu yazabilirsiniz:

sudo deluser --remove-home asam

Daha önce bir kullanıcının sudo erişimini kaldırdıysanız ve ilgili satırı tekrar kaldırmak istiyorsanız aşağıdaki komutu yazarak kaldırabilirsiniz:

visudo

Veya sudo erişimine sahip, root olmayan bir kullanıcıysanız şu komutu kullanabilirsiniz:

sudo visudo

root ALL=(ALL:ALL) ALL

derek ALL=(ALL:ALL) ALL # DELETE THIS LINE

Bu adım, aynı ada sahip yeni bir kullanıcının yanlışlıkla sudo erişimi elde etmesini önler.

Sudo neden yeterli değil?

Artık size su ve sudo hakkında kısa bir giriş yaptığım için bu komutun ne olduğu ve ne kadar güçlü olduğu hakkında fikir sahibi olmalısınız. Ama şimdi ne yazık ki seni hayal kırıklığına uğratmak zorundayım. Görüyorsunuz, sudo size Sanallaştırma Erişim Yönetimi’ni (PAM) yönetmek için “uygun” bir yol sunarken, süreç zahmetlidir ve özellikle ortamınız büyük ve çeşitliyse, ortamınızdaki erişimi kontrol ederken artan riske yol açabilir.

Sudo’yu düzgün bir şekilde kullanmak, sudoers dosyalarını oluşturmaya ve dağıtmaya çok zaman harcayan yüksek vasıflı (ve yüksek ücretli) sistem yöneticileri gerektirir. Sudo ayrıca sizi “en az ayrıcalık” sağlayacak şekilde programlamak ve çalıştırmak için sistem yöneticinizin bireysel uzmanlığına güvenmeye zorlar.

Bugün piyasada bulunan Unix/Linux sanal erişim yönetimi (PAM) çözümleri, sudo’ya oldukça verimli ve etkili alternatifler sunuyor. Bu modern yaklaşımları kullanarak şirket içi dolandırıcılık riskini azaltabilir, mevzuat uyumluluğunu geliştirebilir ve sunucularınızı yönetmek için gereken çabayı büyük ölçüde azaltabilirsiniz.

Sudo komutunu kullanırken karşılaşılan 5 yaygın sorun

İşte Sudo’nun sahip olduğu sorunlardan 5’i.

  1. sudo etkili ve merkezi yönetimden yoksundur, bu da sistem yöneticilerinin sunucuda sudo dosyalarını oluşturmak ve dağıtmak için çok fazla zaman harcamasına neden olur.
  2. Sudo yerel dosyaları kontrol ettiği için güvenlik riski oluşturur. Güvenlik yöneticilerinin bu dosyaları doğru şekilde dağıtması gerekir. Ayrıca sudo yapılandırma dosyası yerel yöneticilerin kolaylıkla değişiklik yapabileceği şekilde kaydedilmektedir ki bu da büyük bir güvenlik riski oluşturmaktadır.
  3. sudo uyumluluk sorunlarına neden olabilir. Denetçiler dağıtılan sudo yapılandırma dosyalarından memnun değil; Çünkü “statik güven” kullanıyorlar. Bu nedenle sudo kullanımınız denetimleri geçme konusunda sorunlara neden olabilir.
  4. Sudo kullanan kuruluşların dosyayı dağıtabilmesi gerekir, bu nedenle iyi bir dağıtım uygulaması sürdürülmelidir, bu da kuruluşunuz için daha fazla maliyete yol açacaktır.
  5. sudo, yetkili kullanıcılar için kimlik doğrulama işleminin bir parçası olarak doğası gereği çok faktörlü kimlik doğrulama (MFA) bağlantısı sağlamaz.

Teorik olarak sudo kabul edilebilir bir araçtır ancak zayıf yönleri de vardır. Otomatik erişim yönetim sistemi kullanmanızı öneririm. Bugün piyasada bulunan Unix/Linux yetkili erişim yönetimi çözümleri, sudo’ya oldukça verimli ve etkili alternatifler sunmaktadır. Uygun bir PAM sistemi kullanarak, Unix/Linux sunucunuzun güvenliğini önemli ölçüde artırabilecek, düzenleyici denetimlerle uyumluluğu basitleştirebilecek ve basitleştirilmiş yönetim yoluyla gelişmiş üretkenlik sayesinde kesintisiz iyileştirmeler deneyimleyebileceksiniz. Doğru kullanıcı ayrıcalık yönetimi, kullanıcıları izole etmenize ve onlara yalnızca görevlerini gerçekleştirmek için ihtiyaç duydukları erişimi vermenize olanak tanır.

son söz 

Sudo komutu, kullanıcıların kullanıcı kimliklerini kullanarak yönetici erişimiyle (kök) komutları yürütmesine olanak tanır. Kullanıcılar sudo’yu kullanarak, kök kullanıcı hesabında oturum açmaya gerek kalmadan belirli komutları Yönetici erişimiyle çalıştırabilirler. Bu güvenlik mekanizması, sistem kaynaklarına kullanıcı erişimini kontrol etmek için kullanılır.

Buna karşılık, su (kullanıcıyı değiştir anlamına gelir) komutu, kullanıcıların kök hesaba veya yönetim erişimi olan başka bir hesaba geçiş yapmasına olanak tanır. Kullanıcılar su komutunu kullanarak başka bir kullanıcı hesabında oturum açar ve tüm komutları root erişimiyle yürütürler. Bu tür kullanıcı değiştirme, güvenlik nedeniyle yalnızca root erişimi olan kullanıcılarla sınırlandırılabilir.

Dolayısıyla, sudo ve su arasındaki temel fark, sudo’nun kullanıcıların kök hesaba giriş yapmaya gerek kalmadan yönetici erişimiyle komutları çalıştırmasına izin vermesi, su’nun ise kullanıcıların kök hesaba geçiş yapmasına izin vermesidir. Sudo ve su kullanımına gelince, sudo kullanmak daha iyidir çünkü kök hesabın şifresini paylaşmak yerine kullanıcılar gerekli komutları kimliklerini kullanarak çalıştırabilirler, bu da sistemin güvenliğini artırabilir.