9

私は自分自身を熟練したユーザーだと思っていると言うことから始めるべきです。しかし、今日、私はこれを自動化する必要があり、困惑しました。

私がrootであると仮定すると、ファイルシステム全体をトラバースすることはできますが、「sudo」も「su」も実行できません。

特定のユーザーと特定のパスがあります。

CLIを使用して、ユーザーがパスの読み取りや書き込みができるかどうかを確認するにはどうすればよいですか?

これは簡単に聞こえますが、次の点に注意してください。

  • 私たちはユーザーではありませんし、ユーザーになることもできません。
  • パスの上位のアクセス許可が最終ディレクトリへのアクセスをブロックしている可能性があるため、最終ディレクトリのアクセス許可だけに依存することはできません。
  • 継承されたグループのこの時代では、ディレクトリグループのアクセス許可だけに依存することもできません。

これはどのコマンドでも実行できないと想定しています。最初にすべてのユーザーグループを収集してから、パスの階層全体をトラバースし、パス全体の読み取り権限を確認してから、最終的な読み取りと書き込みを行う必要があります。ディレクトリ。しかし、ひどく高価に聞こえます。

4

4 に答える 4

3

スクリプトの第一人者にタグを付けてください。

check_access() {
  checked_file=$1
  target_user=$2
  result=PASS

  groups=`id -G $target_user | sed -e 's| | -o -group |g' -e 's|^|\\( -group |' -e 's|$| \\)|'`

  while [ $checked_file != / ]; do 
    find $checked_file -maxdepth 0 \
      -type f \( \
        \( -user $target_user -perm 0400 \) \
        -o \( $groups -perm 0040 \) \
        -o -perm 0004 \
      \) -o -type d \( \
        \( -user $target_user -perm 0100 \) \
        -o \( $groups -perm 0010 \) \
        -o -perm 0001 \
      \) >/dev/null 2>&1 || result=FAIL
    checked_file=`dirname $checked_file`
  done
  echo $result
}
于 2012-06-07T15:32:21.857 に答える
2

最善の方法は、ユーザー自身を介して検証することです。

if sudo su - $user_to_check -c "[[ -r $path_to_check ]]"
then echo "$user_to_check can read $path_to_check"
else echo "$user_to_check can not read $path_to_check"
fi
if sudo su - $user_to_check -c "[[ -w $path_to_check ]]"
then echo "$user_to_check can write $path_to_check"
else echo "$user_to_check can not write $path_to_check"
fi
于 2012-06-24T19:38:54.383 に答える
1

私は実際に完全な答えを提供することはできませんし、おそらくこれを除いて、あなた自身のアイデアに実質的なものを追加することはできません。

アクセス権が基盤となるファイルシステムに大きく依存しているという理由だけで、効果的なアクセス権をチェックするための一般的なアプローチは存在しないのではないかと思います。たとえば、アクセス権のチェックは、標準のUnixrwxフラグ(Linuxのext2、ext3など)を使用するファイルシステムと、ACLをサポートするファイルシステム(XFSやNTFSなど)ではまったく異なる動作をします。

特定のファイルシステムタイプに対して実行したいことを実行する特定のコマンドラインツールがいくつかある場合があります。(アナロジー:などのツールはfsckmkfsファイルシステムタイプごとに存在する場合があります。)

特にUNIXライクなオペレーティングシステムでは、特定のアクセス許可メカニズムが1つだけで問題が発生する可能性があると想定して、すべての種類のファイルシステムを1つの大きなディレクトリ構造にマウントできます。

この問題に対して独自のソリューションを構築する場合は、最初にこの事実を考慮してから、サポートするアクセス権メカニズムを正確に決定してください。(わかりませんが、Unix / POSIX仕様rwxでは、すべてのUnixがサポートする必要のある最低限のアクセス権フラグが規定されていると想像できます。)

于 2012-05-21T11:32:58.813 に答える
0

ls -l <file-name or dir-name>

アップロードディレクトリの権限を確認したいとします。Enter ls -l uploads これは次のようになります。

total 20
drwxrwxr-x 2 tomcat ec2-user 4096 Nov  5 04:21 deals
drwxrwxr-x 2 tomcat ec2-user 4096 Nov  5 04:25 gallery-images
drwxrwxr-x 3 tomcat ec2-user 4096 Nov  5 04:25 hotels
drwxrwxr-x 3 tomcat ec2-user 4096 Nov  5 04:28 rooms
drwxrwxr-x 3 tomcat ec2-user 4096 Nov  5 04:32 temp
于 2016-08-18T04:53:35.780 に答える