Root tidak bisa chmod?


12

Di departemen saya, kami memiliki server file kecil dengan CentOS dan samba. Saya memiliki akses root untuk dapat melakukan beberapa perawatan dasar.

Hari ini saya membuat beberapa folder hanya-baca, jadi saya melanjutkan dan melakukan chmod -R -w some-folder/, tetapi untuk beberapa file saya mendapat respons:

chmod: ./somefile.pdf: izin baru r-xrwxr-x, bukan r-xr-xr-x

Setelah menambahkan, -vsaya tidak mendapatkan banyak informasi:

mode `./somefile.pdf 'dipertahankan sebagai 0575 (r-xrwxr-x)

Saya mencoba yang berikut ini hanya untuk memastikan:

# touch test-file
# chmod -v -R -w .
mode of `./somefile.pdf' retained as 0575 (r-xrwxr-x)
chmod: ./somefile.pdf: new permissions are r-xrwxr-x, not r-xr-xr-x
mode of `./test-file' changed to 0444 (r--r--r--)

Saya tidak dapat memikirkan alasan bagus mengapa root tidak dapat melakukan chmod?

Beberapa informasi:

  • Sistem file tidak hanya baca (hanya beberapa file yang menolak untuk di-chmodded).
  • Saya menjalankan perintah chmod sebagai root tetapi tidak berpengaruh.
  • Partisi tempat file berada adalah ext4.

PEMBARUAN : Ini adalah output untuk lsattrpada file dan berisi folder:

# lsattr somefile.pdf
-------------e- somefile.pdf
# lsattr ..
-------------e- ../myfolder

Tidak ada setuid yang hadir ( ls -la):

dr-xr-xr-x  2 userxyz abc   4096 May 30 09:29 .
dr-xr-xr-x 17 userxyz abc   4096 Sep 19  2013 ..
-r-xrwxr-x  1 userxyz abc 275150 Aug  6  2013 somefile.pdf

Anda mengakses file-file ini dari jarak jauh?
Luciano Andress Martini

1
Apa output dari lsattrfile-file yang sama, dan direktori di atasnya?
Ryder

Jawaban:


17

Menurut sumber, Anda memiliki mode yang diharapkan naif . Setelah membuang lebih banyak, saya pikir penyebabnya adalah -wpilihan, yang bukan yang Anda harapkan. Anda harus memberi g-watau ugo-w(sesuai dengan kebutuhan Anda).

Tanpa memberikan target eksplisit (a, o, g, u) beberapa hasil yang tidak terduga dapat diberikan, sesuai dengan nilai umask. Saya pikir pesan ekstra tersebut dilakukan karena perubahan yang tidak terduga.

Edit: sumber di http://git.savannah.gnu.org/cgit/coreutils.git/tree/src/chmod.c#n301

Diambil dari cache Google, komentar dalam kode itu sudah tidak ada lagi:

/ * Jika benar, diagnosa kejutan dari penyalahgunaan naif seperti "file chmod -r". POSIX memungkinkan diagnostik di sini, karena kode portabel seharusnya digunakan. "chmod - -r file" * /


Ya, ini dia. Saya mengubahnya menjadi ugo-wdan tidak mengeluh lagi. Saya akan menunggu beberapa saat sebelum menerima karena rasa hormat kepada calon penjawab.
Roflo

1
Dan saya menyambut suntingan atau jawaban yang lebih baik, karena saya masih tidak mengerti mengapa chmod bekerja dengan cara yang aneh ini.
Giacomo Catenazzi

5
man chmod: "Kombinasi huruf ugoa mengontrol akses pengguna ke file yang akan diubah [...] Jika tidak ada yang diberikan, efeknya adalah seolah-olah (a) diberikan, tetapi bit yang diatur dalam umask tidak terpengaruh. " Jadi Anda dapat melakukan hal-hal seperti file chmod + w dan hanya memberikan akses tulis kepada mereka yang akan mendapatkannya saat membuat file baru. Perilaku negatif memang agak membingungkan, jadi peringatan itu sepertinya ide yang bagus.
ilkkachu
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.