Lösung 1:
Verwenden Sie den Befehl „find“, wenn Sie findutils Version 4.3.0 oder höher installiert haben:
Für alle Dateien im aktuellen Verzeichnis, die vom aktuellen Benutzer beschreibbar sind:
find . -writable
Für alle Dateien im aktuellen Verzeichnis, die vom aktuellen Benutzer nicht beschreibbar sind:
find . ! -writable
Laut Manpage:
Dieser Test verwendet den Systemaufruf access(2) und kann daher von NFS-Servern getäuscht werden, die UID-Mapping (oder Root-Squashing) durchführen, da viele Systeme access(2) im Kernel des Clients implementieren und daher das UID-Mapping nicht nutzen können auf dem Server gespeicherte Informationen.
Lösung 2:
Sie können ein Perl-Skript erstellen (writable.pl
) so:
#!/usr/bin/perl
use strict;
sub recurse {
my $path = shift;
my @files = glob "$path/{*,.*}";
for my $file (@files) {
if (-d $file) {
if ($file !~ /\/\.$/ && $file !~ /\/\.\.$/) {
recurse($file);
}
} else {
print "$file\n" if -w $file;
}
}
}
print "Writable files for " . getlogin() . "\n";
recurse($ARGV[0]);
und verwenden Sie dann dieses Skript als root wie folgt:
su USERNAME -c "./writable.pl DIRECTORY"
USERNAME
ausfüllen und DIRECTORY
nach Bedarf.
Lösung 3:
Dieser Befehl sollte alle beschreibbaren Verzeichnisse finden, Sie können die Berechtigungen nach Belieben ändern:
find / -type d \( -perm -g+w -or -perm -o+w \) -exec ls -adl {} \;