2017-08-30 12 views
0

Je tente de créer un fichier en utilisant PHP dans un sous-dossier de mon dossier préféré.Création d'un fichier PHP avec différents utilisateurs et groupes en fonction de l'emplacement du nouveau fichier

J'utilise la commande suivante:

file_put_contents("/preferred_folder/subfolder/test_A.txt", "test_A"); 

Je reçois le message d'erreur suivant:

Warning: file_put_contents(preferred_folder/subfolder/test_A.txt): failed to open stream: Permission denied in /users/service/dummy_username/code.php on line ###. 

J'ai vérifié les autorisations de/preferred_folder/sous-dossier/en utilisant la commande suivante via PuTTY, où je suis connecté en tant que "pseudo_utilisateur", et je reçois la réponse suivante:

$ ls -l /preferred_folder/ 
drwxrwxr-x 7 1234567 1000001 120 Apr 30 13:35 subfolder 

Les autorisations d'écriture pour les "autres utilisateurs" ne sont pas activées, ce qui est prévu. D'autre part, je ne reconnais pas cet utilisateur ou le groupe donc je vérifié:

$ groups 1000001 
groups: 1000001: No such user 

En outre, « passwds getent 1234567 » ne retourne pas de valeur (et avec succès pour ne « dummy_username »). Voici où ça devient étrange; J'ai essayé de créer un fichier dans deux autres endroits comme un contrôle de santé mentale: le premier a des autorisations d'écriture pour les "autres utilisateurs" et le second est où mon script a été la création de fichiers avec succès pour les dernières années.

file_put_contents("/preferred_folder/test_B.txt", "test_B"); 
file_put_contents("https://stackoverflow.com/users/service/dummy_username/test_C.txt", "test_C"); 

Dans ces cas, les deux fichiers sont créés avec succès, mais l'utilisateur et le groupe des fichiers diffère en tant que tel:

$ ls -l /preferred_folder/test_B.txt 
-rw-r--r-- 1 ABCDEFG root 5 Aug 30 08:39 /preferred_folder/test_B.txt 

$ ls -l /users/service/dummy_username/test_C.txt 
-rw-r--r-- 1 dummy_username dummy_group 5 Aug 30 08:39 test_C.txt 

Je suis parti avec quelques questions:

1 Pourquoi l'utilisateur et le groupe des fichiers créés à partir de ce script sont-ils différents uniquement en fonction de l'emplacement du fichier? Je m'attends à ce qu'ils soient tous les deux possédés par "dummy_username".

2) Qu'est-ce/qui est l'utilisateur "ABCDEFG"? J'ai vérifié que le groupe "root" ne contient pas explicitement un tel utilisateur.

3) Qu'est-ce/qui est le groupe "1000001" et pourquoi l'utilisateur "1234567" ne fait-il pas non plus partie de ce groupe? 4) Enfin, hormis chmod 777, tout le dossier preferred_folder et ses nombreux niveaux de sous-dossiers, existe-t-il un moyen approprié et suggéré d'accorder des permissions spécifiques à mon nom d'utilisateur pour la création du fichier prévu?

Merci d'avance pour toute aide. Visiteur de longue date affiche pour la troisième fois.

Répondre

0

Les raisons pour lesquelles vous obtenez une autorisation refusée sont que l'utilisateur qui exécute PHP sur le serveur Web n'a pas les autorisations pour écrire dans ce répertoire.

Dans de nombreuses configurations nginx/apache, les serveurs Web sont configurés pour permettre à l'utilisateur www-data d'accéder à /var/www/html. Le répertoire racine de votre application Web.

L'écriture en dehors de ce répertoire entraînera des erreurs d'autorisation.

Il y a très peu de raisons pour PHP d'avoir accès aux répertoires en dehors de /var/www/html sauf si vous écrivez des scripts destinés au terminal.

Si vous exécutez PHP sur le terminal, vous pouvez sudo ou créer un utilisateur disposant des autorisations de lecture/écriture à partir de ce répertoire et exécuter le script avec cet utilisateur.

+0

Merci pour votre réponse, @BugHunterUK. Je voudrais accorder des autorisations spécifiquement à "dummy_username" en ajoutant cet utilisateur au groupe qui possède "/ preferred_folder/subfolder" (c'est-à-dire "1000001"). Comme mentionné, dummy_username peut créer des fichiers dans preferred_folder mais avec un utilisateur/groupe étrange. Comment saurais-je quel nom d'utilisateur est approprié pour ajouter au groupe 1000001? De plus, pouvez-vous nous expliquer pourquoi l'utilisateur/groupe qui possède le fichier nouvellement créé dans preferred_folder est différent de/users/service/dummy_username /? Où puis-je trouver et modifier ces paramètres? Merci! –

+0

Mise à jour: Je viens de découvrir sur [ACLs] (https://unix.stackexchange.com/questions/115631/getting-new-files-to-inherit-group-permissions-on-linux), qui explique comment la propriété des fichiers est désigné. –