Bir kök kullanıcının "kök" olarak adlandırılması gerekmez. whoamikullanıcı kimliğiyle ilk kullanıcı adını döndürür 0. $USERKullanı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 -uiçin etkili değil, kullanıcı kimliği -riç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/passwd0verilen 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 -ugeç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