Masalahnya adalah saya tidak bisa mendapatkan file di share CIFS untuk menunjukkan izin yang benar pada klien Linux tanpa memaksa vers=1.0 dalam opsi mount.

Server adalah sistem FreeNAS yang menjalankan Samba 4.7.0. Ini pada dasarnya berjalan dalam mode mandiri / kelompok kerja; tidak ada pengontrol AD ​​/ domain, dan saya tidak ingin satu jika saya bisa menghindarinya.

Klien adalah sistem Debian Sid (tidak stabil) dengan komponen Samba v4.7.4, dan cifs-utils versi 6.8-1.

Mantra pemasangan saat ini terlihat seperti ini:

sudo mount.cifs -o 'vers=1.0,username=me,uid=me,gid=me,credentials=[[filename]]' //freenas/me $HOME/mnt

(Hal di atas sebenarnya dilakukan oleh autofs, tetapi itu ternyata tidak relevan.)

Setelah selesai, entri berikut muncul di mtab:

//freenas/me on /home/me/mnt type cifs (rw,relatime,vers=1.0,cache=strict,username=me,domain=,uid=1000,forceuid,gid=1000,forcegid,addr=X.X.X.X,soft,unix,posixpaths,serverino,mapposix,acl,rsize=1048576,wsize=65536,echo_interval=60,actimeo=1)

... Dan direktori pengujian kami muncul dengan mode / izin berikut:

me@linuxclient:~$ ls -al mnt/testdir/
total 3
drwxr-xr-x+ 2 me me 0 Apr 21 00:10 .
drwxr-xr-x+ 5 me me 0 Apr 21 00:07 ..
-r--r--r--+ 1 me me 0 Apr 21 00:09 R--R--R--
-rw-r--r--+ 1 me me 0 Apr 21 00:10 RW-R--R--
-rwx------+ 1 me me 0 Apr 21 00:08 RWX------
-rwxr-xr-x+ 1 me me 0 Apr 21 00:08 RWXR-XR-X
-r-xr-xr-x+ 1 me me 0 Apr 21 00:09 R-XR-XR-X

Inilah yang saya harapkan dan inginkan. Namun, mount memaksa SMB versi 1.0, yang sudah tua dan rusak. Namun, jika saya tidak menentukan secara eksplisit vers=1.0, maka ini terjadi:

//freenas/me on /home/me/mnt type cifs (rw,relatime,vers=default,cache=strict,username=me,domain=,uid=1000,forceuid,gid=1000,forcegid,addr=X.X.X.X,file_mode=0755,dir_mode=0755,soft,nounix,serverino,mapposix,rsize=1048576,wsize=1048576,echo_interval=60,actimeo=1)


me@linuxclient:~$ ls -al mnt/testdir/
total 5120
drwxr-xr-x 2 me me 0 Apr 21 00:10 .
drwxr-xr-x 2 me me 0 Apr 21 00:07 ..
-rwxr-xr-x 1 me me 0 Apr 21 00:09 R--R--R--
-rwxr-xr-x 1 me me 0 Apr 21 00:10 RW-R--R--
-rwxr-xr-x 1 me me 0 Apr 21 00:08 RWX------
-rwxr-xr-x 1 me me 0 Apr 21 00:08 RWXR-XR-X
-rwxr-xr-x 1 me me 0 Apr 21 00:09 R-XR-XR-X

Sesuatu telah disuntikkan file_mode=0755,dir_mode=0755 ke opsi mount, dan izin yang dihasilkan adalah 0x755 pada semua file, terlepas dari izin yang sebenarnya, yaitu jelas salah. Saya belum tahu dari mana datangnya opsi yang tidak diinginkan ini.

Karena tujuan akhir saya adalah memiliki beberapa pengguna bersamaan yang semuanya terhubung ke direktori rumah mereka sendiri dengan kredensial mereka sendiri, saya mulai bereksperimen dengan ini mount mantra, khususnya multiuser pilihan:

sudo mount.cifs -o "user=me,noperm,multiuser" //freenas/me $HOME/mnt


me@linuxclient:~$ ls -al mnt/testdir/
total 5120
drwxr-xr-x 2 me me 0 Apr 21 00:10 .
drwxr-xr-x 2 me me 0 Apr 21 00:07 ..
-rwxr-xr-x 1 me me 0 Apr 21 00:09 R--R--R--
-rwxr-xr-x 1 me me 0 Apr 21 00:10 RW-R--R--
-rwxr-xr-x 1 me me 0 Apr 21 00:08 RWX------
-rwxr-xr-x 1 me me 0 Apr 21 00:08 RWXR-XR-X
-rwxr-xr-x 1 me me 0 Apr 21 00:09 R-XR-XR-X

Masih salah. Namun, ketika saya menambahkan opsi mount cifsacl:

sudo mount.cifs -o "user=me,noperm,multiuser,cifsacl" //freenas/me $HOME/mnt

Dan masukkan kredensial saya untuk server melalui cifscreds perintah, saya mendapatkan hasil ini:

//freenas/me on /home/me/mnt type cifs (rw,relatime,vers=default,cache=strict,multiuser,domain=,uid=0,noforceuid,gid=0,noforcegid,addr=X.X.X.X,file_mode=0755,dir_mode=0755,soft,nounix,serverino,mapposix,cifsacl,noperm,rsize=1048576,wsize=1048576,echo_interval=60,actimeo=1)


me@linuxclient:~$ ls -al mnt/testdir/
total 5120
drwxr-xr-x 2 root root 0 Apr 21 00:10 .
drwxr-xr-x 2 root root 0 Apr 21 00:07 ..
-r--r--r-- 1 root root 0 Apr 21 00:09 R--R--R--
-rw-r--r-- 1 root root 0 Apr 21 00:10 RW-R--R--
-rwx------ 1 root root 0 Apr 21 00:08 RWX------
-rwxr-xr-x 1 root root 0 Apr 21 00:08 RWXR-XR-X
-r-xr-xr-x 1 root root 0 Apr 21 00:09 R-XR-XR-X

Meskipun ada opsi file_mode=0755,dir_mode=0755 masih disuntikkan, izin sekarang muncul dengan benar. Tapi sekarang UID salah, dan semuanya sepertinya dimiliki oleh root. Saya benar-benar dapat membuat, memodifikasi, dan menghapus file di share, tetapi mereka muncul sebagai root. Saya tahu seharusnya ada pemetaan yang dilakukan oleh cifs.idmap dan winbindd, tapi saya belum tahu persis bagaimana itu dilakukan atau cara mengaturnya.

Saya lebih suka tidak terus menggunakan vers=1.0 Kluge; Saya lebih suka melakukan ini dengan benar. Adakah petunjuk tentang apa yang saya lewatkan?

ewhac
sumber