ユーザーの権限を取得する方法

ユーザーの権限を取得する方法

CentOSシステムにどのユーザー権限があるかを知る必要があります。ユーザーがアクセスできるディレクトリと実行できるコマンドを見つけることは可能ですか? ACLは含まれません。

答え1

ファイルを実行するには、ファイルは次のようになります。

  1. ユーザーが所有して実行できる場合、または
  2. ユーザーと同じグループに属し、そのグループによって実行されても、
  3. 「他人」が行うことができます。

次の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 \)

関連情報