ファイルシステム権限をデバッグする方法は?

ファイルシステム権限をデバッグする方法は?

rootとして実行されているプロセスがあり、www-dataでサブプロセスを作成し、rootが所有するディレクトリとwww-dataが所有するサブフォルダにアクセスすると、権限エラーが発生します。シンボリックリンクwww-dataグループのユーザーが所有するディレクトリとそのディレクトリ...アイデアを得ることができます。

この非常に複雑なチェーンでどこで失敗するのか、どうすればわかりますか?私が得るすべては許可が拒否されました

この特定のケースの詳細にとらわれず、Unixでこのような問題のデバッグを開始するにはどうすればよいですか?

ただ言いたい

debug_permissions.sh www-data /my/long/symlink/chain

私はそれがシンボリックリンクチェーンを通過し、エンドポイントがどこにあるかを知りたいと思っています(www-dataには権限がありません)。

私も一つあることを知ってツール

namei -l /path/

しかし、他のユーザーとして実行できないため(または少なくとも方法がわからないため)、それほど役に立ちません。

私が走るとsudo su www-data、私は得る。このアカウントは現在利用できません。

私はwww-dataが「なって」cdディレクトリを歩き回り、私が見ることができないものを見ることができるようにしたいと思います。しかし、それでもそうすることはできませんが、それを行うために新しいユーザーを作成したくありません。

答え1

ああ、方法は次のとおりです。

sudo -H -u www-data namei /my/long/symlink/chain

www-dataデバッグしたいユーザーはどこにありますか?

答え2

一般に、ファイルシステム権限の問題をデバッグするためのいくつかの戦略があります。

例 ユーザーがuserWhoShouldHaveAccessディレクトリの内容をリストできる必要があると仮定し/dir/with/access/issues、端末でこれを実行して試みたことが動作することを確認します。

watch sudo -u userWhoShouldHaveAccess ls /dir/with/access/issues

ルートディレクトリからユーザーがアクセスできるディレクトリまでの権限に焦点を当てます。

cd / && watch namei -l /dir/with/access/issues

ディレクトリ内のファイルを一覧表示するには、ユーザーがフルパスを通過する必要があることに注意してください。/dir/with/access/issuesこれは、ユーザーがターゲットディレクトリで実行権限を持っている必要があることを意味します。およびすべての親ディレクトリ

ユーザーのグループ変更は、ログアウトしてから再度ログインした後にのみ適用されることに注意してください。解決策そのような理由で。

ユーザーIDとユーザーが属するグループを表示できますid userWhoShouldHaveAccess

まだあるからアクセス制御リストアクセスに対する所有者/グループ/その他の権限を決定するだけでなく、権限も確認します。

getfacl /dir/with/access/issues

ユーザーが書くことができる必要がある場合は、バックグラウンドで実行して作成方法を学ぶことができます。

while true; do sudo -u userWhoShouldHaveAccess bash -c '(echo "Test at $(date) by $(whoami)" >> /dir/with/access/issues/test_file);sleep 1';done

ここLinux のファイル権限の基本は次のとおりです。

関連情報