現在のユーザーがディレクトリへの書き込み権限を持っているかどうかを確認します


9

私はあなたがディレクトリの所有者を決定できることを知っています:

ls -ld ~/foo | awk '{ print $3 }'

その後、次のようにして現在のユーザーと比較できます。

if [[ $(ls -ld ~/foo | awk '{ print $3 }') == "$USER" ]] # or $(id -u -n ) instead of $USER
then
    echo "You are the owner"
else
    echo "You are NOT the owner"
fi

ただし、所有者でなくても書き込み権限を持つことができます。これをどのように判断しますか?

回答:


20

私は考えます

if [ -w ~/foo ]; then ....

あなたがしたいことをする必要があります。

また、出力をstat -c %U ~/foo解析するよりも所有者を取得するための優れた方法lsです。


1
stat最近のLinuxシステムに固有であることに注意してください。他のunicesはstatまったく異なるか、まったくない場合があります。通常、lsの解析はトラブルの原因になりますが、所有者を3番目の単語として解析すると、ほとんどが機能します(後で分解されます)。それでも完璧ではありません(ユーザー名にスペースを使用できるシステムもあります)。
Gilles「SO-邪悪なことをやめよう」
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.