Linux'ta kök saldığında yapışan global bir ortam değişkeni ayarlayın


2

Bir Linux kutusuna SSH verdiğimde, /etc/profiledosyanın whoamikomut sonuçlarını global bir ortam değişkenine kaydetmesini istiyorum .

Ben komutuyla kök gitmek için olsaydı sudo su -, ben kök giderken o komut tekrar çalıştırmak istemiyoruz. whoamiRoot kullanmadan önceki normal kullanıcı adımın sonucunu kullanmasını istiyorum ve root kullandığımda /etc/profiledosyayı tekrar çalıştıracak olsa bile bu değişkene root kullanıcısı olarak erişmesi gerekiyor .

Bu komutu komutta yalnızca bir kez çalıştırmak için ne yapabilirim /etc/profile?

Yanıtlar:


5

Oturum açma kabuğunu geçen ortam değişkenlerini korumak, -m anahtarını gerektirir . Sudo geçmişindeki ortam değişkenlerini korumak , / etc / sudoers içindeki env_keep öğesinde bir değişiklik yapılmasını gerektirir . O zaman bile, bunu yapmak iffettir.

Neyse ki, bununla ilgili başka yollar da var. Örneğin, tty'niz başlangıçta olarak giriş yapmış olduğunuz kullanıcıya aittir. Bunu / etc / profile sonuna ekleyerek:

TTY=$(tty)
if [ -n "$TTY" ]; then
    WHOAMI=`ls -al $TTY | awk '{print $3}'`
fi

WHOAMI değişkenini tty'nin sahibine, hem sudo hem de sudo olmayan sudan köke geçecek şekilde ayarlayacaksınız:

[corman@localhost ~]$ sudo su -
Password:
[root@localhost ~]# echo $WHOAMI
corman
[root@localhost ~]# logout
[corman@localhost ~]$ su -
Password:
[root@localhost ~]# echo $WHOAMI
corman
[root@localhost ~]#

2
Yazmak için biraz temizleyiciWHOAMI=$(stat --format="%U" "$TTY")
glenn jackman

3

Bunun lognameyerine kullanabilirsiniz whoami!


+1. sudo yükseltmeleri yapıldığı zaman whoami'nin kafası karışır ve bazı betiklerin logname, bozuk dosya sahipliğini geri arama kullanıcısına geri döndürürken olduğu gibi, yanlışlıkla yanlışlıkla "root" olarak değiştirmek yerine, sadece betiği kimin çağırdığını bilmesi gerekir .
Vlueboy
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.