Izin berbagi samba ditolak pengguna menulis file tetapi masih menunjukkan

12

Masalah yang sangat aneh ...

Samba berbagi di remote:

[javaerpm]
    path = /u/abas/erpm/java
    force user = erpm
    guest ok = yes
    read only = no
    writeable = yes

Mount command pada local menggunakan root:

root@crunchbang:/mnt/abas# mount -t cifs -o username=guest,rw,exec,auto //10.0.0.2/javaerpm ./javaerpm

Root dapat membaca / menulis / cd tidak ada masalah sama sekali:

root@crunchbang:/mnt/abas# cd javaerpm
root@crunchbang:/mnt/abas/javaerpm# touch test
root@crunchbang:/mnt/abas/javaerpm# ll
total 1
-rw-r--r--  1  501 users   0 Sep 24 09:55 test
root@crunchbang:/mnt/abas/javaerpm# rm test

Tetapi jika saya beralih ke pengguna biasa dan melakukan hal yang sama saya mendapatkan ini:

shawn@crunchbang:/mnt/abas/javaerpm$ touch test
touch: cannot touch `test': Permission denied

Saya dapat lldan saya dapat melihat bahwa ia menulis file:

shawn@crunchbang:/mnt/abas/javaerpm$ ll
total 1
-rw-r--r--  1  501 users   0 Sep 24 09:55 test

Aku bahkan rmtidak masalah:

shawn@crunchbang:/mnt/abas/javaerpm$ rm test
shawn@crunchbang:/mnt/abas/javaerpm$

Saya sudah mencoba berbagai opsi pemasangan. uid=501tidak mengubah apa pun. nounixSudah dicoba tetapi tidak berfungsi sama sekali dan saya tidak melihat apa-apa menggunakan pengguna root atau shawn.

gerobak
sumber
Q ini tampaknya menjadi masalah yang hampir sama persis: unix.stackexchange.com/questions/71896/… .
slm
Bukan masalah yang sama persis.
kereta udang
Saya katakan hampir 8-). Komentar itu lebih ditujukan kepada saya untuk menghubungkan Q dan A bersama untuk pengunjung di masa mendatang, tetapi berpikir Anda mungkin memeriksanya.
slm

Jawaban:

7

Catatan: Saya hanya menebak-nebak di sini, saya bukan guru samba.

Samba / CIFS, setidaknya cara Anda menggunakannya di sini, tidak mereproduksi kredensial antara server dan klien. Karena force userarahan di server, semua operasi dilakukan sebagai pengguna erpmdi server. Namun, karena klien dan server menjalankan sistem unix, mereka secara otomatis menonaktifkan ekstensi CIFS POSIX . Hal ini membuat izin unix tampak berfungsi hingga titik tertentu, tetapi hanya sejauh yang diizinkan server, dan Anda telah mengalami kasus di mana klaim izin unix dan apa yang diizinkan server berbeda.

Anda akan melihat bahwa semua file muncul sebagai ID pengguna 501. Itu milik mereka di server.

Ketika Anda mencoba membuat atau menghapus file, ini memerlukan izin tulis pada direktori. Semua akses dipetakan ke satu pengguna di server, jadi izin menulis bermuara pada apakah erpmdiizinkan untuk menulis ke direktori itu di server. Jawabannya iya.

Ketika Anda menjalankan touch, itu membuat file dan kemudian mengubah waktu modifikasinya. Mengubah waktu modifikasi file memerlukan kepemilikan, dan ini diuji oleh kode sistem file generik, di sisi klien.

Jika Anda menjalankan strace touch test, Anda akan melihat bahwa openpanggilan (yang membuat file) berhasil, maka utimespanggilan (atau lebih tepatnya di Linux utimensatpanggilan sistem) gagal untuk mengatur waktu.

Ini sebenarnya agak aneh karena utimes harus berhasil, karena touchmenyebutnya dengan argumen NULL (berarti "mengatur stempel waktu ke waktu saat ini"), dan ini seharusnya diizinkan untuk setiap penelepon yang dapat menulis ke file, dan tidak hanya untuk pemilik seperti mengatur cap waktu sewenang-wenang. Saya menduga bahwa utimensatsebenarnya melakukan pemeriksaan berbasis izin, dan menentukan bahwa izin mengatakan Anda tidak dapat menulis ke file itu, meskipun sistem file akan memungkinkan operasi penulisan terlepas dari izin yang sebenarnya.

Keuntungan utama dari ekstensi CIFS POSIX ketika sisi server berjalan dengan izin dari pengguna non-root adalah untuk meneruskan bit yang dapat dieksekusi, dan mungkin kepemilikan grup. Mungkin kurang membingungkan jika Anda memetakan kepemilikan pengguna untuk satu pengguna sisi klien dengan forceuidopsi pemasangan.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
3
Terima kasih banyak atas tanggapannya. Saya akhirnya mencoba username=guest,defaults,nopermdan itu benar-benar memperbaiki masalah. Saya tidak tahu jawaban apa yang harus diterima untuk hal ini karena username=guest,defaults,nopermmungkin bukan jawaban terbaik dan saya hanya tidak punya waktu untuk mencoba jawaban Anda. Terima kasih lagi!
kereta udang
@ udang udang Terima kasih atas pembaruan Anda. Ini memecahkan masalah saya ... Saya sudah lama lupa harus memasang pipa secara default dan noperm saat pemasangan.
Matius