$ sudo -iu abc ls -ltr /sites/servers/server_instance/logs/access*
ls: cannot access /sites/servers/server_instance/logs/access*: No such file or directory
$ sudo -iu abc ls -ltr /sites/servers/server_instance/logs/
total 594812
-rwxrwxrwx 1 abc abc 45 Mar 21 12:42 old.log
-rwxrwxrwx 1 abc abc 304537970 Mar 24 12:45 console.log
-rwxrwxrwx 1 abc abc 304537970 Mar 24 13:20 access_nginx.log
Adakah yang bisa menjelaskan mengapa ini terjadi? Saya terjebak pada skrip karena ini.
sumber
ls
perintah yang dapat saat itu (ketika identitas berubah darisu
telah diambil efek) melakukan globbing.ls
tidak melakukan globbing apa pun.sh -c
ke baris perintah.Anda mungkin menonaktifkan globbing.
Cari sesuatu seperti
set -f
atauset -o noglob
sebelum baris-baris dalam skrip, atau jika dalam menjalankan shell interaktifecho $-
; jika adaf
dalam output, globbing dinonaktifkan:Untuk memperbaikinya, hapus
set -f
atauset -o noglob
dari skrip, atau jika dalam menjalankan shell interaktifset +f
atauset +o noglob
:sumber
sudo -u abc /path/to/script
)? Dalam hal ini globbing seharusnya tidak gagal. Bagaimanapun muru menyarankan masalah jalur dalam jawabannya, bukan aku. Anda harus mempertimbangkan untuk menerima jawabannya ( askubuntu.com/help/accepted-answer ).