GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana saya bisa menggunakan sudo untuk memeriksa apakah ada file?

Solusi 1:

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

halaman manual pengujian

Untuk melengkapi hal-hal, sebaliknya, jika Anda ingin memeriksa dari root apakah file atau direktori dapat dibaca untuk pengguna tertentu, Anda dapat menggunakan

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

Solusi 2:

Apa yang Anda gambarkan seharusnya berfungsi dengan baik - selama Anda menggunakan jalur absolut, dan -f ("File ada dan merupakan file biasa") adalah pengujian yang ingin Anda lakukan.

Saya melihat / tertinggal dalam apa yang Anda posting di pertanyaan Anda - Apakah Anda menguji direktori? Seharusnya -d , atau cukup -e ("Sesuatu ada dengan nama itu - apa pun jenisnya")

Perhatikan juga bahwa kecuali sesuatu di sepanjang jalan tidak dapat dibaca test ([ ) seharusnya dapat memberi tahu Anda apakah ada file yang dimiliki oleh root atau tidak (mis. [ -f /root/.ssh/known_hosts ] mungkin akan gagal, karena direktori /root/.ssh tidak (atau setidaknya tidak boleh ) dapat dibaca oleh pengguna normal. [ -f /etc/crontab ] harus berhasil).

Solusi 3:

Menambah jawaban lain, membedakan antara pengujian atau sudo otentikasi yang gagal dapat dilakukan dengan terlebih dahulu menjalankan sudo true . Sebagian besar implementasi sudo yang saya tahu tidak memerlukan autentikasi ulang dalam waktu singkat.

Misalnya:

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. Bagaimana saya bisa memeriksa file yang ada dan menjalankan perintah jika tidak?

  2. Bagaimana saya bisa menghubungkan file di Linux?

  3. Bagaimana saya bisa memeriksa apakah ada direktori?

  1. Bagaimana saya bisa menambahkan pengguna biasa ke file sudoers?

  2. Bagaimana cara menambahkan file sebagai sudo?

  3. Bagaimana saya bisa mengunyah file ke subuid tanpa sudo

  1. Bagaimana cara memeriksa sintaks sudoers

  2. Bagaimana Cara Memeriksa Apakah Variabel Ada Dalam Pernyataan 'jika'?

  3. Bagaimana saya bisa menggunakan rsync dengan sistem file FAT?