J'utilise un serveur Web et un serveur FTP, où /var/www
est lié à /home/user/www
.
Je règle les deux répertoires sur chmod 777
(ce qui est correct car c’est uniquement à des fins de test).
Je peux télécharger des fichiers dans /home/user/www
, mais chaque fois que je crée un nouveau répertoire, je dois toujours exécuter chmod 777
sur ce dossier.
Sinon, quand j'essaye de le parcourir, j'obtiens le message d'erreur
Vous n'êtes pas autorisé à accéder à/tester/sur ce serveur.
Est-il possible de rendre tous les sous-dossiers de /var/www
accessibles? Ou leurs autorisations pourraient-elles être automatiquement définies sur 777
? C’est embêtant de devoir taper chmod 777
à chaque fois.
C'est une mauvaise pratique, mais j'espère que vous l'utilisez uniquement pour le développement ou que vous avez une autre bonne raison. Vous pouvez spécifier les autorisations lorsque vous créez un répertoire à l'aide de l'option -m
:
mkdir -m 777 dirname
Ou vous pouvez définir les autorisations de manière récursive.
Sudo chmod -R 777 /var/www
Avant d’utiliser l’une ou l’autre de ces méthodes, déterminez si vous souhaitez que votre système de fichiers soit aussi accessible.
Edit: Comme mentionné par Rinzwind, voici un meilleur moyen d’accomplir ce que vous voulez.
Vérifiez quel groupe est propriétaire de votre répertoire /var/www
et ajoutez votre utilisateur à ce groupe.
Sudo adduser yourusername group
Le groupe est probablement www-data
.
Ensuite, vous pourrez régler vos autorisations sur 775.
Les fichiers et les répertoires sous Unix peuvent avoir trois types d'autorisations: lire (r
name__), écrire (w
name__) et exécuter (x
name__). Chaque autorisation peut être on
ou off
pour chacune des trois catégories d'utilisateurs: le propriétaire du fichier ou du répertoire; d'autres personnes du même groupe que le propriétaire; et tous les autres. Pour changer le mode d'un fichier, utilisez la commande chmod. La forme générale est chmod X @ Y fichier1 fichier2 ...
chmod a-w file (removes all writing permissions)
chmod o+x file (sets execute permissions for other (public permissions))
chmod u=rx file (Give the owner rx permissions, not w)
chmod go-rwx file (Deny rwx permission for group, others)
chmod g+w file (Give write permission to the group)
chmod a+x file1 file2 (Give execute permission to everybody)
chmod g+rx,o+x file (OK to combine like this with a comma)
u = user that owns the file
g = group that owns the file
o = other (everyone else)
a = all (everybody)
r = read aces to the file
w = write access
x = execute (run) access
cd /var/www
find -type d ! -perm 777 -exec chmod 777 {} \;
pour le ftp créant tous les fichiers avec des permissions différentes, vous pouvez chercher le umask de ftpd, comment ce démon est lancé
Jetez un oeil à ce site https://linuxaria.com/article/linux-Shell-understanding-umask-with-examples
Annonce de service public:
C'est un risque de sécurité majeur si vous exécutez des services accessibles au public, en particulier des applications Web (par exemple, PHP).
Le modèle de sécurité du système d'exploitation suppose que de nombreux services (tels que votre serveur Web) s'exécutent avec des privilèges réduits pour les empêcher de pouvoir modifier les fichiers. La définition de 777 sur les fichiers casse cette conception.
Un utilisateur distant peut écrire ou télécharger des fichiers, puis inciter le serveur (ou un autre processus de votre système) à les lire ou à les exécuter. Les scripts ou les logiciels peuvent avoir des failles qui le permettent. Il est très difficile de verrouiller toutes les manières possibles si des répertoires peuvent être écrits dans le monde entier.
Utilisé dans certains répertoires système (/ usr,/etc,/var, etc.), il peut endommager votre système de manière surprenante.
Certains fichiers système essentiels nécessitent des autorisations spéciales, telles que les autorisations setuid/setgid, pour pouvoir s'exécuter. Par exemple, Sudo. Évitez de modifier les autorisations de fichier sur les répertoires et les fichiers configurés par le système lui-même.
Il n'y a aucun moyen de l'annuler et de récupérer toutes les anciennes autorisations.
Autrement dit, si vous aviez auparavant des fichiers et des dossiers avec des autorisations différentes, il n’était pas possible de revenir à ces autorisations spécifiques, mais simplement de les remplacer par la même chose, ce qui risquerait de faire perdre les paramètres d’autorisation spécifiques nécessaires pour des fichiers spécifiques.
Il y a toujours un moyen plus approprié de réaliser ce que vous voulez réaliser.
Dans ce cas, il semblerait que vous souhaitiez uniquement que votre serveur Web puisse lire un répertoire. Donner une autorisation en écriture au monde est bien plus que ce que vous devez faire.
Cherchez à savoir pourquoi le serveur Web ne peut pas lire ce répertoire (indice: c'est probablement parce que votre répertoire personnel n'est pas lisible par tout le monde. Ce dernier est beaucoup plus sûr que ce qu'il est possible d'écrire dans le monde - définissez votre répertoire personnel sur 755 ou déplacez ce répertoire www à l'extérieur de votre domicile dans un emplacement tel que/var/www ou/srv).
Cela ne fonctionne pas pour moi.
Sudo chmod -f 777 /path/to/your/file/or/directory
Je dois aussi utiliser -f
.
Sudo chmod -R -f 777 /path/to/your/file/or/directory
Si vous souhaitez copier les autorisations et/ou la propriété d'un autre fichier dont vous êtes satisfait, vous pouvez le faire à l'aide de Sudo chmod --reference = chemin/vers/fichier/vers/chemin de référence/vers/fichier/vous/voulez/to/change/permissino/to
Et vous pouvez également faire la même chose pour la propriété de fichier.