Gerçekten dikkatli olun: setuid ile birlikte komut dosyaları tehlikelidir!
Öncelikle, özellikle bu cevap ve güvenlik uyarısı üzerine bu soruya / cevaplara bir göz atın .
Komut dosyanızı hala setuid
set ile çalıştırmak istiyorsanız, kısa bir C programını sarmalayıcı olarak yazabilir ve setuid
bit'i derlenmiş ikili dosyaya koyabilirsiniz .
Sarıcı örneği:
int main(void) {
setuid(0);
clearenv();
system("/absolute/path/to/your/script.sh");
}
Başka bir çözüm kullanarak sudo
( burada belirtilen ):
Kök olarak, komut dosyasına yazma (ve belki başka) erişimini önleyin:
chown root /absolute/path/to/your/script.sh
chmod 700 / absolut/path/to/your/script.sh
Kök dışında kimsenin betiği değiştiremeyeceğini , örneğin ana klasörün erişim haklarını değiştirerek doğrulayın :
chown kökü / mutlak / yol / dan / sizin /
chmod 755 / mutlak / yol / için /
İçinde değiştirmek sudo erişim hakları /etc/sudoers
ile visudo
:
ALL ALL = (kök) NOPASSWD: / mutlak/path/to/your/script.sh
Ayarlar hakkında daha fazla ayrıntı (örneğin, belirli kullanıcılara veya gruplara erişimi kısıtlama) sudoers sayfasında bulunabilir.
Daha sonra, tüm kullanıcılar betiği şifre olmadan root olarak çalıştırabilir:
sudo /absolute/path/to/your/script.sh
Bu, yukarıdaki sarmalayıcı / setuid çözeltisini kullanmaya benzer.