Soluzione 1:
Usa il comando 'find' se hai installato findutils versione 4.3.0 o successiva:
Per tutti i file nella directory corrente che sono scrivibili dall'utente corrente:
find . -writable
Per tutti i file nella directory corrente che non sono scrivibili dall'utente corrente:
find . ! -writable
Secondo la pagina man:
Questo test fa uso della chiamata di sistema access(2) e quindi può essere ingannato dai server NFS che eseguono la mappatura dell'UID (o root-squashing), poiché molti sistemi implementano l'accesso(2) nel kernel del client e quindi non possono utilizzare la mappatura dell'UID informazioni conservate sul server.
Soluzione 2:
Puoi creare uno script Perl (writable.pl
) in questo modo:
#!/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]);
e poi usa questo script, come root, come segue:
su USERNAME -c "./writable.pl DIRECTORY"
compilando USERNAME
e DIRECTORY
a seconda dei casi.
Soluzione 3:
Questo comando dovrebbe trovare tutte le directory scrivibili, puoi modificare i permessi come meglio credi:
find / -type d \( -perm -g+w -or -perm -o+w \) -exec ls -adl {} \;