Linux su Komutu Nedir?

su (switch user) komutu sistemde kullanıcı değiştirmek için kullanılan bir yardımcı programdır.
syntax
su [options] [username
su komutu kullanımı
su komutu farklı bir kullanıcı olarak kabuğun çalışmasını sağlar. Varsayılan olarak, bir kullanıcı adı belirtilmezse, su komutu root kullanıcı olarak yeni bir kabuk açar. Aşağıdaki iki komut root olarak bir kabuk başlatmanızı sağlar. Komutu çalıştırdıktan sonra root kullanıcısı yeni kabuğu başlatmak için root parolayı girmeniz istenecek ve kimliği doğrulanırsa komutu çalıştıran kullanıcı geçici olarak root olacaktır.
su
su root

Yerel kabuk ve kullanıcı hesabına dönmek için exit komutunu kullanmamız yeterlidir.
Unutmayın root hesabı, diğer hesapların hepsine sorgusuz erişebilir.
Kullanıcının değiştirildiğini onaylamak whoami komutu kullanın. Bu komut size, geçerli kabuk oturumunu çalıştıran kullanıcının adını yazdıracaktır.
whoami
Oturum açma kabuğu üç yoldan belirtilebilir.
su –
su -l
su –login
su - ile su -l yazmakla aynıdır. Her iki komut da ortam değişkenlerinin çoğunu temizleyecektir.
su ve tireli su – komutları arasındaki fark, argümansız su komutunun orijinal kullanıcıya ait neredeyse tüm ortam değişkenlerini tutmasıdır. Bunun aksine, tireli su – komutu çoğu ortam değişkenini temizler. Sistemimizde birçok HOME , SHELL , USER , LOGNAME ve PATH gibi bir çok değişken bulunmaktadır. Neden böyle bir şeye ihtiyaç olduğunu sorgulayabilirsiniz. Kullanıcılar bazı hatalar alabilir ve bu hataları çözmek için yetkili kullanıcıya geçiş yapmamız yeterli olmaz. Yetkili kullanıcıda iken hata alan kullanıcını ile tüm şartlar oluşarak kullanıcı simüle edilmesi gerekebilir.
Şimdi değişkenin nasıl tutulduğuna bakalım. Mehmet kullanıcısında iken root kullanıcıya geçiş yapıyorum. $USER değişkeni ile kullanıcıya baktığım zaman root kullanıcısında olduğumuz halde değişkenin hala mehmet kullanıcısında takılı kaldığını görebilirsiniz.
echo $USER
su
echo $USER

Şimdi aynı işlemi, su komutuna kısa çizgi ekleyerek gerçekleştiriyorum. Bu sefer ortam değişkenlerini tutmadığını görebilirsiniz.
echo $USER
su -
echo $USER

Sonuç olarak bayraksız su komutu ile kısa çizgi veya -l içeren su arasındaki fark, bayraksız komutun ortam değişkenlerinizi tutması ve yalnızca kullanıcıyı değiştirmesidir.
Belirtmek istediğimiz bir başka kullanım seçeneği de su -c kullanımıdır. Terminal ekranındayken, isteğimiz bir kullanıcının shell oturumuna komut gönderebiliriz.
su - root -c 'ls -la'

Gördüğünüz gibi mehmet kullanıcısında olduğumuz halde, -c seçeği ile root kullanıcısıymış gibi ls -la komutunu çalıştırdık ve sonucunda root kullanıcısına ait bir sonuç aldık.