Solución 1:
Use el comando 'buscar' si tiene instalada la versión 4.3.0 o superior de findutils:
Para todos los archivos del directorio actual en los que el usuario actual puede escribir:
find . -writable
Para todos los archivos del directorio actual en los que el usuario actual no puede escribir:
find . ! -writable
Según la página man:
Esta prueba hace uso de la llamada al sistema de acceso (2), por lo que puede ser engañada por los servidores NFS que realizan el mapeo de UID (o aplastamiento de raíces), ya que muchos sistemas implementan el acceso (2) en el núcleo del cliente y, por lo tanto, no pueden hacer uso del mapeo de UID. información almacenada en el servidor.
Solución 2:
Puede crear un script Perl (writable.pl
) así:
#!/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]);
y luego use este script, como raíz, de la siguiente manera:
su USERNAME -c "./writable.pl DIRECTORY"
rellenando USERNAME
y DIRECTORY
según corresponda.
Solución 3:
Este comando debería encontrar todos los directorios de escritura, puede cambiar los permisos como mejor le parezca:
find / -type d \( -perm -g+w -or -perm -o+w \) -exec ls -adl {} \;