解決策 1:
findutils バージョン 4.3.0 以降がインストールされている場合は、「find」コマンドを使用してください:
現在のユーザーが書き込み可能な現在のディレクトリの下のすべてのファイル:
find . -writable
現在のユーザーが書き込みできない、現在のディレクトリの下のすべてのファイル:
find . ! -writable
マニュアルページによると:
<ブロック引用>多くのシステムは access(2) をクライアントのカーネルに実装しており、UID マッピングを利用できないため、このテストは access(2) システム コールを利用するため、UID マッピング (またはルート スカッシュ) を行う NFS サーバーにだまされる可能性があります。サーバーに保持されている情報。
解決策 2:
Perl スクリプトを作成できます (writable.pl
) のように:
#!/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]);
次に、このスクリプトを root として次のように使用します:
su USERNAME -c "./writable.pl DIRECTORY"
USERNAME
を埋める そして DIRECTORY
解決策 3:
このコマンドは、書き込み可能なすべてのディレクトリを見つける必要があります。必要に応じてアクセス許可を変更できます。
find / -type d \( -perm -g+w -or -perm -o+w \) -exec ls -adl {} \;