je vien de le faire le script.sh marche en manuel mais pas a partir du bouton d’execution
n’aurai-je pas fais d’erreur dans le script.php ??? qu’est-ce qui bloque ??? lol je vais devenir dingue mais je lacherai pas l’affaire
Dis, tu peux nous donner les retours des commandes suivantes en tant que root
:
ssh machine2@xxx.xxx.xxx.xxx ls -ld /home/dossier/mesfichiers
sudo -u www-data ssh machine2@xxx.xxx.xxx.xxx ls -ld /home/dossier/mesfichiers
À adapter aux vraies valeurs, bien sûr !
oui voilà le résultat dans l’ordre :
- drwxr-xr-x 2 root root 4096 déc. 06 10:05 /home/nino/mimi
pour la 2eme je suis deja en root en faisant "sudo "-u… = sudo : commande introuvable
Essaie su - www-data -c 'ssh machine2@xxx.xxx.xxx.xxx ls -ld /home/dossier/mesfichiers'
. Le programme sudo
n’est peut-être pas installé parce que tu n’as pas créé d’utilisateur ordinaire…
voila le resultat
could not create directory ‘/var/www/.ssh’.
hostkey verification failed
Et voilà le problème, ton script sera exécuté par apache en tant que www-data
, mais cet utilisateur ne peut pas accéder au dossier à copier.
Alors, pour ça, tu peux utiliser sudo
, mais tu ne sembles pas familier de cet outil, ou placer le setuid sur le script.
Il faut faire chmod 4750 /var/www/script.sh
, puis chown root:www-data /var/www/script.sh
, enfin, dans ton script php, tu remplaces exec ('/bin/sh /var/www/script.sh');
pas exec ('/var/www/script.sh');
Pour l’explication, le setuid permet à un programme (ou script) de se lancer en tant que l’utilisateur qui en est le propriétaire. Du coup, si le propriétaire est root
, il faut faire très attention à la sécurité de ton script.
bonjour @Almtesh ,j’ai suivi t conseils etape par etape sauf comme tu as dis pour le setuid et j’ai bien fais des recherches dessus mais j’ai toujours pas su l’utiliser une aide ou un exemple de ta pars ne serais pas de refus
merci pour ton explication
Je ne comprend pas, tu as fait ce que je t’ai conseillé et ça n’a pas fonctionné ou ça a fonctionné, mais tu ne comprends pas pourquoi (ou tu veux comprendre avant de le faire) ?
oui j’ai tout fais sauf pour la partie setuid que j’ai envi de comprendre et de le faire en meme temps
et non sa n’a pas fonctionné et j’aimerai aussi comprendre lol je veux apprendre
En fait, c’est assez simple, dans les métadonnées de chaque fichier (tout est fichier), tu as une zone de seize bits :
- trois bits pour le type de fichier (fichier, dossier, pérophérique bloc (disque dur, par exemple), périphérique caractère (port série, par exemple), pipe, socket ou lien symbolique)
- trois bits qui définissent les droits du propriétaire du fichier
- trois bits qui définissent les droits du groupe propriétaire du fichier
- trois bits qui définissent les droits des autres utilisateurs
- trois bits qui définissent d’autres caractéristiques sur les droits du fichier.
Pour les droits du fichier, on a :
- lecture : permet la lecture du fichier (tout type sauf dossier) et le listage des fichiers dans le dossier
- écriture : permet l’écriture du fichier (tous type sauf dossier) et l’ajout de fichier dans le dossier
- exécution : permet l’exécution (pour les fichiers) ou la traversée (pour les dossiers), je ne sais pas à quoi sert ce droit sur les autres types de fichiers.
Le droit d’exécution et de traversée est valable même en l’absence de droit de lecture. C’est-à-dire que tu peux exécuter un fichier que tu ne peux pas lire et que tu peux traverser un dossier dont tu ne peux pas lister le contenu (mais bonne chance pour trouver le sous-dossier si tu n’en as pas le nom).
Pour les autres droits du fichier, tu as :
- Le setUID qui permet, à l’exécution d’un fichier, d’attribuer le processus à l’utilisateur propriétaire du fichier : exemple du programme
su
, dont l’exécutable appartient àroot
et a le setUID, si un utilisateur le lance, il sera lancé en tant queroot
dans tous les cas. - Le setGID, pareil, mais pour le groupe
- Le sticky bit qui permet, sur un dossier, de restreindre la supression des fichiers à leur propriétaire respectif
Pour les autres cas, je ne m’en sers jamais, je n’ai donc pas le détail.
L’utilisateur root
ignore toutes ces permissions (sauf pour le setUID et le setGID, je ne sais pas comment ça se passe).
tres tres tres interessant et je n’avais vraiment aucune idee a ce propos je suis bien eclairé en tout cas merci
cependant je suis comme un poseur de probleme et j’ai supprimé script.php sans faire attention et puis je l’ai reecris parfaitement comme le premier mais la page ne fonctionne pas “erreur 500”
la poisse
Il faut que tu fasses des sauvegardes pour te prémunir contre ce genre de maladresse, lol !
euhhh oui tu as raison…pas evident de travailler seul quand on dois presenter un mémoire dans 3 mois
lol c ce que je vien de faire (sauvegarder tout les fichiers sur usb a l’instant )
il existe aussi backuppc qui est très efficace, il optimise la place avec des liens physique et a une interface graphique très efficace.
Est-ce que cette interface graphique est par le web ? Sinon, c’est hors-sujet.
tout à fait, en cgi
c’est fou que personne connaisse cet outil, il est vraiment très pro, il réduit de beaucoup l’espace nécessaire pour les backup, il peut faire des backup distant sur du linux, du windows, du mac sans installer de client…
il peut sauvegarder de petites machine comme un parc informatique complet, des serveurs de 10 Mo jusque 10To sans problème
oui l’interface graphique est par le web
salut grigric tu peu m’eclairer plus stp sur le cgi
est-ce que je dois avoir une database pck je n’en utilise pas
non t’inquiètees, tout est géré dans des fichiers. Quand tu installes l’outil, il te faut choisir un serveur web (moi j’ai des préférences pour apache2) , il te donne le mot de passe par défaut et tout fonctionne immediatement.