Page 1 sur 1

Posté : 28 juin 2003, 12:45:00
par Casio
Salutations

Sur un serveur web en interne (Xitami), j'ai décidé de deplacer un forum que je gere actuellement chez un provider (qui rame)....

J'ai donc installé une version de PHP compatible... jusque la c bon...

MAIS ... bien qu'etant Admin sur le serveur, je n'arrive pas a changer les CHMOD (obligatoire pour un forum) des fichiers et me retourne l'erreur suivante quand je tente (par le biais du serveur ftp de Xitami ou d'un autre, G6 FTP Serveur) :

(000016) 28/06/2003 13:40:26 - web (192.168.0.3) > SITE CHMOD 777 testssi.inc
(000016) 28/06/2003 13:40:26 - web (192.168.0.3) > 500 Unknown command.

Kkun peut t'il me renseigner ??

Le serveur tourne sous 2000 Adv serveur. Peut on changer sinon les CHMOD en local a partir de Windows ?



Posté : 28 juin 2003, 19:39:00
par logun
apparement, le programme ne gere pas la commande (le serveur), il utilise peut-etre une autre commande, avec G6ftp il faut definir les droit d'acces directement dans le programme, mais à§a ne change pas les attibuts des fichiers sur le serveur :

tu peux mettre un fichier avec des droit de lecture, d'enreg, d'execution, mais si il est protégé sur le serveur tu ne pourra pas le modifier, etc ...

pas tres clair tout à§a !

Posté : 28 juin 2003, 21:29:00
par Casio
Le serveur en question est le serveur bureautique de l'association dont je m'occupe.
J'ai le compte admin, et tourne sous un 2000 adv serveur...

Comment faire alors ??


Posté : 29 juin 2003, 02:54:00
par logun
salut,

en fait il y a deux autorisations : celle donnée par le serveur et celle attribué aux fichiers lors de l'enregistrement sur le pc.

si tu est directement sur le serveur ,pas par un acces reseau, essai de passer les fichiers en rwx pour tout le monde, je ne connais pas le serveur mais la protection vient peut-etre directement de Win2000 avec des droits d'utilisateurs que tu ne pourras modifier qu'en local, je penses .


Posté : 29 juin 2003, 14:15:00
par Casio
et donc concretement, que puis je faire ??

Posté : 29 juin 2003, 17:43:00
par logun
il faudrait que tu controles, en local , les droits d'acces aux dossiers et fichiers que tu veux rendre accessibles, et y ajouter peut-etre des autorisations pour le serveur du forum.

voila ce que j'ai trouvé dans le man de chmod :

chmod 777, droits utilisateur (suite)

Concrètement:

Concrètement, lorsque vous transférez un fichier chez votre hébergeur via FTP. Les fichiers que vous déposez vous appartiennent ainsi qu'au groupe auquel vous appartenez (qui bien souvent à  le même nom que votre identifiant. C'est donc un groupe à  un seul utilisateur).

Donc à  partir du moment o๠vous ne modifiez pas les droits par défaut, vous pouvez les manipuler (renommer, effacer) comme vous voulez avec votre client FTP.

Là  ou cela se complique, c'est lorque votre script PHP génère un fichier. Car pour générer un fichier votre script PHP doit être executé et c'est le serveur Web qui execute le script. Ce serveur WEB est généralement lancé par une tierce personne (ou plus exactement, pour raison de sécurité, on lui attribue son propre identifiant d'utilisateur) qui est souvent "nobody" du groupe "nobody". Et donc le fichier qui est créé dans votre espace appartient à  ce "nobody". Et si par défaut, "nobody" n'autorise pas les autres à  modifier le fichier généré alors vous (connecté avec votre identifiant habituel) serez dans l'impossibilité de le supprimer de votre espace.

Que faire? La seule solution c'est d'exécuter les commandes de suppression du fichier ou de modification des droits sous le compte "nobody". On pourrait être tenté de se connecter via FTP sous l'identifiant "nobody" mais sans connaître le mot de passe c'est mission impossible. Non, il faut que ce soit un script PHP qui (lancé par le serveur WEB) fasse l'opération.

A l'inverse si vous venez de déposer un fichier via votre accès FTP, le serveur Web, lui, ne sera peut-être pas en mesure de le modifier

De ce cas, il faut modifier les droits depuis l'accès FTP.

Modifier les droits sur un fichier:

Pour modifier les droits sur un fichier, via le serveur Web, il existe la fonction chmod(). Celle-ci prend 2 paramètres, l'un étant le nom du fichier et l'autre les droits à  affecter. Par contre, cette fois ci la codification ne se fait généralement pas par l'intermédiaire de lettres mais de chiffres. 3 chiffres précédés d'un zero (indiquant une représentation en octal et non en décimal). Le premier chiffre correspondant aux droits du possesseur du fichier, le second aux droits des membres du groupe, le troisième aux droits des autres.

Pour déterminer la valeur de ces chiffres il faut faire la somme des droits que l'on veut attribuer. 4 pour les droits en lecture, 2 pour les droits en écriture et 1 pour les droits en exécution. Ainsi,

droits en lecture+droits en écriture+droits en execution = 7
droits en lecture+droits en execution=5
etc...

Ainsi pour être très permissif sur un fichier il suffit de faire un script qui fasse un chmod("fichier",0777). Ce qui n'est pas nécessairement la bonne solution mais qui est rudement efficace.

Pour modifier les droits sur un fichier, depuis le compte FTP, il suffit de taper chmod 0777 fichier (si l'on veut libérer tous les droits sur le fichier).

j' espere que à§a t'aide

si le serveur est un Windows , je ne sais pas si la commande chmod est comprise, à  vérifier .
vu le N° d'erreur, ce n'est peut-etre pas un probleme d'acces mais de nom de commande !