Saya mendapatkan izin yang ditolak ketika mencoba untuk memindahkan folder Music
melalui mv
meskipun pemilik direktori diatur ke pengguna saya dan izin pengguna diatur ke 7. Apa yang terjadi?
(Saya tahu bahwa saya bisa menggunakan sudo tetapi saya ingin mencari tahu apa yang salah. Ada yang berbau amis di sini). P: Saya menggunakan Mac OS X El Capitan.
Jawaban:
Perhatikan bahwa, ketika dalam folder
a
, pindahb
kec
, foldera
menentukan apa yang dapat Anda lakukan.Dalam hal ini, izin pada
.
akan menjadi yang paling penting.Perhatikan bahwa izinnya lebih kompleks daripada sekadar
rwx
.music
Folder Anda memiliki@
di akhir,.
folder memiliki+
di akhir.xattr -h
untuk menentukan izin kompleks untuk simbol @.getfacl
untuk menentukan ACL untuk simbol +.sumber
man xattr
mungkin merupakan titik awal yang baik.ls -la@e
. Kemungkinan besar di sini, adadeny delete
ACL yang juga mencegah penggantian nama.Saya menggunakan Windows Subsystem untuk Linux. Saya memiliki direktori terbuka dalam contoh bash yang berbeda. Menutupnya, izinkan saya memindahkan direktori.
sumber
Sepertinya ada setidaknya 1 file di suatu tempat jauh di dalam direktori itu yang tidak memiliki izin yang tepat.
Jadi, yang saya lakukan adalah:
Sekarang berhasil.
sumber
chmod 755
menghapus izin '@' khusus pada folder Musik?chmod -a 'everyone deny delete' Music
. Bisa jadi berbeda di El Capitan.Masalahnya di sini kemungkinan berkaitan dengan Daftar Kontrol Akses (ACL) dari folder Musik. ACL adalah sistem izin terpisah dengan yang POSIX biasa yang biasanya didaftar oleh
ls -l
. Beberapa direktori lain di folder Beranda dan di tempat lain juga memiliki ACL.Untuk melihat ACL dalam direktori home, gunakan:
Anda mungkin akan melihat aturan seperti
0: group:everyone deny delete
untuk direktori Musik. Seperti yang Anda catat, Anda dapat mengatasi masalah dengansudo
. Jika Anda tidak ingin melakukan itu (atau tidak bisa), Anda memiliki opsi lain, mengingat Anda adalah pemilik file tersebut. Anda dapat menghapus entri yang menyinggung dari ACL direktori Musik, berdasarkan indeksnya (0 pada contoh yang saya berikan di atas):Atau Anda dapat menghapus semua entri di ACL:
Sekarang Anda dapat memindahkan direktori (tergantung pada izin POSIX biasa). Jika Anda ingin mengembalikan ACL setelah pindah, Anda dapat menggunakan:
Dan gunakan
/bin/ls -le
lagi untuk mengonfirmasi ACL seperti yang Anda inginkan. Lihat contoh ACL diman chmod
untuk info lebih lanjut. Secara khusus, pengantar ini bermanfaat:Pesanan ACL
Saya tidak berpikir bahwa halaman manual menjelaskan aturan tentang pemesanan, tetapi halaman ini menjelaskan aturan pemesanan untuk ACL dengan jelas. Secara khusus,
deny
aturan eksplisit akan diterapkan sebelumallow
aturan eksplisit . Jadi, selamagroup:everyone deny delete
entri itu ada, tidak mungkin memberikan izin kepada pengguna Anda untuk menghapus denganallow
aturan. Ini karena izin ditolak untukeveryone
grup, termasuk Anda, dan aturan itu akan diterapkan terlebih dahulu.sumber
everyone deny delete
ACL masuk di default direktori home MacOS' adalah sebenarnya alasan direktori dapat tidak dipindahkan atau dihapus. (Juga, perhatikan OS yang mungkin membuatnya kembali kapan saja.)Saya memiliki masalah ini ketika satu set program sedang berjalan di direktori yang saya coba hapus. Untuk memindahkan direktori, saya harus terlebih dahulu membunuh semua program yang berjalan dari direktori itu.
Dalam perintah berikut, berhati - hatilah tentang bagaimana Anda memilih nama program Anda. Saya menggunakan perintah berikut, untuk referensi:
Prosedur umum adalah:
kill -9
dengan sangat hati - hati ) semua program dari direktorisumber
grep
dan memeriksanya. Apa pun yang Anda masukkan ke dalam yang pertamagrep
akan memilih dari kumpulan semua program yang sedang berjalan dankill
dengan hak akses root ...Itu juga bisa terjadi ketika salah satu file di dalamnya dilindungi dari penulisan. Saya memiliki kasus tepi hari ini ketika
access.log
dilindungi untuk Apache, yang sudah dihentikan. Saya baru saja menghapus file ini, jadi lebih lanjut saya bisa memindahkan direktori induk.sumber