Bonjour à tous !
J’ai enfin trouvé des solutions à mon problème/demande !
La première solution que j’ai pu tester, c’est smbcacls, il s’agit d’un élément compris dans le package smb-client. Voici la man page : https://www.samba.org/samba/docs/current/man-html/smbcacls.1.html.
Grâce à cet outil, il est très facile de réaliser des opérations sur les permissions NTFS, changer le owner d’un fichier sur un système de fichiers à distance.
Voir quelques exemples ici : https://forums.freenas.org/index.php?threads/how-to-edit-cifs-permissions-from-the-cli.40594/.
Cependant, je n’ai pas pu utiliser cette solution car mon système de fichiers Windows est plus précisément un DFS (Distributed File System), et il s’avère qu’à travers de celui-ci, je n’ai pas réussi à utiliser smbcacls. Si quelqu’un connait la solution, je serais heureux de savoir comment faire .
Pour réaliser exactement ce dont j’avais besoin, j’ai utilisé la commande ssh avec laquelle j’envoi directement la commande à exécuter sur la machine distante (pour moi, il s’agit d’exécuter un script .bat Windows depuis une machine Linux).
Pour cela, j’ai procédé comme-suit :
Il ne faut pas oublier que lorsqu’on réalise une connexion à distance avec ssh, le mot de passe de l’utilisateur avec lequel on se connecte va être demandé.
Pour éviter cela, depuis ma machine cliente (mon serveur web Linux), j’ai généré une nouvelle clé ssh à l’aide de la commande ssh-keygen -t rsa -b 2048 avec l’utilisateur www-data . Elle vous génère ainsi une clé privée et une clé publique. La clé publique sera à renseigner plus tard dans les clés autorisées du serveur ssh Windows.
Il est demandé d’indiquer un nom pour les 2 nouvelles clés (au choix).
Ensuite, il vous demande d’entrer une passphrase (un mot de passe). Pour ma part, je ne renseigne pas de passphrase car ce sera mon interface web (Apache (www-data)) qui va automatiquement lancer une connexion à distance ssh, elle ne pourrait donc pas la démarrer sans renseigner ce mot de passe.
Après cela, j’ai créé le fichier config dans /root/.ssh dans lequel j’ai renseigné l’utilisation de la clé privée (la clé privé étant celle sans l’extension .pub).
La première ligne renseigne l’hôte distant et la deuxième identique le chemin vers la clé privée de www-data.
Maintenant, du côté Windows, j’ai installé openssh-serveur (tuto ici : https://www.server-world.info/en/note?os=Windows_Server_2012&p=openssh). Premièrement, j’ai copié le contenu de la clé publique (.pub) dans le fichier des clés autorisées qui se trouve dans c:\Users\xxx.ssh\authorized_keys. Deuxièmement, dans le fichier sshd_config, j’ai décommenté la ligne PubkeyAuthentication yes et changé les paramètres de PasswordAuthentication et PermitEmptyPassword à no.
Par sécurité, j’ai relancé le service sshd.
Je peux dès lors exécuter mon script.bat (stocké sur Windows) depuis mon client linux vers Windows sans renseigner de mot de passe : ssh Administrator@172.16.0.164 “c:\Users\Administrators\script.bat argument1 argument2”.
Pour terminer, pour faire exécuter cette commande depuis mon code php, j’ai utilisé la commande ssh2_connect qui renseigne l’hôte à contacter, ensuite ssh2_auth_pubkey_file où je renseigne l’utilisateur avec lequel je veux me connecter, le chemin vers les clés privées et publiques et pas de mot de passe comme je n’ai pas renseigné de passphrase !
Et finalement, j’exécute ma commande à l’aide de ssh2_exec !
En espérant que ça puisse aider d’autre personne dans le futur.
Un tout grand merci aux personnes qui ont pris la peine de proposer des solutions, ça fait ultra plaisir d’avoir des gens qui prennent de leur temps pour dépanner des gens qui galèrent !
@Eman @Clochette @jweber