Saya ingin memeriksa apakah ada file seperti itu
[ -f /path/to/file/ ]
Namun saya menjalankan perintah ini sebagai pengguna biasa dan file tersebut dimiliki oleh root. Bagaimana saya bisa menggunakan sudo untuk mencapai ini.
sudo [ -f /path/to/file/ ]
tidak bekerja.
Jawaban:
Apa yang Anda gambarkan harus berfungsi dengan baik - selama Anda menggunakan jalur absolut, dan
-f
("File ada dan merupakan file biasa") benar-benar tes yang ingin Anda lakukan.Saya melihat jejak
/
di dalam apa yang Anda posting di pertanyaan Anda - Apakah Anda menguji direktori? Itu seharusnya-d
, atau hanya-e
("Ada sesuatu dengan nama itu - terlepas dari jenis")Juga perhatikan bahwa kecuali sesuatu di sepanjang jalan tidak dapat dibaca
test
([
) harus dapat memberi tahu Anda jika file yang dimiliki oleh root ada atau tidak (misalnya[ -f /root/.ssh/known_hosts ]
mungkin akan gagal, karena direktori /root/.ssh tidak (atau setidaknya tidak seharusnya dapat dibaca oleh pengguna normal.[ -f /etc/crontab ]
harus berhasil).sumber
sudo
perintah gagal (kata sandi salah, tidak diizinkan di / etc / sudoers, dll), itu akan memberikan hasil yang sama seperti jika file tidak ada.sudo
bagian yang bekerja :)halaman uji manual
Untuk menyelesaikan hal-hal, di sisi yang berlawanan, jika Anda ingin memeriksa dari root jika file atau direktori dapat dibaca untuk pengguna tertentu, Anda dapat menggunakan
sumber
Menambah jawaban lain, membedakan antara pengujian atau kegagalan otentikasi sudo dapat dilakukan dengan terlebih dahulu menjalankan
sudo true
. Sebagian besar implementasi sudo yang saya tahu tidak akan memerlukan otentikasi ulang dalam waktu singkat.Sebagai contoh:
sumber