macOS - tidak dapat rm tanpa sudo

0

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.
  • staffbukan 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?)

Philippe Hebert
sumber
1
Direktori apa ini? Maksudmu di mana-mana? Bahkan direktori rumah Anda? Jika Anda masuk ke direktori home Anda ( cd ~/) dan kemudian membuat file melalui touchseperti ini touch zzz_test.txtdan kemudian rm zzz_test.txtAnda mengatakan itu tidak akan berhasil?
JakeGould
1
Anda tidak perlu akses tulis ke file untuk menghapusnya: Anda perlu akses tulis ke direktori induknya. Perhatikan bahwa sudoberoperasi di lingkungan yang berbeda dari bashshell dari mana ia dipanggil. Tampaknya Anda memiliki alias atau fungsi yang mendefinisikan ulang rmdengan menambahkan parameter tambahan: gunakan type -a rmuntuk menemukan semua interpretasi yang mungkin. Selain itu, coba $(which rm) ...alih-alih rm ..., untuk memastikan Anda menggunakan executable yang tepat (ini biasanya /bin/rm, tapi saya merasa mungkin berbeda pada Mac).
AFH
1
Saya khawatir tentang folder / file tertentu yang Anda coba kerjakan. Di direktori biasa yang dimiliki pengguna saat ini saat mengerjakan file biasa yang dimiliki pengguna saat ini, Anda harus dapat menghapus file tanpa masalah.
Christopher Hostage
@AFH Temukan hebat! Saya mentransfer .bash_aliases dari linux dan saya memiliki toleransi toleransi kesalahan untuk rm => yang rm -Itercantum 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.
Philippe Hebert

Jawaban:

3

Dari pesan kesalahan sepertinya Anda memiliki alias atau fungsi yang mendefinisikan ulang rmdengan menambahkan parameter tambahan, karena sudoberoperasi di lingkungan yang berbeda dari shell dari mana ia dipanggil, dan umumnya tidak mengimpor alias dan definisi fungsi dari inisialisasi shell. skrip

Perintah ini menunjukkan semua kemungkinan interpretasi dari rmperintah:

type -a rm

Juga, di dalam shell Anda dapat menggunakan $(which rm) ...alih-alih rm ...untuk memastikan Anda menggunakan executable yang tepat, karena whichprogram eksternal tidak tahu tentang alias dan definisi fungsi yang typediperiksa 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.

AFH
sumber
1

Membangun komentar untuk pertanyaan Anda, kecuali jika pengguna memiliki file, kemungkinan besar Anda tidak akan dapat menghapus objek tanpa izin pengguna super.

Staffadalah 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 -Iarahan, itu tidak ada dalam rmperintah 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 MacOS sudo visudo, lalu menambahkan YOUR_USERNAME_HERE ALL=NOPASSWD: ALLakses sudo penuh ke semua perintah, atau YOUR_USERNAME_HERE ALL=(ALL:ALL) NOPASSWD: /bin/rmmembatasi 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.

Dooley_labs
sumber
Jawaban Anda, ditambah dengan AFH membuat saya menyadari bahwa saya memiliki pengaturan alias untuk rm yang dimasukkan -Isebagai parameter default. Tangkapan yang bagus!
Philippe Hebert