77 votes

Comment faire un chown/chmod de tous les fichiers du répertoire courant ?

J'essaie de changer la propriété et les permissions de certains fichiers (et répertoires) dans le répertoire actuel. J'ai essayé ceci :

chown username:groupname .

...en s'attendant à ce que cela affecte tous les fichiers du répertoire actuel, mais au lieu de cela, cela n'affecte que le répertoire dans lequel je me trouve (ce qui est le contraire de ce que je veux faire). Je veux le modifier sur tous les fichiers sans affecter le répertoire actuel dans lequel je me trouve.

Comment puis-je obtenir le chown et le chmod de tous les fichiers du répertoire actuel ?

122voto

Darth Android Points 36975

Vous voulez utiliser chown username:groupname * et laisser le Shell développer la * au contenu du répertoire courant. Cela modifiera les autorisations pour tous les fichiers/dossiers du répertoire actuel, mais pas le contenu des dossiers.

Vous pouvez également faire chown -R username:groupname . qui change les permissions sur le répertoire actuel, puis fait une récursion à l'intérieur de celui-ci et de tous les sous-dossiers pour changer les permissions.

chown -R username:groupname * changera les permissions de tous les fichiers et dossiers de manière récursive, tout en laissant le répertoire courant lui-même intact. Ce style et le premier style sont ceux que j'utilise le plus souvent.

12voto

djf Points 366

Je pense que tu veux ça :

chown username:groupname *

Si vous souhaitez également modifier récursivement les sous-répertoires, vous aurez besoin de la commande -R ( -r est déprécié) :

chown -R username:groupname *

0voto

sbcondor Points 11

chown est génial si vous êtes un super utilisateur. J'ai eu un problème où quelqu'un d'autre avait exécuté make dans mon répertoire, et possédait maintenant des fichiers que je ne pouvais pas modifier. Voici ma solution de contournement qui gère les fichiers et les répertoires, bien qu'elle laisse les répertoires traîner avec le suffixe .mkmeowner s'il ne peut pas les supprimer.

  • Le script suivant change la propriété des fichiers et répertoires qui lui sont passés pour qu'ils appartiennent à l'utilisateur actuel, en essayant de contourner les problèmes de permission en faisant une nouvelle copie de chaque répertoire ou fichier qui n'appartient pas à l'utilisateur actuel, en supprimant (ou en essayant de supprimer) le fichier original, et en le renommant de manière appropriée.
  • L'intention est que ce soit une abréviation de "make me owner". Je n'utilise pas d'underscores parce que c'est pénible à taper.

Exemples :

% mkmeowner .

% mkmeowner dirpath1 dirpath2
  • Il nécessite le script suivant mkmeownerone d'être sur votre chemin.

mkmeowner :

#!/bin/bash
[ "x$1" == "x-h" ] || [ "x$1" == "x--help" ] && cat << END && exit 0
Usage: $0 dirorfile [direorfile2 ...]:
    change ownership of directories or files to current user.
    Current user must have permissions to read those and write to owner directory.
END
mkmeownerone=`which mkmeownerone`
for d in $*; do
    find "$d" -not -user `whoami` -exec $mkmeownerone {} \;
done

mkmeownerone :

#!/bin/bash
# change ownership of one file or directory
f="$1"
expr match "${f}" '.*\.mkmeowner$' > /dev/null && exit 1 # already tried to do this one
if mv -f "$f" "${f}.mkmeowner"; then
    cp -pr "${f}.mkmeowner" "$f" && rm -rf "${f}.mkmeowner"
    exit 0
fi
exit 1

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X