Pemilik baru Mac, mengenal mesin.
Saya menemukan masalah yang cukup mengganggu - saya tidak dapat menggunakan rm tanpa sudo. Memang kapan saja saya menulis perintah rm, hasilnya adalah sebagai berikut:
rm: illegal option -- I
usage: rm [-f | -i] [-dPRrvW] file ...
unlink file
sedangkan jika saya sudo perintah itu berhasil dijalankan.
Informasi tambahan:
- macOS Sierra v.10.12.6
- Semua file memiliki izin akses 777 dan milik 'staf' pengguna.
staff
bukan grup / pengguna buatan pengguna. Harapan adalah yang merupakan basis pengguna / grup yang disediakan oleh os.
Jadi pertanyaannya adalah, bagaimana saya bisa membuatnya sehingga saya tidak perlu sudo kapan saja saya ingin memodifikasi file-file ini? (Dan dengan ekstensi apa pengguna 'staf' ini?)
cd ~/
) dan kemudian membuat file melaluitouch
seperti initouch zzz_test.txt
dan kemudianrm zzz_test.txt
Anda mengatakan itu tidak akan berhasil?sudo
beroperasi di lingkungan yang berbeda daribash
shell dari mana ia dipanggil. Tampaknya Anda memiliki alias atau fungsi yang mendefinisikan ulangrm
dengan menambahkan parameter tambahan: gunakantype -a rm
untuk menemukan semua interpretasi yang mungkin. Selain itu, coba$(which rm) ...
alih-alihrm ...
, untuk memastikan Anda menggunakan executable yang tepat (ini biasanya/bin/rm
, tapi saya merasa mungkin berbeda pada Mac).rm -I
tercantum di bagian bawah file. Menghapus garis memang menghapus masalah! Jika mau, Anda dapat menyalin komentar Anda sebagai jawaban dan saya akan menerimanya sebagai jawaban yang tepat.Jawaban:
Dari pesan kesalahan sepertinya Anda memiliki alias atau fungsi yang mendefinisikan ulang
rm
dengan menambahkan parameter tambahan, karenasudo
beroperasi di lingkungan yang berbeda dari shell dari mana ia dipanggil, dan umumnya tidak mengimpor alias dan definisi fungsi dari inisialisasi shell. skripPerintah ini menunjukkan semua kemungkinan interpretasi dari
rm
perintah:Juga, di dalam shell Anda dapat menggunakan
$(which rm) ...
alih-alihrm ...
untuk memastikan Anda menggunakan executable yang tepat, karenawhich
program eksternal tidak tahu tentang alias dan definisi fungsi yangtype
diperiksa perintah internal . Perintah dengan komponen direktori selalu menuju ke sistem file untuk menemukannya, dengan demikian mem-bypass alias dan fungsi.Perhatikan bahwa Anda tidak perlu akses tulis ke file untuk menghapusnya: yang Anda butuhkan adalah akses tulis ke direktori induknya.
sumber
Membangun komentar untuk pertanyaan Anda, kecuali jika pengguna memiliki file, kemungkinan besar Anda tidak akan dapat menghapus objek tanpa izin pengguna super.
Staff
adalah grup Sistem MacOS. Memodifikasi file yang dimiliki oleh grup ini akan berpotensi berbahaya, meskipun kemungkinan besar Anda tahu apa yang Anda lakukan dalam kasus penggunaan Anda.Adapun
-I
arahan, itu tidak ada dalamrm
perintah MacOS ; Anda harus menggunakan-i
, kecuali memiliki pengganti yang sama.Untuk melewati sudo, Anda dapat menambahkan alias rm di .bashrc (
rm='sudo rm -i'
) dan menambahkan diri Anda ke file Sudoers MacOSsudo visudo
, lalu menambahkanYOUR_USERNAME_HERE ALL=NOPASSWD: ALL
akses sudo penuh ke semua perintah, atauYOUR_USERNAME_HERE ALL=(ALL:ALL) NOPASSWD: /bin/rm
membatasi akses penuh ke perintah rm saja.Catatan: Perintah rm MacOS mungkin tidak terletak di / bin / rm. Saya belum menggunakannya baru-baru ini, tetapi anggap itu terletak di sana dari pengetahuan sebelumnya.
sumber
-I
sebagai parameter default. Tangkapan yang bagus!