Řešení 1:
Pokud máte nainstalovaný findutils verze 4.3.0 nebo vyšší, použijte příkaz 'find':
Pro všechny soubory v aktuálním adresáři, do kterých může aktuální uživatel zapisovat:
find . -writable
Pro všechny soubory v aktuálním adresáři, do kterých nemůže aktuální uživatel zapisovat:
find . ! -writable
Podle manuálové stránky:
Tento test využívá systémové volání access(2), a tak může být oklamán servery NFS, které provádějí mapování UID (orroot-squashing), protože mnoho systémů implementuje přístup(2) v jádře klienta, a tak nemůže využít mapování UID. informace uložené na serveru.
Řešení 2:
Můžete vytvořit skript v Perlu (writable.pl
) takto:
#!/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]);
a poté použijte tento skript jako root následovně:
su USERNAME -c "./writable.pl DIRECTORY"
vyplňte USERNAME
a DIRECTORY
podle potřeby.
Řešení 3:
Tento příkaz by měl najít všechny zapisovatelné adresáře, oprávnění můžete změnit, jak uznáte za vhodné:
find / -type d \( -perm -g+w -or -perm -o+w \) -exec ls -adl {} \;