CentOSシステムにどのユーザー権限があるかを知る必要があります。ユーザーがアクセスできるディレクトリと実行できるコマンドを見つけることは可能ですか? ACLは含まれません。
答え1
ファイルを実行するには、ファイルは次のようになります。
- ユーザーが所有して実行できる場合、または
- ユーザーと同じグループに属し、そのグループによって実行されても、
- 「他人」が行うことができます。
次のfind
コマンドは、現在のディレクトリでそのファイルを探します(現在のユーザーとそのデフォルトグループのみ)。
uid=$( id -u ) # the user's ID
gid=$( id -g ) # the primary group ID
find . -type f \( \
\( -user "$uid" -perm -0100 \) -o \
\( -group "$gid" -perm -0010 \) -o \
-perm -0001 \) -print
-0100
「少なくともユーザーが実行できる」を意味し、-0010
「-0001
グループ」および「その他」と同じです。
フォルダのアクセシビリティにも同じ基準が適用されるので(完全に間違っているわけではありませんが)-type f
に変更すると、-type d
アクセス可能なフォルダが提供されます。フォルダの「読み取り」ビットを確認したい場合があります。明らかに(-0500
と-0050
-0005
変える上記の権限)。
フォルダの場合、これが解決策になる可能性があります。
find . -type d \( \
\( -user "$uid" -perm -0500 \) -o \
\( -group "$gid" -perm -0050 \) -o \
-perm -0005 -o -prune \) -print
-prune
とにかく、ユーザーがアクセスできないフォルダに入らないように、最後にこれを追加しました。
システム全体を検索するには、ドットをスラッシュに変更します。
これをユーザーのフォルダ名だけを印刷するように変更するのも簡単です。できない使用権:
find . -type d \( \
\( -user "$uid" -perm -0500 \) -o \
\( -group "$gid" -perm -0050 \) -o \
-perm -0005 -o -print -prune \)