Yürütülebilir bitler ayarlanmadığında neden root çalıştırılamıyor?


26

rootkullanıcı olabilir onun bile bir dosyaya yazma writeizinleri ayarlanmamış.

rootkullanıcı olabilir onun bile bir dosyayı okumak readizinleri ayarlanmamış.

rootkullanıcı izinleri ayarlanmamış olsa bile bir dizine girebilir .cdexecute

rootKullanıcı olamaz onun ne zaman bir dosyayı yürütmek executeizinleri ayarlanmamış.

Niye ya?

user$ echo '#!'$(which bash) > file
user$ chmod 000 file
user$ ls -l file
---------- 1 user user 12 Jul 17 11:11 file
user$ cat file                      # Normal user cannot read
cat: file: Permission denied
user$ su
root$ echo 'echo hello' >> file     # root can write
root$ cat file                      # root can read
#!/bin/bash
echo hello
root$ ./file                        # root cannot execute
bash: ./file: Permission denied

Yanıtlar:


25

Kısacası, yürütme biti özel olduğu için; o set değilse hiç , ardından dosya çalıştırılabilir bir değil olarak kabul edilir ve bu şekilde yürütülemez.

Bununla birlikte, yürütme bitlerinden BİR bile ayarlanmışsa, kök bunu gerçekleştirir ve yürütür.

Gözlemek:

caleburn: ~/ >cat hello.sh
#!/bin/sh

echo "Hello!"

caleburn: ~/ >chmod 000 hello.sh
caleburn: ~/ >./hello.sh
-bash: ./hello.sh: Permission denied
caleburn: ~/ >sudo ./hello.sh 
sudo: ./hello.sh: command not found

caleburn: ~/ >chmod 100 hello.sh
caleburn: ~/ >./hello.sh
/bin/sh: ./hello.sh: Permission denied
caleburn: ~/ >sudo ./hello.sh 
Hello!

0

İçinde yaşayan yaşlı bir gün sistem yönetimi araçlarında /etcgibi /etc/restore, /etc/rrestore, /etc/init, /etc/halteğer vb ne olur düşünün root'ler PATHolarak ayarlandı /etc:/binve rootran passwd.

Doğru işe yaramaz.

Daha da kötüsünü yapmak için, eski günlerde, ikili çalıştırılabilir dosyalarda sihirli başlıklar yoktu, bu nedenle ikili dosyanın çalıştırılabilir olup olmadığını kontrol etmek, izin bitlerini kontrol etmek dışında gerçekten mümkün değildi. Bu nedenle, dosyalar execaslında dosya olmadıkça (dizin yok, vb.) Ve en az bir yürütme biti ayarlaması olmadıkça * hedefleri yapmazlardı.

* Kontrol, bir kullanıcı modu işlevi olan execvp içinde olmuş olabilir.

Teoride olduğu gibi, herhangi bir şeyin bir kabuk betiği olabileceği hâlâ yararlı bir kontrol, o halde neden çıkarsın?

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.