2012-08-15 20:46:33 +0000 2012-08-15 20:46:33 +0000
58
58

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

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

chown username:groupname .

…en m'attendant à ce que cela affecte tous les fichiers du répertoire courant, mais au lieu de cela, cela n'a affecté 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 dans lequel je me trouve.

Comment puis-je chown et chmod tous les fichiers du répertoire en cours ?

Réponses (3)

98
98
98
2012-08-15 20:48:16 +0000

Vous voulez utiliser chown username:groupname *, et laisser le shell étendre le * au contenu du répertoire courant. Cela changera les permissions pour tous les fichiers/dossiers du répertoire courant, mais pas le contenu des dossiers.

Vous pouvez aussi faire chown -R username:groupname ., qui changera les permissions sur le répertoire courant, et ensuite récursivement à l'intérieur de celui-ci et de tous les sous-dossiers pour changer les permissions.

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

9
9
9
2012-08-15 20:48:05 +0000

Je pense que vous voulez ceci :

chown username:groupname *

Si vous voulez aussi changer récursivement de sous-répertoire, vous aurez besoin du commutateur -R (-r est déprécié) :

chown -R username:groupname *

0
0
0
2019-03-15 14:44:38 +0000

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

  • Le script suivant change la propriété des fichiers et des répertoires qui lui ont été transmis 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 n'appartenant pas à l'utilisateur actuel, en supprimant (ou en essayant de supprimer) le fichier original, et en le renommant de manière appropriée.
  • Le but est que ce soit une abréviation pour “make me owner”. Je n'utilise pas de traits de soulignement car ils sont difficiles à taper.

Exemples :

% mkmeowner .

% mkmeowner dirpath1 dirpath2
  • Il faut que le script suivant mkmeownerone soit dans 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

Questions connexes

6
10
8
5
5