ターミナル:ユーザーまたはグループが書き込み権限を持っているすべてのディレクトリを一覧表示します

エルロビス

ユーザーまたはグループが書き込み権限を持っているすべてのディレクトリを一覧表示したいと思います。

この質問はServerFault見つけましたが、Windows Serverに対応しているので、Linuxコミュニティにはもっと良いものがあると楽観視しています。同時に、この質問には再帰的なひねりがあり、長時間実行されるスクリプトがないと不可能になる可能性があることを認識しています。

私は次の便利なコマンドを知っています:

  • すべてのグループを一覧表示します。 cut -d : -f 1 /etc/group
  • すべてのユーザーを一覧表示します。 cut -d : -f 1 /etc/passwd
  • ユーザーのホームディレクトリを取得します。 getent passwd user-name| cut -d: -f 6
  • 各ユーザーとそのグループの割り当て一覧表示するこのスクリプト
  • フォルダの内容に関する権限とユーザー/グループの詳細を取得します。 ls -la

ただし、ユーザーの目的がわからない場合は、書き込み権限のあるすべてのディレクトリのリストを取得して、そこから探し始めるとよいでしょう。他に何もないとしても、それは非常に便利な監査です。

私の目的を理解するのに役立つ場合は、SysAdminが新しい役職に就いた後、いくつかのシステムを継承しました(または少なくともベビーシッターですか?)。そのため、インストールされているソフトウェア、インストールされているソフトウェア、さまざまな構成ファイルが存在する場所(..ugh)、作成されているさまざまなグループやユーザーなど、これら2つのシステムの進化を理解しようとしています。書き込みが許可されているディレクトリ。通常、このような便利なターミナルコマンドはaskubuntuで見つけることができますが、これが見つからない場合は、先に進んで質問すると思いました。

正確なシステムはUbuntu10.04.2ですが、Ubuntu 12.04.5もサポートしているため、バージョンに依存しないソリューションが最適です。助けてくれてありがとう。


[更新:2つのクイックアンサーの初期結果]

これらのrootとしてログインし/ていて、作業ディレクトリであったことは注目に値しますまた、実行には同等の時間がかかりました。

@Rinzwindの組み合わせコマンドは、約5.5分で次の出力を取得しました。

root@tatooine:/# sudo find -type d \( \( -user ftpgisdata -perm /u=w \) -o \( -group ftpgisdata -perm /g=w \) -o -perm /o=w \)
./tmp
./tmp/.ICE-unix
./tmp/.X11-unix
find: `./proc/6594/task/6594/fd/5': No such file or directory
find: `./proc/6594/task/6594/fdinfo/5': No such file or directory
find: `./proc/6594/fd/5': No such file or directory
find: `./proc/6594/fdinfo/5': No such file or directory
./var/tmp
./var/lib/php5
./var/crash
./var/lock
./home/ftpgisdata
./home/ftpgisdata/.ssh
./home/ftpgisdata/.cache
./home/sitename-i-changed.com/wp-content/profile-pics
./dev/shm

@Oliの改訂されたコマンドは、約5.5分で非常によく似たものになります。

root@tatooine:/# sudo find / -type d -print0 | sudo -u ftpgisdata xargs -0 sh -c 'for p; do [ -w "$p" ] && echo "$p"; done' -
/tmp
/tmp/.ICE-unix
/tmp/.X11-unix
find: `/proc/15541': No such file or directory
find: `/proc/15542': No such file or directory
find: `/proc/15543': No such file or directory
find: `/proc/15567': No such file or directory
find: `/proc/15568/task/15568/fd/5': No such file or directory
find: `/proc/15568/task/15568/fdinfo/5': No such file or directory
find: `/proc/15568/fd/5': No such file or directory
find: `/proc/15568/fdinfo/5': No such file or directory
/var/tmp
/var/lib/php5
/var/crash
/var/lock
/home/ftpgisdata
/home/ftpgisdata/.ssh
/home/ftpgisdata/.cache
/home/sitename-i-changed.com/wp-content/profile-pics
/dev/shm

@PeterCordesの回答でも、約5.5分で同様の結果が返されました。

root@tatooine:~# username_to_check=ftpgisdata base_dir=/   # for example
root@tatooine:~# sudo -u "$username_to_check" find "$base_dir" -type d -writable  2>/dev/null ## GNU find, not POSIX
/tmp
/tmp/.ICE-unix
/tmp/.X11-unix
/proc/7159/task/7159/fd
/proc/7159/fd
/proc/7159/map_files
/var/tmp
/var/lib/php5
/var/crash
/var/lock
/home/ftpgisdata
/home/ftpgisdata/.ssh
/home/ftpgisdata/.cache
/home/sitename-i-changed.com/wp-content/profile-pics
/dev/shm
そうだった

あなたがそのユーザーでない場合、ユーザーが何ができるかを理解するのは難しいです。さまざまなもの(所有者、同じグループなど)をテストできますが、ACLが適用される可能性があり、マウントに権限がない可能性があります。それは難しい。

あなたができる場合に変わるそのユーザは、次の操作を実行できtest -w <path>、彼らが書くことができるかどうかを確認するために。これは、iノードを見るほど速くはありませんが、で可能sudoです。

sudo -u oli test -w <path> && echo "HOORAY"

次に、それをのバックエンドにスカーリングできfindます。-execoliユーザーに何度も何度も変更するために使用するのではなく(過去のリビジョンを参照)、すべてをoliとして実行されているxargsインスタンスにパイプします。これははるかに高速です。

sudo find / -type d -print0 | sudo -u oli xargs -0 -I{} sh -c 'test -w "$0" && echo "$0"' {}

これのいくらか最適化された(しかし視覚的に不安定な)バージョンは、パスのストリームを少数のbashサブシェルにパイプすることによってxargsが実行するサブシェルの量を最小化することを含みます。これは間違いなく大規模な検索の方が高速です。

sudo find / -type d -print0 | sudo -u oli xargs -0 sh -c 'for p; do [ -w "$p" ] && echo "$p"; done' -

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ターミナル:ユーザーまたはグループが書き込み権限を持っているすべてのディレクトリを一覧表示します

分類Dev

現在のユーザーがディレクトリへの書き込み権限を持っているかどうかを確認します

分類Dev

すべての権限を持つディレクトリの所有者(ユーザーまたはグループ)を変更できませんか?

分類Dev

新しいユーザーを作成することにより、そのユーザーは自分のホームディレクトリへの読み取りおよび書き込み権限を持っていますか?

分類Dev

デフォルトのユーザーは、750の権限を持っているにもかかわらず、グループとユーザーrootが所有するディレクトリにどのようにアクセスできますか?

分類Dev

ユーザーがそのディレクトリに対する権限を持っていない場合でも、現在のディレクトリ(またはルートディレクトリ)にアクセスできますか?

分類Dev

ユーザーにすべてのディスクファイルとディレクトリへの書き込み権限を持たせないようにするにはどうすればよいですか?

分類Dev

ユーザーが親ディレクトリへの書き込み権限を持っていないのに、chmodがファイルで成功するのはなぜですか?

分類Dev

LINUX-ディレクトリツリーに書き込む権限を持つすべてのファイルを検索して一覧表示するシェルスクリプト

分類Dev

ユーザーがアクセス許可を持っているファイルとディレクトリを一覧表示します

分類Dev

C#ユーザーがフォルダーへの書き込みアクセス権を持っているかどうかをテストします

分類Dev

ユーザーが現在のディレクトリへの読み取りおよび書き込みアクセス権を持っていることを確認します

分類Dev

ユーザーが現在のディレクトリへの読み取りおよび書き込みアクセス権を持っていることを確認します

分類Dev

特定のユーザーがルートノードで{書き込み、読み取り}権限を持っているかどうかを確認する方法

分類Dev

すべてのグループから削除されたにもかかわらず、ユーザーは引き続きsudo権限を持っています

分類Dev

コマンドとrootを実行しているユーザーを除くすべてのユーザーの特権(ホームディレクトリでの読み取り/書き込み)を取り消します。

分類Dev

Linuxグループを使用して、他のユーザーによるディレクトリへの読み取り、書き込み、実行アクセスを制限するにはどうすればよいですか?

分類Dev

bashはフォルダ内のすべてのサブディレクトリを一覧表示し、メニューで使用するためにそれらを配列に書き込みます

分類Dev

アプリユーザーがログイン/ Googleアカウントを持っていなくても、JavaScriptアプリのr / w権限をGoogleスプレッドシートファイルに付与することはできますか?

分類Dev

すべてのユーザーまたは特定のユーザーの書き込み権限でUSBドライブをマウントします

分類Dev

すべてのユーザーまたは特定のユーザーの書き込み権限でUSBドライブをマウントします

分類Dev

データベース内のすべてのオブジェクトの読み取り、書き込み、削除、およびレビューを行う完全な権限を持つSQLユーザーロールを作成するにはどうすればよいですか?

分類Dev

正しい権限があってもユーザーがディレクトリを一覧表示できない

分類Dev

ユーザーが属するすべてのグループを一覧表示します。macOSとCentOSの使用

分類Dev

InfluxDB-特定のプレフィックスを持つデータベースに対するすべての権限をユーザーに付与します

分類Dev

MicrosoftグラフAPI:グループメンバーシップを持たないすべてのユーザーを一覧表示するクエリ

分類Dev

MicrosoftグラフAPI:グループメンバーシップを持たないすべてのユーザーを一覧表示するクエリ

分類Dev

Linux:グループ権限ユーザーは読み取りと書き込みを行っていますが、お互いのファイルを削除できません

分類Dev

データストア:トランザクション内のエンティティグループに対する複数の書き込みが書き込み制限を超えていますか?

Related 関連記事

  1. 1

    ターミナル:ユーザーまたはグループが書き込み権限を持っているすべてのディレクトリを一覧表示します

  2. 2

    現在のユーザーがディレクトリへの書き込み権限を持っているかどうかを確認します

  3. 3

    すべての権限を持つディレクトリの所有者(ユーザーまたはグループ)を変更できませんか?

  4. 4

    新しいユーザーを作成することにより、そのユーザーは自分のホームディレクトリへの読み取りおよび書き込み権限を持っていますか?

  5. 5

    デフォルトのユーザーは、750の権限を持っているにもかかわらず、グループとユーザーrootが所有するディレクトリにどのようにアクセスできますか?

  6. 6

    ユーザーがそのディレクトリに対する権限を持っていない場合でも、現在のディレクトリ(またはルートディレクトリ)にアクセスできますか?

  7. 7

    ユーザーにすべてのディスクファイルとディレクトリへの書き込み権限を持たせないようにするにはどうすればよいですか?

  8. 8

    ユーザーが親ディレクトリへの書き込み権限を持っていないのに、chmodがファイルで成功するのはなぜですか?

  9. 9

    LINUX-ディレクトリツリーに書き込む権限を持つすべてのファイルを検索して一覧表示するシェルスクリプト

  10. 10

    ユーザーがアクセス許可を持っているファイルとディレクトリを一覧表示します

  11. 11

    C#ユーザーがフォルダーへの書き込みアクセス権を持っているかどうかをテストします

  12. 12

    ユーザーが現在のディレクトリへの読み取りおよび書き込みアクセス権を持っていることを確認します

  13. 13

    ユーザーが現在のディレクトリへの読み取りおよび書き込みアクセス権を持っていることを確認します

  14. 14

    特定のユーザーがルートノードで{書き込み、読み取り}権限を持っているかどうかを確認する方法

  15. 15

    すべてのグループから削除されたにもかかわらず、ユーザーは引き続きsudo権限を持っています

  16. 16

    コマンドとrootを実行しているユーザーを除くすべてのユーザーの特権(ホームディレクトリでの読み取り/書き込み)を取り消します。

  17. 17

    Linuxグループを使用して、他のユーザーによるディレクトリへの読み取り、書き込み、実行アクセスを制限するにはどうすればよいですか?

  18. 18

    bashはフォルダ内のすべてのサブディレクトリを一覧表示し、メニューで使用するためにそれらを配列に書き込みます

  19. 19

    アプリユーザーがログイン/ Googleアカウントを持っていなくても、JavaScriptアプリのr / w権限をGoogleスプレッドシートファイルに付与することはできますか?

  20. 20

    すべてのユーザーまたは特定のユーザーの書き込み権限でUSBドライブをマウントします

  21. 21

    すべてのユーザーまたは特定のユーザーの書き込み権限でUSBドライブをマウントします

  22. 22

    データベース内のすべてのオブジェクトの読み取り、書き込み、削除、およびレビューを行う完全な権限を持つSQLユーザーロールを作成するにはどうすればよいですか?

  23. 23

    正しい権限があってもユーザーがディレクトリを一覧表示できない

  24. 24

    ユーザーが属するすべてのグループを一覧表示します。macOSとCentOSの使用

  25. 25

    InfluxDB-特定のプレフィックスを持つデータベースに対するすべての権限をユーザーに付与します

  26. 26

    MicrosoftグラフAPI:グループメンバーシップを持たないすべてのユーザーを一覧表示するクエリ

  27. 27

    MicrosoftグラフAPI:グループメンバーシップを持たないすべてのユーザーを一覧表示するクエリ

  28. 28

    Linux:グループ権限ユーザーは読み取りと書き込みを行っていますが、お互いのファイルを削除できません

  29. 29

    データストア:トランザクション内のエンティティグループに対する複数の書き込みが書き込み制限を超えていますか?

ホットタグ

アーカイブ