GNU/Linux >> Belajar Linux >  >> Linux

Cara Memaksa Kepemilikan File oleh Pengguna/Grup Pada Samba Share

Permintaan

Anda memiliki direktori disk yang dibagikan di antara klien Linux dan Microsoft Windows. Beberapa pengguna memerlukan akses ke berbagi direktori ini, tetapi ketika file dibuat atau dimodifikasi dari klien Linux, izin file Linux diterapkan sehingga menyulitkan atau tidak mungkin bagi klien Windows untuk mengakses file-file ini.

Anda ingin berbagi sumber daya disk ini secara homogen.

Solusinya

Bergantung pada strategi pemeliharaan menyeluruh Anda, salah satu dari teknik berikut ini dapat digunakan.

1. Memaksa Kepemilikan Pengguna atau Grup

Dalam file /etc/samba/smb.conf anda dapat menggunakan arahan:

force user = [user]
force group = [group]

Ini akan menimpa atribut kepemilikan file normal untuk akses file atau direktori. Secara default, kredensial pengguna yang efektif digunakan. Dengan menggunakan salah satu (atau keduanya) dari arahan di atas, kredensial terkait dapat dipaksakan ke nilai tertentu. Dengan demikian, semua pengaksesan file akan dilakukan seolah-olah proses pengaksesan berjalan dengan kredensial yang ditentukan.

Jika direktif berbentuk:

force group = +[group]

maka hanya pengguna Linux yang sudah menjadi anggota [grup] yang akan mengubah grup utama mereka menjadi [grup] selama masa akses. Pengguna Linux yang belum menjadi anggota [grup] tidak terpengaruh oleh arahan ini.

2. Gunakan Izin Akses Direktori

Pertimbangkan direktur /tmp:ini adalah papan gosok yang memungkinkan banyak pengguna untuk membuat, memodifikasi, atau menghapus file. Untuk mencegah pengguna A menghapus file yang dimiliki oleh pengguna B, direktori memiliki bit sticky yang disetel:

$ ls -ld /tmp
drwxrwxrwt 14 root root 360 Mar 19 08:25 /tmp

Perhatikan t bendera izin:ini menunjukkan “lengket ” bit diatur untuk direktori. Setiap pengguna dapat membuat file di direktori ini, tetapi hanya pengguna pemilik yang dapat menghapus entri; tanpa sticky bit siapa pun dapat menghapus file apa pun karena direktori tersebut memiliki izin baca/tulis/eksekusi dunia.

1. Salah satu cara untuk menghindari masalah ini adalah agar direktori SAMBA bersama dimiliki oleh pengguna SAMBA:

# /bin/mkdir [/path/to/SAMBA/share]
# /bin/chown -R [user]:[group] -R [/path/to/SAMBA/share]

2. Selanjutnya, aktifkan bit setgid untuk direktori guna memaksa kredensial grup dari entri direktori mana pun agar sesuai dengan kredensial grup dari direktori tersebut:

# /bin/chmod g+s [/path/to/SAMBA/share]
# /bin/ls -ld [/path/to/SAMBA/share]
drwxrws--- 1 [user] [group] 0 Mar 19 09:07 [/path/to/SAMBA/share]

3. Sekarang buat file di dalam [/path/to/SAMBA/share] sebagai pengguna root. File akan dimiliki oleh root tetapi grupnya akan menjadi grup [grup]:

# /bin/mkdir /example
# /bin/chown root:oracle /example
# /bin/chmod g+s /example
# /bin/ls -ld /example
drwxr-sr-x 2 root oracle 4096 Mar 19 10:03 /example

4. Terakhir, buat file di /example sebagai pengguna root:

# id
uid=0(root) gid=0(root) groups=0(root)
# touch /example/file
# ls -ld /example /example/file
drwxrws--- 2 root oracle 4096 Mar 19 10:09 /example
-rw-r--r-- 1 root oracle    0 Mar 19 10:09 /example/file

Perhatikan bahwa meskipun kredensial yang digunakan untuk membuat file adalah root:root, kredensial akses yang disimpan untuk file tersebut adalah root:Oracle; kepemilikan grup secara otomatis disetel ke grup direktori.

Catatan

Metode setgid yang dijelaskan di atas juga berfungsi jika bit setuid digunakan sebagai gantinya. Pada langkah chmod, lakukan ini sebagai gantinya:

# chmod u+s [/path/to/SAMBA/share]

Anda juga dapat mengganti kepemilikan file dan keanggotaan grup seperti ini:

# chmod u+s,g+s [/path/to/SAMBA/share]

Meskipun kemampuan yang menarik, ini mungkin memiliki utilitas yang terbatas.

3. Gunakan Daftar Kontrol Akses (ACL)

Daftar kontrol akses, atau ACL, adalah fitur sistem file tempat sekumpulan atribut file tambahan disimpan di samping izin pemilik/grup/lain file Linux normal. Menggunakan ACL memungkinkan kontrol yang sangat halus atas jenis akses yang tepat untuk diberikan kepada jenis akses yang diberikan.

Implementasi sistem file SAMBA di Linux mendukung daftar kontrol akses, tetapi fitur tersebut harus diaktifkan secara eksplisit melalui atribut acl mount. Dimungkinkan untuk mengaktifkan fitur ini secara dinamis, seperti:

# mount -o remount,acl [/path/to/samba/mount/point]

Sebagai contoh, misalkan kita memiliki share /samba/office/ di mana kita mengizinkan setiap pengguna untuk menulis file, tetapi kredensial grup harus dipaksa ke office. Kita bisa menggunakan perintah:

# mount -o remount,acl /group
# setfacl -R -d -m u::rwx,g:office:rwx,o::r-x /samba/office
# /bin/getfacl /samba/office
# file: samba/office/
# owner: root
# group: office
user::rwx
group::rwx
other::rwx
default:user::rwx
default:group:office:rwx
default:mask::rwx
default:other::r-x

Saat kami membuat ACL ini untuk direktori, ini berlaku untuk file dan subdirektori yang ada di dalamnya.


Linux
  1. Bagaimana Mengaktifkan Izin File Unix Di Samba Share Dengan Smb 2.0+?

  2. Cara Menggunakan Perintah chown untuk Mengubah Kepemilikan di Linux

  3. Cara mengelola Izin/Kepemilikan File dan Direktori di Linux

  1. Linux chmod and chown – Cara Mengubah Izin dan Kepemilikan File di Linux

  2. Bagaimana cara menambahkan pengguna ke grup di Linux

  3. Bagaimana cara kerja izin file untuk pengguna root?

  1. Bagaimana Mengembalikan Kepemilikan Grup/pengguna Default Dari Semua File Di Bawah/var?

  2. Bagaimana Memaksa Kepemilikan Grup Di Samba Share?

  3. Cara Membuat Berbagi Samba di Ubuntu 20.04