Setuid Yazılımları Geliştirmek için İpuçları
Önceki XXIX. Oylum - Kullanıcılar ve Gruplar Sonraki
Setuid Yazılımları Geliştirmek için İpuçları
Setuid yazılımlarla tasarlanmamış kullanıcı erişimi vermek kolaydır, aslında; bundan kaçınmak için çok dikkatli olmanız gerekir. Burada tasarlanmamış erişimden korunma ve ortaya çıktığında zararlarını en aza indirme ile ilgili bazı ipuçlarına yer verilmiştir:
  • Çok gerekli olmadıkça özellikle root gibi ayrıcalıklı kullanıcı kimliklerle setuid yazılımlar kullanmayın. Özkaynaklara erişim için sadece bu özkaynaklara erişim yetkisi olan yeni bir ayrıcalıksız bir kullanıcı oluşturup bu kullanıcıyla o özkaynaklara erişmek daha iyidir. Yazılımınızı özel bir kullanıcı ve grubun kullanabilmesi için yazmanız daha da iyi olur.
  • exec işlevlerini etkin kullanıcı kimliği değiştirerek kullanırken dikkatli olun. Yazılımınızı kullanarak kullanıcıların değiştirilmiş bir kullanıcı kimlikle keyfi yazılım çalıştırmasına izin vermeyin. Bir kabuğun çalıştırılabilmesi özellikle kötüdür. Daha az belirgin olarak, execlp ve execvp bir potansiyel risk içerir (yazılımlar kullanıcının PATH ortam değişkenine bağlı olarak çalıştırıldığından dolayı).
    Bir yazılımı değiştirilmiş bir kullanıcı kimlikle exec işleviyle çalıştırıyorsanız, çalıştırılabilir olarak dosyanın tam ismini belirtin ve çalıştırılan bu dosyanın bulunduğu ve eriştiği dizinlerde sıradan kullanıcıların bir değişiklik yapamayacağından emin olun (Bu dosya ismine örneğin bir kabuk yerleştiremesinler ya da yapılandırma dosyasında bir değişiklik yapamasınlar).
    Ayrıca yazılıma aktarılan argümanları umulmadık yan etkilere karşı sınamalısınız. Benzer şekilde, ortam değişkenlerini de incelemelisiniz. Hangi argümanların ve değişkenlerin güvenilir olduğuna karar verdikten sonra tüm diğerlerini reddedin.
    Ayrıcalıklı yazılımlarda system işlevini asla kullanmayın, çünkü bu işlev bir kabuk açar.
  • Kullanıcı kimliğini sadece yazılımın kullandığı özkaynaklar erişebilen bir kullanıcı için sadece bu özkaynaklara erişirken kullanın, işi bittiği anda etkin kullanıcı kimliği kullanıcının kendi kimliği ile değiştirin. Bkz. Setuid Erişiminin Etkinleştirilmesi ve İptali.
  • Yazılımınızın setuid parçasının denetimindeki özkaynaklar dışında başka dosyalara da erişmesi gerekiyorsa, bu dosyalara yazılımı çalıştıran kullanıcının erişim izni olup olmadığına bakmalısınız. Bunu sınamak için access işlevini kullanabilirsiniz (bkz. Erişim İzinleri); bu işlev etkin kullanıcı kimliği değil gerçek kullanıcı ve grup kimliklerini kullanır.
Önceki Üst Ana Başlık Sonraki
Setuid Yazılım Örneği Başlangıç Oturumu Açan Kim?
Bir Linux Kitaplığı Sayfası