Menggunakan chown untuk mengubah pemilik grup dari suatu direktori tidak diizinkan ... Mengapa?

10

Saya mencoba mengeksekusi chownpada direktori yang memiliki izin dan pemilik berikut:

drwxrwxr-x 2 justin devs  4096 Jan  1 20:42 test

Saya mencoba menjalankan yang berikut sebagai justinpengguna:

chown justin:nginx test

Jadi pada dasarnya ubah saja pemilik grup nginx, tetapi saya mendapatkan:

chown: changing ownership of `test/': Operation not permitted

Ada ide?

Justin
sumber

Jawaban:

15

Pertama, gunakan chgrpperintah alih-alih chown dan itu akan berhasil.

Dalam hal menggunakan chown ..... Untuk alasan keamanan di sebagian besar konteks Linux, setiap perubahan kepemilikan dibatasi untuk pengguna root walaupun Anda ditandai sebagai pemilik file, direktori, dll atau tidak. Dalam satu kasus, ini untuk mencegah pengguna menghindari kuota dengan mengatur bit izin file ke 777 dan mengubah kepemilikan file ke beberapa pengguna lain yang tidak dikenal dan memakan kuota mereka.

Jadi menggunakan chownperintah dalam konteks pengguna, terutama di mana kepemilikan tidak berubah tidak boleh digunakan hanya untuk mengubah grup file.

CATATAN: Anda harus menjadi anggota grup tempat Anda mencoba mengubah file. Ini dapat diverifikasi oleh id -a. Jika Anda tidak berada dalam grup, Anda akan mendapatkan pesan ini walaupun Anda adalah pemilik file.

mdpc
sumber
1
Hal yang sama dengan chgrp nginx test, Operasi tidak diizinkan.
Justin
Jika Anda menjalankan perintah chgrp sebagai pemilik inode, ini seharusnya berfungsi. Apakah sistem file Anda di-mount BACA HANYA?
mdpc
Tidak, tidak berfungsi. Ini adalah test case:$ mkdir test $ chgrp nginx test/ chgrp: changing group of test/: Operation not permitted $ ll total 4 drwxrwxr-x 2 justin justin 4096 Jan 1 21:18 test
Justin
1
Mengerti .... Anda tidak dapat mengubah kepemilikan ke grup tempat Anda tidak diizinkan. Periksa id -auntuk memverifikasi bahwa grup yang Anda coba ubah filenya tersedia untuk Anda.
mdpc
1
ya, itu solusinya.
mdpc
4

Anda harus menjadi bagian dari grup untuk dapat mengubah kepemilikan grup saat ini menjadi. Anda dapat mengedit /etc/groupsfile sebagai root untuk memastikan bahwa pengguna justin adalah bagian dari grup nginx. Setelah membuat perubahan untuk grup, Anda harus masuk kembali ke sistem untuk membuatnya dalam pengaruh atau mengubah ke grup tanpa restart / logout, Anda dapat menggunakan cmd newgrp nginx.

Sekarang Anda harus dapat mengubah grup file atau folder dengan cmd chgrp nginx testsebagai justin pengguna.

Cloudmeteor
sumber