İçerideyim /sbin
ve shutdown
izinleri olduğunu görüyorum rwxr-xr-x
. Bu, birinin yürütebileceği anlamına gelmiyor mu?
shutdown
emir hakkında konuşuyor .
shutdown
.
İçerideyim /sbin
ve shutdown
izinleri olduğunu görüyorum rwxr-xr-x
. Bu, birinin yürütebileceği anlamına gelmiyor mu?
shutdown
emir 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 shutdown
setuid değildir ve bu yüzden sadece root onu başarıyla çalıştırabilir. shutdown
Program 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)
shutdown
farklı değil /bin/rm
. Herkes yürütebilir, ancak normal bir kullanıcı, /etc
baş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 shutdown
setuid olsaydı, onu çağıran kim olursa olsun kök olarak çalışırdı, ama değil.)
shutdown
Bir GUI'den, örneğin control-alt-del ile görüşmeye ne dersiniz ? Bu durumda, shutdown
doğrudan başladığını init
ve 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, shutdown
o anda oturum açmış kullanıcının çalıştırmaya yetkili olup olmadığını kontrol etmeyi söyler . Ancak bu sadece shutdown
bu 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/passwd
kök izinleriyle çalışır " olmalıydı ! /etc/passwd
çalıştırılabilir değil (değiştirilmekte olan "şifre dosyası" dır).
shutdown
UID'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.
-a
komut satırından çağırmak farketmez: shutdown -a
Kök izinleri ile (hala init
kontrol-alt-del'i sağlayan) çalıştırılmalıdır.