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

Wie kann man alle Dateien im aktuellen Verzeichnis chown/chmodifizieren?

Ich versuche, die Besitzverhältnisse und Berechtigungen einiger Dateien (und Verzeichnisse) im aktuellen Verzeichnis zu ändern. Ich habe dies versucht:

chown username:groupname .

…in der Erwartung, daß es alle Dateien im aktuellen Verzeichnis betreffen würde, aber stattdessen nur das Verzeichnis, in dem ich mich befinde (was das Gegenteil von dem ist, was ich tun möchte). Ich möchte es für alle Dateien ändern, ohne das aktuelle Verzeichnis, in dem ich mich befinde, zu beeinflussen.

Wie kann ich alle Dateien im aktuellen Verzeichnis chown und chmodifizieren?

Antworten (3)

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

Sie möchten chown username:groupname * verwenden und die Shell die * auf den Inhalt des aktuellen Verzeichnisses erweitern lassen. Dies wird die Berechtigungen für alle Dateien/Ordner im aktuellen Verzeichnis ändern, aber nicht den Inhalt der Ordner.

Sie könnten auch chown -R username:groupname . verwenden, was die Berechtigungen für das aktuelle Verzeichnis ändern würde, und dann innerhalb des Verzeichnisses und aller Unterordner rekursiv nach unten gehen, um die Berechtigungen zu ändern.

chown -R username:groupname * wird die Berechtigungen für alle Dateien und Ordner rekursiv ändern, während das aktuelle Verzeichnis selbst allein gelassen wird. Diesen Stil und den ersten Stil verwende ich am häufigsten.

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

Ich glaube, Sie wollen dies:

chown username:groupname *

Wenn Sie auch Unterverzeichnisse rekursiv ändern wollen, benötigen Sie den Schalter -R (-r ist veraltet):

chown -R username:groupname *

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

chown ist großartig, wenn Sie ein Superuser sind. Ich hatte ein Problem, bei dem jemand anderes make in meinem Verzeichnis ausgeführt hatte und nun einige Dateien besaß, die ich nicht ändern konnte. Hier ist meine Umgehungslösung, die Dateien und Verzeichnisse behandelt, obwohl sie die Verzeichnisse mit der Endung .mkmeowner herumliegen lässt, wenn sie sie nicht löschen kann.

  • Das folgende Skript ändert den Eigentümer von Dateien und Verzeichnissen, die ihm übergeben wurden, so dass sie dem aktuellen Benutzer gehören, und versucht, Berechtigungsprobleme zu umgehen, indem es von jedem Verzeichnis oder jeder Datei, die nicht dem aktuellen Benutzer gehört, eine neue Kopie anfertigt, die Originaldatei löscht (oder versucht,  zu löschen) und entsprechend umbenennt.
  • Es soll eine Abkürzung für “make me owner” sein. Ich verwende keine Unterstriche, weil sie schwer zu tippen sind.

Beispiele:

% mkmeowner .

% mkmeowner dirpath1 dirpath2
  • Das folgende Skript mkmeownerone muss sich in Ihrem Pfad befinden.

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