Jump to content

[Resolvido] Criar Pasta em PHP


Recommended Posts

Posted (edited)

Boa noite, estou a utilizar o Fedora 10 e queria criar uma pasta na raíz "/" mas não estou a conseguir, se alguém poder dar uma vista de olhos ao código abaixo e dizer o que estou a fazer mal agradeço agradeço.

<?php
$n_pasta = $_POST["Pasta"];

mkdir("$n_pasta/");
?>

Comprimentos,

Hélder

Edited by Hélder
Posted

O user que corre o script php, quando o script é chamado pelo browser, normalmente é www-data.

Ainda que seja possivel criares pastas na raiz com este user, não me parece de todo uma boa prática... O melhor será criares as pastas num subdirectorio por exemplo /var/www/pastas e este directorio tem que ter permissões de escrita para o user www-data.

Posted (edited)

Estive a ler algumas coisas e fiz algumas mudanças.

<?php
$n_pasta = $_POST["Pasta"];

mkdir("/$n_pasta", 0777);
?>

Com isto penso que já deveria de dar para criar a pasta na raíz, no entanto continua a dizer que não tenho permissões.

Edited by Hélder
Posted

O Apache não corre como root...

“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Posted (edited)

Sim dá, mas existe uma razão para não o fazer

- o utilizador do apache passa a ter permissões para fazer tudo no sistema, incluindo estoirar com tudo.

O ponto fundamental ainda continua a não ser respondido :

"É mesmo necessário criar na raiz do sistema de ficheiros ?"

Edited by HappyHippyHippo
IRC : sim, é algo que ainda existe >> #p@p
Posted (edited)

O ponto fundamental ainda continua a não ser respondido :

"É mesmo necessário criar na raiz do sistema de ficheiros ?"

É o seguinte tenho um trabalho para a escola que é automatizar o servidor de reposição de imagens da escola, para isso tenho que criar/manipular algumas pastas e ficheiros na raiz.

Edited by Hélder
Posted

Custa-me acreditar que isso tenha que ser feito à custa de pastas criadas na raiz...

De qualquer forma, a minha sugestão continua a ser a que referi com um link para a Wikipedia: utilizar setuid.

Basicamente tens que criar um programa (compilado, possívelmente em C), que efectua a criação das pastas e que é chamado pelo PHP que lhe fornece um parâmetro que é a pasta a ser criada. Esse programa deverá criar a pasta e alterar as permissões da mesma para que possam ser realizadas operações pelo Apache Web Server.

chown root:apache my_setuid_program
chmod 4750 my_setuid_program

Resultará qualquer coisa do género:

-rwsr-x---.  1 root apache   6579 Sep 27  2012 my_setuid_program

Quando chamares o programa através do PHP, este irá ser executado pelo utilizador apache, com permissões de root. Como o programa faz um conjunto de operações limitadas que são implementadas por ti, se o desenvolveres correctamente, não deverás ter grandes problemas de segurança.

Agora, aquilo que eu te recomendo mesmo, mesmo, mesmo, é veres se não há mesmo nenhuma forma de dares a volta a isso e passares a utilizar outra pasta mais adequada para isto.

“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.