Solution 1 :
Utilisez la commande 'find' si vous avez installé la version 4.3.0 ou supérieure de findutils :
Pour tous les fichiers du répertoire courant accessibles en écriture par l'utilisateur courant :
find . -writable
Pour tous les fichiers du répertoire actuel qui ne sont pas accessibles en écriture par l'utilisateur actuel :
find . ! -writable
Selon la page de manuel :
Ce test utilise l'appel système access(2) et peut donc être trompé par les serveurs NFS qui effectuent le mappage UID (ou root-squashing), car de nombreux systèmes implémentent access(2) dans le noyau du client et ne peuvent donc pas utiliser le mappage UID informations détenues sur le serveur.
Solution 2 :
Vous pouvez créer un script Perl (writable.pl
) comme ceci :
#!/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]);
puis utilisez ce script, en tant que root, comme suit :
su USERNAME -c "./writable.pl DIRECTORY"
remplir USERNAME
et DIRECTORY
le cas échéant.
Solution 3 :
Cette commande devrait trouver tous les répertoires accessibles en écriture, vous pouvez modifier les autorisations comme bon vous semble :
find / -type d \( -perm -g+w -or -perm -o+w \) -exec ls -adl {} \;