Bu soru tamamen genel ve sadece benim durumum için geçerli değildir, ama ... Kök olmayan bir kullanıcının kök ayrıcalıklarıyla belirli bir komut dosyasını yürütmesini istediğim küçük bir meşgul kutusu cihazım var. Örneğin $1
, cmdline (!!) üzerinde gönderilecek tek değişkenin ( ) hangi ana bilgisayar adı gönderileceği DHCP'yi etkinleştirmek için bu küçük komut dosyası gibi bir şey :
#!/bin/bash
udhcpc -b -i eth0 -h $1
böyle udhcpc çalıştırmak kök erişimi gerektirir, bu nedenle bunu yapmak /etc/sudoers
için bu satırı içerecek şekilde değiştirmeyi planlıyorum :
joe ALL = NOPASSWD: /path/to/enable_dhcp.sh
"joe" komutunun bu komut dosyasını kök ayrıcalıklarla kolayca çalıştırabilmesini sağlar:
sudo /path/to/enable_dhcp.sh
ve bir parola istenmemesi (joe bunu yazabilmeyi istediğim için istediğim budur).
Şimdi .. Kök ayrıcalıkları ile kolayca çalıştırılabilen bir komut dosyasında kullanmanın KORKUNÇ bir fikir olduğunu biliyorum (ya da en azından benim yaptığımı düşünüyorum) $1
.
Peki ... bununla başa çıkmanın en iyi yolu nedir? Enjeksiyon saldırılarına açık olmasa da, joe'nin kök ayrıcalıklarıyla istediğimi yapmasına, bir değişkeni geçirmesine (ya da bir ortam değişkeninde olduğu gibi etkili bir şekilde yapmasına) nasıl izin verebilirim?