Je travaille sur un site Web de contrôle d'accès restreint en parallèle à un site public. À l'heure actuelle, tous les paramètres d'accès utilisateur et de mot de passe de répertoire sont exécutés dans cPanel, cependant cPanel est un peu déroutant pour certains utilisateurs. Mais nous avons besoin dans le site d'accès restreint pour modifier la liste des personnes autorisées qui peuvent y accéder (et d'autres parties du site). Donc, j'essaie de configurer un script PHP sur le site à accès restreint pour faire quelque chose de similaire à cPanel afin de pouvoir éditer les fichiers passwd réels. Cependant, tout ce que j'ai essayé n'a pas fonctionné. Notre serveur web est LiteSpeed not apache (ne peut pas changer cela en raison de la configuration de l'hôte partagé). Il utilise des fichiers passwd dans un dossier en dehors du dossier accessible par le Web, référencé par les fichiers .htaccess. Après avoir regardé les accès existants listés, je peux voir qu'il ne semble pas utiliser le hachage MD5 salé qui est indiqué dans les documents apache: le mot de passe haché qui est stocké est différent de ce que je pense que je devrais attendre (par exemple le sel est significativement plus de 2 caractères), et pour des raisons de sécurité, je suis réticent à intégrer un algorithme de hachage de mot de passe particulier dans mon code. J'ai essayé d'utiliser l'utilitaire htpasswd normalement fourni avec apache via exec ou shell_exec, mais il n'est pas installé ou pas accessible (et j'ai essayé plusieurs chemins différents - vérifier même son existence par file_exists retourne false dans tous les cas, donc à peine une surprise qu'aucun des fichiers n'a changé!). J'ai passé ces deux derniers jours à faire différentes recherches dans différents ensembles de documentation pour voir ce que font LiteSpeed et/ou cPanel, mais mes recherches portent principalement sur les mots de passe de connexion cPanel et non sur les mots de passe de contrôle d'accès. J'ai essayé d'examiner le code source de cPanel mais je n'ai pas eu de chance de trouver quoi que ce soit.Besoin d'imiter le mot de passe d'accès/répertoire de l'utilisateur de cPanel
Si quelqu'un a une référence plus directe à un code source, ou quelque chose dans la documentation qui décrit comment exécuter la fonctionnalité d'ajout/de mise à jour/de suppression de mot de passe dans LiteSpeed, ce serait merveilleux. Même un moyen de déclencher plus directement la fonctionnalité cPanel serait utile (je sais qu'il y a une API mais le chemin vers elle est verrouillé sur mon hôte). Edit: Après le commentaire de Steve, je suis allé vérifier quelques éléments. Mes scripts peuvent voir les fichiers passwd indépendamment de l'emplacement du répertoire du script. Le fichier passwd a les permissions 644 comme je m'attendais, je prévois que l'utilisateur qui a les permissions d'écriture est celui que j'utilise pour me connecter à cPanel, qui n'est pas le nom d'utilisateur sous lequel le serveur fonctionne. Cela présente des difficultés supplémentaires. Éditer # 2: J'ai fait un test supplémentaire où j'ai créé un sous-répertoire temporaire protégé par mot de passe, puis ajouté un utilisateur directement du script PHP (copier-coller une des lignes existantes mais changé le nom d'utilisateur). Cela a bien fonctionné, le nouvel utilisateur a été ajouté, et cPanel a même vu le changement. Donc, les autorisations ne sont pas un problème. Edit # 3: J'ai joué et j'ai obtenu une chaîne en sortie de crypt qui correspond principalement à ce qui est dans le fichier passwd (j'ajouterai un message d'avertissement sur la page de réinitialisation pour m'assurer que le dernier algorithme est utilisé). Cependant, le sel recherché par la crypte est $ 1 $ < 8-char-rand-string> $ alors que ce qui est dans le fichier est $ apr1 $ < 8-char-rand-string> $. L'ajout de "apr" dans le sel provoque l'échec de la crypte :-(.
Cpanel utilise largement les permissions Linux. Vous ne serez pas en mesure de le faire sur un hôte partagé. Avez-vous besoin d'utiliser réellement ce type de permissions? Si les utilisateurs du site n'ont accès au serveur que via le site web (comme d'habitude), il vous suffit de lancer votre propre couche de contrôle d'accès en php/sql. – Steve
@Steve, juste pour être clair, je ne veux pas accéder à cPanel ou modifier les autorisations de cPanel. Je veux définir des permissions d'accès aux répertoires sous public_html, et des logiciels serveur tels qu'apache et litespeed intègrent ce type de mécanisme. Et j'aimerais éviter de construire ou d'utiliser notre propre contrôle d'accès si possible, pour limiter la maintenance. La référence à cPanel est que vous pouvez le faire dans cPanel, et je veux faire la même chose ou réutiliser cPanel pour le sous le capot. – greenbutterfly