Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Mkdir ja chmod-oikeudet

Sivun loppuun

pistemies [01.08.2004 15:09:37]

#

Onko kukaan saanut ratkaistua tämöistä ongelmaa:
Luon hakemiston mkdir-funktiolla ja chodaan sen 777, mutta vaikka FTP-ohjelmalla hakemiston oikeudet näyttää olevan oikein, se on kuitenkin vajaa, koska siihen ei voi uploadata tai copyoida tiedostoja. Miten sitä pitää säätää, että toimii?
Koodi on näin yksinkertainen:

	@mkdir($uusi_hakemisto);
  	@chmod($uusi_hakemisto,0777);

Huom: Toimii PHP:n windows-veriossa oikein mutta ei minun int2000-palvelimella

folio [01.08.2004 20:04:01]

#

Vaihda palveluntarjoajaa tai ohjelmointikieltä, esim. PERLiin.

pistemies [01.08.2004 23:18:03]

#

Löysin tuommoisen lyhyen javascript-pätkän. Mutta on tuo js sen verran heikompi minulla, että miten tätä javascriptiä täytyy käyttää, että toimii?

 public boolean mkdir()

Blaze [02.08.2004 00:00:38]

#

No käyttäjäpuolen Javaskriptillä et taatusti saa luotua hakemistoa palvelimelle, ja serveripuolen JS vaatii jo sitten jotain ihan muuta, kuin perus-Apachen ja PHP-tulkin.

folio [02.08.2004 10:38:20]

#

ASP riittää, mutta miksi et käyttäisi PERLiä kun se jopa kuuluu int2000:n tukemiin ohjelmointikieliin. PHP ja safe mode kun ei todellakaan ole suunniteltu kansioiden/tiedostojen kanssa työskentelyyn.

pistemies [02.08.2004 11:04:58]

#

Mietin tässä miten tuo kannattaisi toteuttaa. Teen ohjelmaa, joka menee laajaan käyttöön. Olisi hyvä tietää esim. semmoinen asia, toimiiko tämä mkdir+chmod muilla palvelimilla hyvin. Onko se vain int2000:n heikkous?
Voisiko joku vaikka testata miten se toimii mbnetissä ym. Tässä tällainen pikainen skripti, jolla asian voi testata eri palvelimilla:

<?php
$testi_dir="testaus";
  @mkdir("$testi_dir");
  @chmod("$testi_dir",0777);

$file=$testi_dir."/uusi.html";
touch("$file") or die("Ei oikeuksia hakemistoon <i>$testi_dir</i>!");
chmod("$file",0666) or die("Ei oikeuksia hakemistoon <i>$testi_dir</i>!");
echo "Uusi hakemisto ja tiedosto on luotu";
?>

Minulla tuo ilmoittaa tämän tyyppisen virheen:
[edit]
touch(): SAFE MODE Restriction in effect. The script whose uid is 3716 is not allowed to access /www/int2000/X/XXXXX/html/testi/testaus owned by uid 99
[/edit]

TETRIS [02.08.2004 13:20:13]

#

Safe Mode taitaa olla päällä. Muistaakseni Mbnetissäkin se on päällä :/

pistemies [02.08.2004 14:58:22]

#

Löysin tuollaisenkin funktion:

https://www.php.net/manual/en/function.umask.php

Millähän tavalla tuolla voi hakemistoja muokata? Ei ollut yhtään koodi-esimerkkiä.....
@ )

tsuriga [02.08.2004 17:21:31]

#

On niitä, ei vaan näy tällä hetkellä:

lainaus:

Some services are temporarily unavailable --
These include the documentation user notes (including their submission interface)

Valitettavasti en nyt muista mitä tuo tekee, mutta user notes sisälti siitä esimerkkejä, kunhan ko. palvelu saadaan taas pystyyn.

pistemies [03.08.2004 18:14:52]

#

Sain ylläpidolta tällaisen selvennyksen virheeseen:

Virheilmoitus johtuu siitä, että scriptin
omistajana on teidän käyttäjänne, kun taas testaus
hakemiston omistajana on nobody.

Virheilmoituksen ei pitäisi ilmetä kun scriptin
sekä hakemiston omistajana on sama käyttäjä (joko
nobody tai oma käyttäjätunnuksenne). Hakemiston
omistajaksi tulee käyttäjä itse kun hakemisto
luodaan FTP:llä.

Miten muutetaan tuo, että scriptin ja hakemiston omistaja olisi sama, esim. tuo nobody?

kasetti [03.08.2004 18:17:00]

#

chown

pistemies [03.08.2004 19:25:55]

#

Mikä tässä voisi vielä olla väärin?

<?php
	mkdir($uusi_hakemisto);
  	chown($uusi_hakemisto, fileowner($_SERVER['SCRIPT_FILENAME']));
    	chmod($uusi_hakemisto,0777);
?>

Ilmoittaa edellisten lisäksi tällaista:
Warning: chown(): Operation not permitted in /www/int2000/X/XXXXX/html/testi/testaus

Sain tuon chown:n virheilmoituksen pois muuttamalla sitä näin:

	mkdir($uusi_hakemisto);
  	chown($uusi_hakemisto, fileowner($uusi_hakemisto));
    	chmod($uusi_hakemisto,0777);

Mutta edelleen tämä ei toimi, ilmoittaa samat virheet kuin ennen tätä chown-skriptiäkin.

pistemies [04.08.2004 12:57:14]

#

Eipä tuo chown tunnu toimivan. Johdonmukisesti se pitäisi olla suunnilleen näin

chown($uusi_hakemisto, fileowner($kayttajatunnus));

Fileowner ei kuitenkaan huoli siihen mitään. (Jos sitäkään).
Onko tuo fileowner sopiva nykyisiin PHP-versiohin tuollaisena, vai onko se PHP 5.0 versiossa toimiva? Pitäisikö sille olla erillinen funktio? Ja onko sellaisia saatavilla?

Edit: Olikohan olemassa jotakin funktiota, jolla voi lukea hakemiston käyttöoikeudet/omistajan?

Edit 2: Samoin on tuo chown. Tässä uusin testi:

	mkdir($uusi_hakemisto,0777);
	chmod($uusi_hakemisto,0777);
        fileowner($uusi_hakemisto);
        chown($uusi_hakemisto,$ftp_tunnus);

Se ilmoittaa tällaisen virheen:

testi.php kirjoitti:

Warning: chown(): Operation not permitted in /www/int2000/X/XXXXX/html/testi/testi.php on line 33

ideoita?
Onko?

renni [05.08.2004 21:50:13]

#

Yleensä chown käyttö on sallittu vain rootille. Oletko ihan varma että haluat edes vaihtaa omistajaa?

pistemies [06.08.2004 13:45:53]

#

Minun tapauksessa ainut keino jolla tuota PHP:n luomaa hakemistoa voi käyttää, on muuttaa hakemiston omistajaa.
Ajv:lla oli tuolla toimiva systeemi:

http://cgi.evtek.fi/~k0101030/testikansio2/

Mitähän käyttöjärjestelmää hän mahtaa käyttää, onko mahdollisesti käytössä windows, kun voi surutta luoda hakemiston ja uploadta sinne tiedostoja....

ajv [06.08.2004 14:11:28]

#

Ihan linukka tuolla on pohjalla. Palvelimella sattuu vain olemaan php:ssä safe_mode = off :P

pistemies [06.08.2004 15:57:18]

#

Voiko mitenkään muuten vaikuttaa .htaccess tiedostolla niihin funktioihin, joita ei safe_modessa ole kielletty?

Int2000:ssa chown kuuluu sallittuihin, samoin muut funktiot, joita tuossa yhteydessä käytetään.
Kielletyt ovat seuraavat:

int2000.net kirjoitti:

PHP:n safe moden käyttöönoton yhteydessä seuraavien funktioiden käyttö estetään: dl, shell_exec, exec, system, passthru, popen, set_time_limit, phpinfo, putenv


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta