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

Hoe kan ik alle bestanden in de huidige directory choden/chodden?

Ik probeer het eigendom en de rechten van sommige bestanden (en directories) in de huidige directory te wijzigen. Ik heb dit geprobeerd: chown username:groupname .

…in de verwachting dat het invloed zou hebben op alle bestanden in de huidige directory, maar in plaats daarvan heeft het alleen invloed op de directory waar ik in zit (wat het tegenovergestelde is van wat ik wil doen). Ik wil het op alle bestanden wijzigen zonder de huidige directory waarin ik me bevind te beïnvloeden.

Hoe kan ik alle bestanden in de huidige directory choden en chmoderen?

Antwoorden (3)

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

U wilt chown username:groupname * gebruiken, en laat de shell de * uitbreiden naar de inhoud van de huidige directory. Dit zal de permissies veranderen voor alle bestanden/mappen in de huidige directory, maar niet de inhoud van de mappen.

Je zou ook chown -R username:groupname . kunnen doen, wat de permissies op de huidige directory zou veranderen, en dan binnenin deze directory en alle submappen terughalen om de permissies te veranderen.

chown -R username:groupname * zal de permissies op alle bestanden en mappen recursief veranderen, terwijl ze de huidige directory zelf met rust laten. Deze stijl en de eerste stijl gebruik ik het vaakst.

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

Ik denk dat je dit wilt:

chown username:groupname *

Als je ook recursief van subdirectories wilt veranderen, heb je de -R (-r is afgeschreven) schakelaar nodig:

chown -R username:groupname *

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

chown is geweldig als je een superuser bent. Ik had een probleem waar iemand anders make in mijn directory had gedraaid, en nu bezat ik een aantal bestanden die ik niet kon wijzigen. Hier is mijn workaround die bestanden en mappen behandelt, hoewel het de mappen laat rondslingeren met het achtervoegsel .mkmeowner als het ze niet kan verwijderen.

  • Het volgende script verandert het eigendom van bestanden en mappen die aan het worden doorgegeven om eigendom te zijn van de huidige gebruiker, en probeert om problemen met permissies te omzeilen door een nieuwe kopie te maken van elke map of bestand dat niet het eigendom is van de huidige gebruiker, het originele bestand te verwijderen (of te proberen te verwijderen), en de juiste naam te geven.
  • De bedoeling is dat het een afkorting is voor “make me owner”. Ik gebruik geen underscores omdat ze een pijn om te typen zijn.

Voorbeelden:

% mkmeowner .

% mkmeowner dirpath1 dirpath2
  • Het vereist het volgende script mkmeownerone om op je pad te komen.

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