İçerideyim /sbinve shutdownizinleri olduğunu görüyorum rwxr-xr-x. Bu, birinin yürütebileceği anlamına gelmiyor mu?
shutdownemir hakkında konuşuyor .
shutdown.
İçerideyim /sbinve shutdownizinleri olduğunu görüyorum rwxr-xr-x. Bu, birinin yürütebileceği anlamına gelmiyor mu?
shutdownemir hakkında konuşuyor .
shutdown.
Yanıtlar:
Herkes yürütebilir shutdown, ancak sistemin kapatılmasını tetiklemek kök ayrıcalıkları gerektirir. Ancak shutdownsetuid değildir ve bu yüzden sadece root onu başarıyla çalıştırabilir. shutdownProgram ayrıcalıkları kontrol edip orada bir sorun olduğunu, ancak safça bir sistem kapatma çalıştı bile, hiçbir şey olsaydı bildirmek için güzel yeterlidir.
GLENDOWER: Çok derinden ruhları çağırabilirim.
HOTSPUR: Neden, ben de öyle ya da herhangi bir erkek; Ama onları aradığınızda gelecekler mi?
(Henry IV'ten)
shutdownfarklı değil /bin/rm. Herkes yürütebilir, ancak normal bir kullanıcı, /etcbaşka bir kullanıcının ana dizinini kaldıramaz .
Özellikle: Yalnızca kök yetkileriyle çalışan bir işlem (etkin UID 0), init sistemini sistem hizmetlerini durdurmaya, tüm kullanıcı işlemlerini sonlandırmaya ve makineyi gerçekten durduran sistem çağrısını düzenlemeye yönlendirebilir. (Eğer shutdownsetuid olsaydı, onu çağıran kim olursa olsun kök olarak çalışırdı, ama değil.)
shutdownBir GUI'den, örneğin control-alt-del ile görüşmeye ne dersiniz ? Bu durumda, shutdowndoğrudan başladığını initve kök ayrıcalıklarla çalıştığını anlamak önemlidir . Bu yüzden konsola giren herkes onu kapatabilir. Bu arzu edilmezse, control-alt-delete aslında çalışacaktır shutdown -a. (@ Bazılarının cevabında alıntı yaptığı belgelere bakın). Bu, shutdowno anda oturum açmış kullanıcının çalıştırmaya yetkili olup olmadığını kontrol etmeyi söyler . Ancak bu sadece shutdownbu senaryoda “root” olarak çalıştığı için geçerlidir .
shutdown, ama bu programın edemez geçerli kullanıcı kök ayrıcalıklara sahip olmadıkça aslında bir sistem kapatma tetikler. Sağ?
shutdown. Bir setuid programı, çalıştırılabilir dosyaya sahip olan kullanıcının izinleriyle çalıştırılır. Örneğin, /etc/passwdşifre dosyasını değiştirmenize izin vermek için kök izinleriyle çalışır. İçin man sayfasına bakınız chmod.
/usr/bin/passwdkök izinleriyle çalışır " olmalıydı ! /etc/passwdçalıştırılabilir değil (değiştirilmekte olan "şifre dosyası" dır).
shutdownUID'niz 0 ise, binary kendisi kontrol eder.
Strace çıktısına bakınız:
strace /sbin/shutdown -r -h now
...
...
geteuid() = 10001
setuid(10001) = 0
getuid() = 10001
write(2, "shutdown: Need to be root\n", 26shutdown: Need to be root
) = 26
exit_group(1) = ?
shutdown
if(getuid() != 0) printf("Need to be root");. Aslında hangi kaynak kodun olduğunu gösterir.
-A ile işaretlerseniz, kapatma işleminin erişim listesini kontrol edeceği anlaşılıyor:
ACCESS CONTROL
shutdown can be called from init(8) when the magic keys CTRL-ALT-DEL are pressed, by creating an appropriate entry in /etc/inittab. This means that every‐
one who has physical access to the console keyboard can shut the system down. To prevent this, shutdown can check to see if an authorized user is logged
in on one of the virtual consoles. If shutdown is called with the -a argument (add this to the invocation of shutdown in /etc/inittab), it checks to see
if the file /etc/shutdown.allow is present. It then compares the login names in that file with the list of people that are logged in on a virtual console
(from /var/run/utmp). Only if one of those authorized users or root is logged in, it will proceed. Otherwise it will write the message
shutdown: no authorized users logged in
to the (physical) system console. The format of /etc/shutdown.allow is one user name per line. Empty lines and comment lines (prefixed by a #) are
allowed. Currently there is a limit of 32 users in this file.
Şu anda -a bayrağı olmadan çağırdığınız için, yalnızca kök kapanmalarına izin vermek varsayılandır.
Başka kullanıcıların bu komutu çalıştırmasını istiyorsanız, o dosyayı yapılandırın ve bayrağını kullanın.
Why can't I execute shutdown when the permission is rwxr-xr-x?
İzin bitleri bir kullanıcı veya gruba dayalı erişim kontrolünü mutlaka dışlamaz.
-akomut satırından çağırmak farketmez: shutdown -aKök izinleri ile (hala initkontrol-alt-del'i sağlayan) çalıştırılmalıdır.