Bir kök kullanıcının "kök" olarak adlandırılması gerekmez. whoami
kullanıcı kimliğiyle ilk kullanıcı adını döndürür 0
. $USER
Kullanıcı kimliğine sahip 0
, ancak farklı bir ada sahip olan, oturum açan kullanıcının adını içerir.
Hesabın root olarak giriş yapıp yapmadığını kontrol eden tek güvenilir program:
id -u
Kullandığım -u
için etkili değil, kullanıcı kimliği -r
için gerçek kullanıcı kimliğine. İzinler edilir tespit tarafından etkin bir kullanıcı kimliği değil, gerçek bir.
Testler
/etc/passwd
0
verilen sırada kullanıcı kimliğine sahip aşağıdaki kullanıcı adlarını içerir :
rootx
root2
Olarak oturum açtığınızda root2
, aşağıdaki sonuçları verir:
whoami
: rootx
echo $USER
: root2
(program boş bir ortamda başlatılmışsa bu boş bir dize döndürür, örneğin env -i sh -c 'echo $USER'
)
id -u
: 0
Gördüğünüz gibi, diğer programlar bu kontrolde başarısız oldu, yalnızca id -u
geçti.
Güncellenen komut dosyası şöyle görünür:
#!/bin/bash
if ! [ $(id -u) = 0 ]; then
echo "I am not root!"
exit 1
fi