Page 1 sur 2
Erreur de permission pour la commande Chown
Publié : 12 septembre 2013, 01:58
par Misoss
Bonsoir,
J'ai un soucis avec un script php sur mon serveur centOS.
je n'ai pas l'autorisation d'exécuter "chown" avec l'utilisateur apache
cependant le
Safe_mode du php.ini est bien sur
OFF
je pense donc il est nécessaire de faire exécuter l'utilisateur apache en mode sudo, mais sans mot de passe cependant je ne sais pas comment faire, je me tourne donc vers vous ^^
(à moins que vous ayez une autre idée pour régler ce problème).
Merci d'avance
Re: Erreur de permission pour la commande Chown
Publié : 12 septembre 2013, 08:50
par jibe
Salut,
Si je pratique assez souvent PHP, je n'en fais toutefois pas une utilisation si avancée. D'ailleurs, ça me semble un peu dangereux d'utiliser PHP pour modifier des droits d'accès aux fichiers... Est-ce d'ailleurs bien PHP qui est en cause ici ?
Pour moi, sauf besoin et autorisation spéciaux (root, et pas dans n'importe quel cas...), chown ne devrait (et normalement ne peut) être utilisé que par le propriétaire du fichier concerné, voire le groupe, pour le "donner" à quelqu'un d'autre. Le langage n'a rien à voir là-dedans, c'est simplement la sécurité du filesystem.
Il faudrait que tu précises ce que tu veux faire, et si ce n'est pas trop indiscret pourquoi, si tu veux qu'on puisse te proposer des solutions ou des contournements : donner des droits root à PHP/apache me semble très dangereux du point de vue de la sécurité du système ! Sans compter que je ne suis pas certain que ce soit possible... ni utile.
Il me semble à priori que, si plusieurs utilisateurs doivent avoir accès à ce fichier, il devrait être dès le départ créé avec les droits correspondants, en particulier au niveau du groupe : c'est là son utilité !
Re: Erreur de permission pour la commande Chown
Publié : 12 septembre 2013, 10:08
par Misoss
Salut,
Est-ce d'ailleurs bien PHP qui est en cause ici ?
Je pense oui, car le chown je peux le faire "à la main" et du coup la j'ai accès au ftp
Il faudrait que tu précises ce que tu veux faire, et si ce n'est pas trop indiscret pourquoi, si tu veux qu'on puisse te proposer des solutions ou des contournements : donner des droits root à PHP/apache me semble très dangereux du point de vue de la sécurité du système ! Sans compter que je ne suis pas certain que ce soit possible... ni utile.
Oui je sais que c'est dangereux, mais c'est pour un cas d'école

...
dans ce que j'ai pu survolé sur le net, j'ai vu que ça semble possible sur Ubuntu
je crée une appi Intranet avec laquelle je fais de la gestion d'utilisateur (création de profil LDAP; et FTP) j'ai donc besoin pour cela de créer les fichiers de config à la volée dans
/etc/vsftpd/vsftpd_user_config/ et créer le répertoire FTP
/home/ftp/users/$USER
(Je me demande si l'erreur de droit ne vient pas du fait que je suis dans le rep /home)
(Le problème n'aurais surement pas lieux si je restais dans le dossier d'apache /var/www/html ? ... Si oui, ce qui poserais autant de probleme de sécurité vis à vie des config client FTP, non ?)
Le problème de base est quand j'essaie de me connecté au ftp avec un utilisateur créée via l'intranet, j'ai cette erreur
500 oops config file not owned by correct user or not a file ... après plusieurs tests, j'ai résolu le problème en changent le propriétaire de mon fichier de config utilisateur.
exemple :
en
Ce qui me pousse donc à faire le
chown automatiquement via le script php
Re: Erreur de permission pour la commande Chown
Publié : 12 septembre 2013, 23:27
par jibe
Misoss a écrit :Est-ce d'ailleurs bien PHP qui est en cause ici ?
Je pense oui, car le chown je peux le faire "à la main" et du coup la j'ai accès au ftp
Ce n'est une preuve que si tu le fais par le même utilisateur ! Or, je ne pense pas que tu t'authentifies comme étant apache...
Le répertoire dans lequel tu veux intervenir appartient très probablement à root. Il faut donc être root pour avoir le droit de changer le propriétaire. Donc, ce n'est pas PHP qui est en cause, c'est simplement le système de droits d'accès de Linux !
Pas très clair, ton truc... Tu arrives à créer le fichier avec PHP, mais pas à le changer de propriétaire ? C'est assez bizarre ! Que ce soit en PHP ou en ligne de commande, je vois mal comment ça peut se produire... Si le répertoire appartient à root comme je suppose, tu ne devrais pas pouvoir créer le fichier. Et s'il appartient à apache, je ne vois pas pourquoi PHP refuserait de changer le propriétaire !
Re: Erreur de permission pour la commande Chown
Publié : 24 septembre 2013, 22:17
par Misoss
Bon j'ai changé la méthode mais toujours sans résultat concluant, le chown ne s’exécute pas alors que les autres commande ne pose aucun soucis, comment puis-je faire pour voir s'il me retourne une erreur ?
Au lieu de faire la procédure toute la procédure en PHP, je l'ai fais en Shell, et je l’exécute via PHP
Script PHP
Code : Tout sélectionner
<?php [...]
$commandAdd = escapeshellcmd("sh /etc/vsftpd/addftpuser.sh ".$login);
$outputAdd = shell_exec($commandAdd);
if ($outputAdd){echo '<br/>Enregistrement de la configuration ftp effectué pour l\'utilisateur '.$login.'<br/>';
var_dump($outputAdd);}
else{echo '<br/>Erreur d\'écriture de la configuration ftp pour l\'utilisateur '.$login.'<br/>';
var_dump($outputAdd);}
[...] ?>
/etc/sudoers
/etc/vsftpd/addftpuser.sh
Code : Tout sélectionner
#!/bin/sh
var1=$1
# cree le dossier utilisateur
mkdir /home/ftp/users/$var1
chmod 775 /home/ftp/users/$var1
sudo chown -hR vsftpd:vsftpd /home/ftp/users/$var1
#chown -R vsftpd:vsftpd /home/ftp/users/$var1 #HS ...
#cree le fichier de config
echo "#Config file for "$1 >> /etc/vsftpd/vsftpd_user_conf/$var1
echo "dirlist_enable=YES" >> /etc/vsftpd/vsftpd_user_conf/$var1
echo "download_enable=YES" >> /etc/vsftpd/vsftpd_user_conf/$var1
echo "local_root=/home/ftp/users/"$var1 >> /etc/vsftpd/vsftpd_user_conf/$var1
echo "write_enable=YES" >> /etc/vsftpd/vsftpd_user_conf/$var1
sudo chown -R root:root /etc/vsftpd/vsftpd_user_conf/$var1
#chown -R root:root /etc/vsftpd/vsftpd_user_conf/$var1 # HS ...
# affiche le succés
echo "Utilisateur FTP "$var1" ajouté avec succès"
________________________________________________________________
Peut-être qu'une autres solution est à envisagé, est-ce que les fichiers de conf des utilisateurs se trouvant dans /etc/vsftp/vsftps_user_conf/ doivent être obligatoirement en root
(ce qui est le cas pour le moment), n'y a t'il pas une solution pour qu'il exécute les conf qui appartienne à
apache:apache et à
vsftpd:vsftpd
/etc/vsftpd/vsftpd.conf
Code : Tout sélectionner
# No ANONYMOUS users allowed
anonymous_enable=NO
# Allow 'local' users with WRITE permissions (0755)
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
# if you want to LOG vsftpd activity then uncomment this log_ftp_protocol
# log_ftp_protocol=YES
connect_from_port_20=YES
# uncomment xferlog_file and xferlog_std_format if you DIDN'T use the line above
# with log_ftp_protocol - it must be excluding each other
# The name of log file when xferlog_enable=YES and xferlog_std_format=YES
# WARNING - changing this filename affects /etc/logrotate.d/vsftpd.log
#xferlog_file=/var/log/xferlog
#
# xferlog_std_format Switches between logging into vsftpd_log_file and xferlog_file files.
# NO writes to vsftpd_log_file, YES to xferlog_file
# xferlog_std_format=YES
#
# You may change the default value for timing out an idle session (in seconds).
#idle_session_timeout=600
#
# You may change the default value for timing out a data connection (in seconds).
#data_connection_timeout=120
#
# define a unique user on your system which the
# ftp server can use as a totally isolated and unprivileged user.
nopriv_user=vsftpd
chroot_local_user=YES
listen=YES
# here we use the authentication module for vsftpd to check users name and passw
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
# If userlist_deny=YES (default), never allow users in this file
# /etc/vsftpd/user_list , and do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
# for users that are denied.
userlist_deny=yes
# here the vsftpd will allow the 'vsftpd' user to login into '/home/vsftpd/$USER directory
guest_enable=YES
guest_username=vsftpd
local_root=/home/ftp/users/$USER
user_sub_token=$USER
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/vsftpd_user_conf
force_local_data_ssl=NO
force_local_logins_ssl=NO
# PASV - passive ports for FTP (range 44000 - 44100 ; 100 PASV ports,
# REMEMBER to OPEN FIREWALL FOR ALLOWING FTP Passive CONNECTIONS
# check "how to enable Passive FTP in IPTABLES": here or here
pasv_enable=YES
pasv_min_port=44000
pasv_max_port=44100
Re: Erreur de permission pour la commande Chown
Publié : 27 septembre 2013, 22:50
par Misoss
hey !!!
bon toujours plus de test et toujours autant de mauvaise nouvel le
J'ai testé d’exécuter le chown, avec cron (en tache planifié) ... mais toujours rien.
vsftpdtext.txt, est bien créée, mais la commande chown n'est pas exécuté...
Code : Tout sélectionner
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
*/5 * * * * sudo chown -R vsftpd:vsftpd /home/ftp/users/
*/5 * * * * sudo chown -R root:root /etc/vsftpd/vsftpd_user_conf/
*/5 * * * * echo "test" >> /etc/vsftpd/vsftpdtest.txt
Re: Erreur de permission pour la commande Chown
Publié : 08 octobre 2013, 21:28
par Misoss
bon bah un petit up, car je ne trouve toujours pas de solution :/
Re: Erreur de permission pour la commande Chown
Publié : 09 octobre 2013, 00:35
par nouvo09
à tout hasard que renvoient les commandes
cat /etc/passwd | grep vsftp
et
cat /etc/group | grep vsftp
?
Re: Erreur de permission pour la commande Chown
Publié : 09 octobre 2013, 11:32
par MarbolanGos
nouvo09 a écrit :à tout hasard que renvoient les commandes
cat /etc/passwd | grep vsftp
et
cat /etc/group | grep vsftp
?
Roh nouvo09 qui nous fait des
UUOC ! Cette commande fait la même chose :
Re: Erreur de permission pour la commande Chown
Publié : 09 octobre 2013, 14:38
par nouvo09
Mea culpa. Je reconnais volontiers que pour chaque commande on peut économiser 5 caractères.
Et que pour me le faire remarquer il en aura fallu 131.