ວິທີສ້າງການແບ່ງປັນ Samba

Alessio, Peter Lilley, Petr Bokoc Version F32 Last review: 2020-12-01

Samba ຊ່ວຍໃຫ້ Windows ແລະ ລູກຄ່າຍອື່ນໆ ສາມາດເຊື່ອມຕໍ່ກັບໄດເຣັກທໍຣີທີ່ແບ່ງປັນໄຟລ໌ໃນເຄື່ອງ Linux. ມັນນຳໃຊ້ໂປຣໂຕຄໍ server message block (SMB). ຄູ່ມືນີ້ຈະກວມເອົາການສ້າງສະຖານທີ່ແບ່ງປັນໄຟລ໌ໃນເຄື່ອງ Fedora ທີ່ສາມາດເຂົ້າເຖິງໄດ້ໂດຍຄອມພິວເຕີເຄື່ອງອື່ນໆໃນເຄືອຂ່າຍທ້ອງຖິ່ນ.

ຕິດຕັ້ງ ແລະ ເປີດໃຊ້ງານ Samba

ຄຳສັ່ງຕໍ່ໄປນີ້ແມ່ນເພື່ອຕິດຕັ້ງ Samba ແລະ ຕັ້ງຄ່າໃຫ້ມັນເຮັດວຽກຜ່ານ systemctl. ນອກຈາກນີ້ ຍັງມີການຕັ້ງຄ່າໄຟວໍເພື່ອອະນຸຍາດໃຫ້ຄອມພິວເຕີເຄື່ອງອື່ນເຂົ້າເຖິງ Samba ໄດ້.

$ sudo dnf install samba
$ sudo systemctl enable smb --now
$ firewall-cmd --get-active-zones
$ sudo firewall-cmd --permanent --zone=FedoraWorkstation --add-service=samba
$ sudo firewall-cmd --reload

ການແບ່ງປັນໄດເຣັກທໍຣີພາຍໃນ /home

ໃນຕົວຢ່າງນີ້ ເຈົ້າຈະແບ່ງປັນໄດເຣັກທໍຣີພາຍໃນໄດເຣັກທໍຣີ home ຂອງເຈົ້າເອງ, ເຊິ່ງເຂົ້າເຖິງໄດ້ສະເພາະຜູ້ໃຊ້ຂອງເຈົ້າເທົ່ານັ້ນ.

Samba ບໍ່ໄດ້ໃຊ້ຜູ້ໃຊ້ຂອງລະບົບປະຕິບັດການໃນການຢືນຢັນຕົວຕົນໂດຍກົງ, ດັ່ງນັ້ນບັນຊີຜູ້ໃຊ້ຂອງເຈົ້າຕ້ອງຖືກສ້າງຂຶ້ນໃນ Samba ນຳ. ຖ້າບັນຊີຂອງເຈົ້າແມ່ນ jane ໃນເຄື່ອງ host, ຜູ້ໃຊ້ jane ກໍຕ້ອງຖືກເພີ່ມເຂົ້າໃນ Samba ຄືກັນ. ເຖິງແມ່ນວ່າຊື່ຜູ້ໃຊ້ຕ້ອງຄືກັນ, ແຕ່ລະຫັດຜ່ານສາມາດແຕກຕ່າງກັນໄດ້.

ສ້າງຜູ້ໃຊ້ຊື່ jane ໃນ Samba:

$ sudo smbpasswd -a jane

ສ້າງໄດເຣັກທໍຣີເພື່ອເປັນບ່ອນແບ່ງປັນໃຫ້ jane, ແລະ ຕັ້ງຄ່າບໍລິບົດ SELinux ໃຫ້ຖືກຕ້ອງ:

$ mkdir /home/jane/share
$ sudo semanage fcontext --add --type "samba_share_t" "/home/jane/share(/.*)?"
$ sudo restorecon -R ~/share

ການຕັ້ງຄ່າ Samba ແມ່ນຢູ່ໃນໄຟລ໌ /etc/samba/smb.conf. ການເພີ່ມສ່ວນຕໍ່ໄປນີ້ໃສ່ທ້າຍໄຟລ໌ຈະເປັນການສັ່ງໃຫ້ Samba ຕັ້ງຄ່າການແບ່ງປັນສຳລັບ jane ໂດຍໃຊ້ຊື່ວ່າ "share" ຢູ່ທີ່ໄດເຣັກທໍຣີ /home/jane/share ທີ່ຫາກໍ່ສ້າງຂຶ້ນ.

[share]
        comment = My Share
        path = /home/jane/share
        writeable = yes
        browseable = yes
        public = yes
        create mask = 0644
        directory mask = 0755
        write list = user

ເລີ່ມລະບົບ Samba ໃໝ່ເພື່ອໃຫ້ການປ່ຽນແປງມີຜົນ:

$ sudo systemctl restart smb

ການແບ່ງປັນໄດເຣັກທໍຣີສຳລັບຜູ້ໃຊ້ຫຼາຍຄົນ

ໃນຕົວຢ່າງນີ້, ເຈົ້າຈະແບ່ງປັນໄດເຣັກທໍຣີ (ທີ່ຢູ່ນອກໄດເຣັກທໍຣີ home ຂອງເຈົ້າ) ແລະ ສ້າງກຸ່ມຜູ້ໃຊ້ທີ່ມີສິດໃນການອ່ານ ແລະ ຂຽນລົງໃນບ່ອນແບ່ງປັນນັ້ນ.

ຈື່ໄວ້ວ່າຜູ້ໃຊ້ Samba ຕ້ອງເປັນຜູ້ໃຊ້ໃນລະບົບນຳ ເພື່ອໃຫ້ເປັນໄປຕາມການກຳນົດສິດຂອງລະບົບໄຟລ໌. ຕົວຢ່າງນີ້ແມ່ນການສ້າງກຸ່ມໃນລະບົບຊື່ວ່າ myfamily ສຳລັບສອງຜູ້ໃຊ້ໃໝ່ຄື jack ແລະ maria.

$ sudo groupadd myfamily
$ sudo useradd  -G myfamily jack
$ sudo useradd  -G myfamily maria

ເຈົ້າສາມາດສ້າງຜູ້ໃຊ້ເຫຼົ່ານີ້ໂດຍບໍ່ຕ້ອງມີລະຫັດຜ່ານຂອງລະບົບກໍໄດ້. ນີ້ຈະເປັນການປ້ອງກັນບໍ່ໃຫ້ມີການເຂົ້າເຖິງລະບົບຜ່ານ SSH ຫຼື ການເຂົ້າລະບົບໂດຍກົງຢູ່ໜ້າເຄື່ອງ.

ເພີ່ມ jack ແລະ maria ເຂົ້າໃນ Samba ແລະ ສ້າງລະຫັດຜ່ານໃຫ້ພວກເຂົາ:

$ sudo smbpasswd -a jack
$ sudo smbpasswd -a maria

ການຕັ້ງຄ່າໂຟນເດີແບ່ງປັນ:

$ sudo mkdir /home/share
$ sudo chgrp myfamily /home/share
$ sudo chmod 770 /home/share
$ sudo semanage fcontext --add --type "samba_share_t" "/home/share(/.*)?"
$ sudo restorecon -R /home/share

ແຕ່ລະການແບ່ງປັນຈະຖືກອະທິບາຍໂດຍສ່ວນຂອງມັນເອງໃນໄຟລ໌ /etc/samba/smb.conf. ເພີ່ມສ່ວນນີ້ໃສ່ທາງລຸ່ມຂອງໄຟລ໌:

[family]
        comment = Family Share
        path = /home/share
        writeable = yes
        browseable = yes
        public = yes
        valid users = @myfamily
        create mask = 0660
        directory mask = 0770
        force group = +myfamily

ຄຳອະທິບາຍສຳລັບຂໍ້ມູນຂ້າງເທິງ:

  • valid users: ສະເພາະຜູ້ໃຊ້ໃນກຸ່ມ family ເທົ່ານັ້ນທີ່ມີສິດເຂົ້າເຖິງ. ເຄື່ອງໝາຍ @ ໝາຍເຖິງຊື່ກຸ່ມ.

  • force group = +myfamily: ໄຟລ໌ ແລະ ໄດເຣັກທໍຣີຈະຖືກສ້າງຂຶ້ນພາຍໃຕ້ກຸ່ມນີ້ ແທນທີ່ຈະເປັນກຸ່ມຂອງຜູ້ໃຊ້ເອງ.

  • create mask = 0660: ໄຟລ໌ໃນບ່ອນແບ່ງປັນຈະຖືກສ້າງຂຶ້ນດ້ວຍການກຳນົດສິດທີ່ອະນຸຍາດໃຫ້ຜູ້ໃຊ້ທຸກຄົນໃນກຸ່ມສາມາດອ່ານ ແລະ ຂຽນໄຟລ໌ທີ່ສ້າງໂດຍຜູ້ໃຊ້ອື່ນໄດ້.

  • directory mask = 0770: ຄືກັນກັບຂ້າງເທິງ, ແຕ່ໃຊ້ສຳລັບໄດເຣັກທໍຣີ.

ເລີ່ມລະບົບ Samba ໃໝ່ເພື່ອໃຫ້ການປ່ຽນແປງມີຜົນ:

$ sudo systemctl restart smb

ການຈັດການຜູ້ໃຊ້ Samba

ປ່ຽນລະຫັດຜ່ານຜູ້ໃຊ້ Samba

ໝາຍເຫດ: ລະຫັດຜ່ານຜູ້ໃຊ້ຂອງລະບົບ ແລະ ຜູ້ໃຊ້ Samba ສາມາດແຕກຕ່າງກັນໄດ້. ຜູ້ໃຊ້ຂອງລະບົບແມ່ນຈຳເປັນຕ້ອງມີເພື່ອຈັດການເລື່ອງສິດການເຂົ້າເຖິງລະບົບໄຟລ໌.

$ sudo smbpasswd maria

=== ລົບຜູ້ໃຊ້ Samba ອອກ

$ sudo smbpasswd -x maria

ຖ້າເຈົ້າບໍ່ຕ້ອງການຜູ້ໃຊ້ໃນລະບົບແລ້ວ, ກໍໃຫ້ລົບອອກຄືກັນ:

$ sudo userdel -r maria

== ການແກ້ໄຂບັນຫາ ແລະ ໄຟລ໌ບັນທຶກ (Logs)

ໄຟລ໌ບັນທຶກ (log) ຂອງ Samba ແມ່ນຕັ້ງຢູ່ໃນ /var/log/samba/

$ sudo tail -f /var/log/samba/log.smbd

ເຈົ້າສາມາດເພີ່ມລາຍລະອຽດຂອງ log ໄດ້ໂດຍການເພີ່ມຂໍ້ຄວາມນີ້ໃສ່ສ່ວນ [global] ຂອງໄຟລ໌ /etc/samba/smb.conf:

[global]
        loglevel = 5

ເພື່ອທົດສອບຄວາມຖືກຕ້ອງຂອງໄວຍາກອນໃນໄຟລ໌ການຕັ້ງຄ່າ /etc/samba/smb.conf ໃຫ້ໃຊ້ຄຳສັ່ງ testparm. ຕົວຢ່າງຜົນທີ່ໄດ້ຮັບ:

Load smb config files from /etc/samba/smb.conf
Loaded services file OK.
Server role: ROLE_STANDALONE

ເພື່ອສະແດງການເຊື່ອມຕໍ່ Samba ໃນປັດຈຸບັນ, ໃຫ້ໃຊ້ຄຳສັ່ງ smbstatus. ຕົວຢ່າງຜົນທີ່ໄດ້ຮັບ:

Samba version 4.12.3
PID     Username     Group        Machine                                   Protocol Version  Encryption           Signing
----------------------------------------------------------------------------------------------------------------------------------------
7259    jack         jack         192.168.122.1 (ipv4:192.168.122.1:40148)  SMB3_11           -                    partial(AES-128-CMAC)

Service      pid     Machine       Connected at                     Encryption   Signing
---------------------------------------------------------------------------------------------
family       7259    192.168.122.1 Fri May 29 14:03:26 2020 AEST    -            -

No locked files

=== ບັນຫາໃນການເຂົ້າເຖິງບ່ອນແບ່ງປັນ

ບາງສິ່ງທີ່ຄວນກວດເບິ່ງຖ້າເຈົ້າບໍ່ສາມາດເຂົ້າເຖິງບ່ອນແບ່ງປັນໄດ້.

  1. Be sure that the user exists as a system user as well as a Samba user + Find maria in the Samba database: + [source, console]

$ sudo pdbedit -L | grep maria

maria:1002:

+ Confirm that maria also exists as a system user.

+

$ cat /etc/passwd | grep maria

maria:x:1002:1002::/home/maria:/bin/bash

+ . Check if the shared directory and sub-directories have the correct SELinux context.

+

$ ls -dZ /home/share

unconfined_u:object_r:samba_share_t:s0 /home/share

+ . Check if the system user has access permission to the shared directory.

+

$ ls -ld /home/share

drwxrwx---. 2 root myfamily 4096 May 29 14:03 /home/share

+ In this case, the user should be in the myfamily group.

  1. Check in the configuration file /etc/samba/smb.conf that the user and group have access permission.

    [family]
            comment = Family Share
            path = /home/share
            writeable = yes
            browseable = yes
            public = yes
            valid users = @myfamily
            create mask = 0660
            directory mask = 0770
            force group = +myfamily

    In this case, the user should be in the myfamily group.

=== ບັນຫາໃນການຂຽນລົງໃນບ່ອນແບ່ງປັນ

  1. Check in the samba configuration file if the user/group has write permissions. + [source, conf]

[family]
        comment = Family Share
        path = /home/share
        writeable = yes
        browseable = yes
        public = yes
        valid users = @myfamily
        create mask = 0660
        directory mask = 0770
        force group = +myfamily

+ In this example, the user should be in the myfamily group.

  1. Check the share directory permissions.

    $ ls -ld /home/share
    
    drwxrwx---. 2 root myfamily 4096 May 29 14:03 /home/share

    This example assumes the user is part of the myfamily group which has read, write, and execute permissions for the folder.