itiraf etmeliyim, ben gerçekten tamamen * nix dosya sistemi izni modeli var asla. oh, rwxrwxrwx şeyler çok karmaşık değildir, ancak programlar yeni dosyaları oluşturmak ve ben onları işleyebilir nasıl zaman ben kolayca karışık olsun.
benim şimdiki sorun ftp ve php üzerinde yüklenenler (özel bir sunucu üzerinde ve veri gerçekten kritik değildir dosya yapan bir (kapalı kaynak) java-Appletinizin karışımı, yani dünya-writeability hakkında tüm çok endişeli değilim .)
ftp (1000) ve apache / php (81): yani, ben iki kullanıcımız var. grupları uyuşmuyor, yani yanılmıyorsam eğer, temelde "diğerleri" demektir.
ftp ait 0777 için ayarlanmış bir "ithalat" dizin.
Bir ziyaretçi yükleme sayfasını acesses varsa, onun adı adını bir alt benim komut dosyası tarafından oluşturulur. en ziyaretçiler adı "foo", bu yüzden 0777 için set "import / foo", kullanıcı 81/php var, diyelim.
yanında, ziyaretçi bu dizinde (test.jpg) için bir dosya yüklemek için java uygulaması kullanır. r - -, kullanıcı ftp dosya izinleri şimdi rw-r.
first question
the first thing i don't understand is: i'm able to unlink that file through php.
why? the users don't match, and the file isn't world writeable.
is this because of the parent directories world-write permission? understandably, i can't chown or chmod through php.
şimdiye kadar hiçbir sorun, uzun okudum ve everythings tamam bağlantısını gibi çünkü.
second question
java uygulaması güzel tüm dizinleri, upload yapabiliyor. Ben bunu eğer, yeni alt ithalat / foo / test izinleri rwxr-xr-x/ftp vardır. Bu dizindeki dosyaları rw-r--r--/ftp vardır.
şimdi sansızım. i (i başarılı bir şekilde yapmak okuma dışında) bu dosyalar, hiçbir Unlinking, hayır chmod / Chowning ile bir şey yapamaz. onlar sadece oturup ve Diskspace yalayıp yutmak.
bu nedenle, yeni dosyalar var varsayılan izinleri arkasındaki plan ne? benim tahminim bu sürece oluşturma komut dosyası başka bir şey onları chmodlayın değil, Umask yoluyla ayarlanmış iznine sahip olduğunu. Haklı mıyım?
third question
ben ne bu konuda ne yapabilirim? demek, mantıklı bir kişi ne yapardı? i / i ftp kullanıcı için izin maskesini değiştirmek gerekir mi? (Ben sadece dün Umask öğrendim). Bu tüm ftp trafiği etkileyecek gibi ben bu konuda çok rahat değilim, değil mi? Ayrıca, sunucu adanmış ama bir yönetici değilim, bu yüzden benim erişimi kısıtlanmış edilir.
i just had another idea. before starting this post i read up on the basic linux permission stuff. first, the sticky bit isn't set anywhere in the directory chain. and then, there it was: the "set user ID bit".
so, my current plan is to write a simple shell script with owner ftp that is other-executable with setuid. the script just transfers the file in the import directories ownership to user php.
then, after each import i just exec()
that file from my php-script and process files further.
O çalışmak istiyorsunuz? ve daha önemli: bu temiz ve yasaldır? veya sysadmin kafamda bir ödül koymak istiyorsunuz?
çok THX!
update: ben sadece (bir ftp bağlantısı üzerinden) WinSCP ile uid bit (4755) ayarlamak için çalıştı, ancak bu şekilde çalışmıyor - o (diğer bit olsun sadece uid bit "unutmak" gibi görünüyor ) ayarlayın. neden? neden sahibi uid kendisi ayarlayamıyor? bu sunucu-özel ya da genel durum nedir?
update 2:
wikipedia says it all
Yürütülebilir kabuk komut uygulandığında nedeniyle güvenlik açıkları ihtimalinin artması nedeniyle, birçok işletim sistemleri setuid niteliğini görmezden.
root uid-bit ayarlamak için hala mümkün mü?