人々が私のスクリプトからシステム上の重要なファイルを誤って削除するのを防ぎたいと思います。そのステートメントを使用してフォルダの所有者を見つける方法を知っている人はいますか?
ベストアンサー1
find . -prune -user "$(id -u)"
.
現在のディレクトリがあなたの所有者である場合は印刷されます。
次のことができます。
find . -prune -user "$(id -u)" -exec some command \;
または:
if [ -n "$(find . -prune -user "$(id -u)")" ]; then
some command
fi
some command
現在のディレクトリを所有している場合にのみ実行されます。
test
ほとんどの別名実装(別名、別名、別名、および[
シェルに組み込まれている機能の1つを含む)には(大文字のO)もあります。zsh
bash
ksh
dash
yash
bosh
-O
if [ -O . ]; then
some command
fi
シェルには、所有するファイルを選択するためのglob修飾子がzsh
あります。U
したがって、find
次のようなことができます。
if ()(($#)) .(NU); then
some command
fi
現在のディレクトリ所有者であるPOSIXlyのIDを取得するには、次のようにします。
ownerid=$(LC_ALL=C ls -lnd . | awk '{print $3}')
または内蔵zsh
機能を使用してください。stat
stat -LH stat . && ownerid=$stat[uid]
またはGNUを使用してくださいfind
:
ownerid=$(find . -prune -printf %U)
またはGNUを使用してくださいstat
:
ownerid=$(stat -c %u .)
またはBSDの場合stat
:
ownerid=$(stat -f %u .)
この情報があれば、$ownerid
それを使用できるシェルプロセスの有効なユーザーIDと比較できます"$(id -u)"
。一般的に言えば、アカウントデータベース内の各ユーザーIDに対して複数のユーザー名を持つことができるため、ユーザー名ではなくユーザーIDを使用する方が良いです。これにより、ユーザーデータベースを照会する必要がなくなります。