特定のファイルを読み書きできるかどうかを簡単に確認する方法はありますか?それともこれを行うには「sudo」を使用する必要がありますか?不必要に sudo でコマンドを実行すると、ファイルが root ユーザーを所有者として生成されるため、望ましくありません。
それはまるで
is_readable /path/to/file
if [[ $? == 0 ]]; then
do_command /path/to/file;
else
sudo do_command /path/to/file;
fi
答え1
ユーティリティ-w
スイッチを試してみてくださいtest
。
[ -w /path/to/file ] && do_command /path/to/file || sudo do_command /path/to/file
または長いバージョン:
if [ -w /path/to/file ]; then
do_command /path/to/file
else
sudo do_command /path/to/file
fi
~からマンページ
-w FILE
FILE exists and write permission is granted
答え2
is_readable /path/to/file
スペルはtest -r /path/to/file
or[ -r /path/to/file ]
またはです[[ -r /path/to/file ]]
。バラよりシングルまたはダブルカッコの使用 - bashどう違うか調べてください。is_writable
使用-w
。
ファイルにアクセスできないことは、「sudoが必要」を示す良い指標ではありません。ルートの代わりに他のユーザーまたはグループとして実行する必要があるかもしれません。特定のシステムでrootアクセス権を取得する方法は、実行するのではなく、sudo
他のメカニズム(su
、、calife
...)を実行することです。既知の構成を使用して既知のシステムのファイルへのアクセスをテストしてもかまいません。これを行うスクリプトをデプロイする場合は、これは信頼できるテストではなく経験的なテストにすぎないことを覚えておいて、ユーザーが判断を簡単に無視できるようにしてください。
ファイルが読み取り可能であるとテストしても、実際にファイルを読み取ることができるという意味ではありません。ファイルの権限が同時に変更された可能性があります。場合によっては、ファイル権限が言うものとアクセスチェックが実際に実行するものとの間に矛盾があります。つまり、ローカルファイルシステムが理解できないエキゾチックな属性を持つリモートファイルシステム、SELinuxなどのセキュリティフレームワークなどがあります。