Szasztok!
Permission denied.
Próbáltam létrehozni egy fájl touch() függvénnyel, de a fenti hibaüzenettel tért vissza a php.
hogyan oldahtom meg ezt a problémát? hogyan adhatok magamnak jogosultságot hozzá? root-ként futtatom.
Az Apachot és a PHP-t egyébként forrásból forítottam.
UHU 2.0
Thx.
MysteryKe.
- 3602 megtekintés
Hozzászólások
csúnyaként futtatsz webszerveren futo szkriptet?
vagy az apache fut rootként?
Fujj.
Szóval azt mondod, hogy a touch('filenév') FALSE-sal tér vissza.
Nézzed meg a tényleges usert, akinek a jogaival fut a script: $1 = get_current_user()
Illetve nézd meg, hogy melyik konyvtarba akarsz irni: $2 = getcwd(), majd nezd meg, hogy a $1 usernek van-e ÍrásI joga a $2-be.
--
"SzAM-7 -es, tudjátok amivel a Mirage-okat szokták lelőni" - Robi.
- A hozzászóláshoz be kell jelentkezni
megnéztem ezzel a 2 függvénnyel
root-ként fut és a könyvtár amibe írni akarok az: /www/htdocs/dispo
szal hogyan lehet megoldani a problémát?
- A hozzászóláshoz be kell jelentkezni
Érdekes, hogy a root nem tud oda írni.
A könyvtár jogai?
Konzolból oda tudsz touch teszt.txt -zni?
Ezenkívül:
$handle = fopen("c:\\data\\info.txt", "w+");
Ha ez is faszkodik, akkor
http://hu.php.net/manual/en/function.is-writable.php
ezt nézd meg. De tuti nem root-ként fut az az apache...
--
"SzAM-7 -es, tudjátok amivel a Mirage-okat szokták lelőni" - Robi.
- A hozzászóláshoz be kell jelentkezni
biztos nem rootkent fut, valamit benezel.
max egy process fut rootkent a <1024 port bind miatt, de utana mar nobody/www-data/apache, akarmi.
csak okosan.
t
- A hozzászóláshoz be kell jelentkezni
halihó!
- A hozzászóláshoz be kell jelentkezni
valaki nézzen már ide is, mert holnapra meg kell csinálnom ezt a melót.
thx.
- A hozzászóláshoz be kell jelentkezni
valaki! hahó! már tegnapra készen kellett volna lennem ezzel a melóval!! pleaseeeee!
- A hozzászóláshoz be kell jelentkezni
safe_mode = Off
@ php.ini
(phpinfo())
vagy
Probáld a külső touch al, /bin/touch
Más könyvtárba sem enged ?
- A hozzászóláshoz be kell jelentkezni
Nézd. Akár root-ként futtatsz webszervert, akár nem, ha egy egyszerű jogosultsági problémával a HUP-ra szaladsz, akkor az nem munka, amit végzel, hanem kontárkodás. Az ilyen infohuszárok, mint Te, rontják az informatikai piacot itthon, és közvetett módon lenyomják az olyan emberek fizetését, akik értenek is a szakmájukhoz. Ezért szeretnélek megkérni arra, hogy ilyen probléma esetén ne "valaki", ne "halihó", ne "tegnapra", hanem menj haza tanulni.
- A hozzászóláshoz be kell jelentkezni
+1
t
- A hozzászóláshoz be kell jelentkezni
Már bocsi, de asszem ez ember gyakorlatban tanulhat csak meg igazán valamit. azzal, hogy órák hosszat ülök otthon a gép előtt, és tanulok esetleg olyan dolgokat, amiket lehet hogy nem is fogok használni, azzal csak azt érem el, hogy a fontosabb dolgokra nem fogok tudni kellő figyelmet fordítani és így a büdös életben nem fogok rendesen megtanulni valamit. egyébként már régóta php-zgatok és régebben összeraktam otthon egy ütött kopott gépet szervernek, melyen még SuSE 6.4 futott és külön-külön kellett fordítanom rá az Apachot, a PHP-t meg a MySQL-t. Akkor a fájlfeltöltés és létrehozás működött rendesen, csak most ütköztem ebbe a hibába. (Azóta nem kellett a fájlfeltöltéssel foglalkoznom, mellesleg az EasyPHP-s cuccal ez működött rendesen). Egy ismerős mondta (akinek mellesleg programozó cége van), hogy válalljak el mindent, csak tudjam, hogy ha esetleges új ismeretre kell szert tennem, tudjam melyik könyvet vegyem le a polcról. Csak a PHP-s könyv ezzel a résszel nem foglalkozott. Egyébként köszi a jóindulatodat. THX.
- A hozzászóláshoz be kell jelentkezni
Nem haragszom. Csak egy rövid kitérő az eredeti problémával kapcsolatban:
Az Apache jellemzően root-ként indul, hogy néhány, superuser privilégiumot igénylő műveletet végre tudjon hajtani (pl. 1024 alatti portok bindelése). Ezután, ha nincs elszexuálva a konfiguráció, eldobja ezt a privilégiumot, és egy gyakorlatilag nulla jogosultsággal rendelkező felhasználóként folytatja működését (lásd: User és Group direktívák). Ahhoz, hogy egy PHP szkript fájlműveleteket végezhessen, ennek a felhasználónak kell jogosultságokat biztosítani a kérdéses fájlokra. Ezt UNIX alatt többféleképpen el lehet érni.
1) Létezik a béna megoldás, amikor az Apache user tulajdonába kerülnek a fájlok - ez biztonsági szempontból a lehető legrosszabb.
2) Létre lehet hozni egy csoportot az adott projekt fájlműveleteinek megvalósítására, ehhez hozzá lehet adni az Apache user-t és be lehet állítani a fájl jogosultságait a csoportra.
3) Be lehet állítani a 3x3-as jogosultságrendszer 'others' szereplőjének jogait.
4) Lehet wrapper-t készíteni, ami csak meghatározott fájlműveleteket engedélyez, ez lehet setuid-os
5) Lehet ACL-eket is használni
6) ...
Ha Neked semmi másra nincs szükséged, mint hogy a touch működjön, az 1 sor:
# chmod -R 777 /www/htdocs
Állítom, hogy minimális UNIX-os felhasználói ismeretek birtokában ezt tudhatnád - láthatólag ez Nálad hiányzik. A jelek szerint nem tudod, hogy melyik könyvet kell levenni a polcról. Véleményem szerint a hűbelebalázs viselkedésed egy olyan megoldást fog eredményezni, ami, még ha működik is, az egyéb körülményeket (pl. biztonsági megfontolásokat) figyelembe véve nem lesz optimális. Ez, tekintve, hogy a webes alkalmazások talán a legtöbb oldalról sebezhető informatikai megoldások, kritikán aluli termékhez vezet. Ugyanakkor felteszem, hogy nem dolgozol kifejezetten drágán, mi több, a profi programozók áránál jóval jutányosabban végzel munkát. Ezzel a cselekedeteddel az amúgy is szűk hazai piacon ellehetetleníted azoknak a megélhetését, akik Nálad jóval több tapasztalattal rendelkeznek.
Ezért állítom, hogy kártékony vagy az informatikus társadalomra nézve. Félre ne érts, nem azt akarom mondani, hogy ne kérdezz. Tanulni csak úgy lehet, ha az ember nála többet tudóktól kérdez. Csak nem illik azért pénzt kérni, amit valójában nem tudsz. Nem értek egyet a programozó ismerősöddel, hogy bármit el kell vállalni. Szerintem jobban járnál, ha beiratkoznál egy felsőoktatási intézménybe.
- A hozzászóláshoz be kell jelentkezni
köszi turul16, mindjárt kipróbálom.
- A hozzászóláshoz be kell jelentkezni
Warning: copy(csatolmanyok/be): failed to open stream: Permission denied in /www/htdocs/dispo/feltolt.php on line 11
Nem sikerült másolni!!!!!!!
A feltolt.php fájl tartalma:
----------------------------
----------------------------
<?php
$feltoltes_konyvtar = "/www/htdocs/dispo/csatolmanyok";
$fajl = $_FILES['userfile'];
$dir = "csatolmanyok/";
print("Fájl: $fajl
");
if (isset ($fajl))
{
copy($_FILES['userfile']['tmp_name'], $dir.$_FILES['userfile']['name']) or die("Nem sikerült másolni!!!!!!!");
include("mysql.php");
}
else
{
print("Nem létezik a fájl!!!");
}
?>
és ugyanez van sime touch("valami_fajl.txt") -vel is.
Pedig a php.ini-ben átállítottam a safe_mod=On -ra.
- A hozzászóláshoz be kell jelentkezni
Épp az hogy "Off" kéne, habár nekem mintha ment volna anélkül is.
- A hozzászóláshoz be kell jelentkezni
ez meg off eseten sem menne, hisz ez nem egy safe_mode hiba.
mellesleg ls -l
de leirom meg parszor, mert lathatoan a kerdezo nem nagyon szeret olvasni:
ls -l
ls -l
ls -l
ls -l
ls -l
ls -l
ls -l
ls -l
t
- A hozzászóláshoz be kell jelentkezni
DEhogynem szeretek olvasni, most végeztem ki az x+1-edik sci-fi könyvet is, csak nincs otthon internethozzáférésem, és így nem tok mindíg fent lenni.
- A hozzászóláshoz be kell jelentkezni
Köszi, a chmod -R 777 ... megoldotta a problémámat.
- A hozzászóláshoz be kell jelentkezni
Te nem érted amit mondok, vagy tényleg ennyire rossz szándékú vagy?
- A hozzászóláshoz be kell jelentkezni