GNU/Linux >> Linux の 問題 >  >> Linux

sudo を使用してファイルが存在するかどうかを確認するにはどうすればよいですか?

解決策 1:

if sudo test -f "/path/to/file"; then
    echo "FILE EXISTS"
else
    echo "FILE DOESN'T EXIST"
fi

テストのマニュアル ページ

反対に、特定のユーザーがファイルまたはディレクトリを読み取れるかどうかをルートから確認したい場合は、

if sudo -u username test -f "/path/to/file"; then
    echo "FILE EXISTS"
else
    echo "FILE DOESN'T EXIST"
fi

解決策 2:

絶対パスと -f を使用している限り、あなたが説明していることはうまくいくはずです (「ファイルが存在し、通常のファイルです」) は、実際に実行したいテストです。

末尾に / が表示されます あなたの質問に投稿したもので-ディレクトリをテストしていますか?それは -d でなければなりません 、または単に -e (「その名前の何かが存在します - タイプに関係なく」)

また、途中で読めないものがない限り test ([ ) は、ルートが所有するファイルが存在するかどうかを通知できるはずです (例:[ -f /root/.ssh/known_hosts ] /root/.ssh ディレクトリがそうではない (または少なくとも すべきではない ため)、おそらく失敗します。 ) 通常のユーザーが読み取ることができます。 [ -f /etc/crontab ] 成功するはずです)。

解決策 3:

他の回答に加えて、最初に sudo true を実行することで、テストまたは sudo 認証の失敗を区別できます。 .私が知っているほとんどの sudo 実装は、短期間で再認証を必要としません。

例:

if sudo true; then
    if sudo test -f "/path/to/file"; then
        echo "FILE EXISTS"
    else
        echo "FILE DOESN'T EXIST"
    fi
else
    echo "SUDO AUTHENTICATION FAILED"
fi

Linux
  1. Cpの実行の進行状況を確認する方法は?

  2. ファイルをチェックするための1つのライナーが存在しますか?

  3. Vimでファイルタイプを使用する方法は?

  1. ディレクトリが存在するかどうかを確認するにはどうすればよいですか?

  2. sudoとしてファイルに追加する方法は?

  3. sudoなしでファイルをsubuidにchownするにはどうすればよいですか

  1. sudoers構文を確認する方法

  2. 「if」ステートメントに変数が存在するかどうかを確認するにはどうすればよいですか?

  3. FAT ファイル システムで rsync を使用するにはどうすればよいですか?