วิธีการติดตั้ง Samba บน Ubuntu เพื่อการแชร์ไฟล์บน Windows
Samba เป็นซอฟต์แวร์ฟรี/โอเพ่นซอร์สและใช้กันอย่างแพร่หลายสำหรับการแชร์ไฟล์และบริการการพิมพ์ระหว่างระบบที่คล้าย Unix รวมถึงโฮสต์ Linux และ Windows บนเครือข่ายเดียวกัน
ในคู่มือนี้ เราจะแสดงวิธีการตั้งค่า Samba4 สำหรับการแชร์ไฟล์พื้นฐานระหว่างระบบ Ubuntu และเครื่อง Windows เราจะกล่าวถึงสองสถานการณ์ที่เป็นไปได้: ไม่ระบุชื่อ (ไม่ปลอดภัย) และ การแบ่งปันไฟล์ที่ปลอดภัย
การอ่านที่แนะนำ: วิธีติดตั้ง Samba4 บน CentOS/RHEL 7 สำหรับการแชร์ไฟล์บน Windows
โปรดทราบว่าตั้งแต่เวอร์ชัน 4.0 เป็นต้นไป Samba สามารถใช้เป็นตัวควบคุมโดเมน Active Directory (AD) (DC) ได้ เราได้จัดซีรีส์พิเศษสำหรับการตั้งค่า Samba4 Active Directory Domain Controller ซึ่งประกอบด้วยหัวข้อสำคัญภายใต้ Ubuntu, CentOS และ Windows
- การตั้งค่าตัวควบคุมโดเมน Samba4 Active Directory
ติดตั้งและกำหนดค่า Samba ใน Ubuntu
เซิร์ฟเวอร์ Samba สามารถติดตั้งได้จากที่เก็บเริ่มต้นของ Ubuntu โดยใช้เครื่องมือ apt package manager ดังที่แสดง
sudo apt install samba samba-common python-dnspython
เมื่อติดตั้งเซิร์ฟเวอร์ samba แล้ว ตอนนี้ก็ถึงเวลากำหนดค่าเซิร์ฟเวอร์ samba เป็น: ไม่เปิดเผยตัวตนที่ไม่ปลอดภัย และ การแบ่งปันไฟล์ที่ปลอดภัย
สำหรับสิ่งนี้ เราจำเป็นต้องแก้ไขไฟล์การกำหนดค่า Samba หลัก /etc/samba/smb.conf (ซึ่งอธิบายคำสั่งการกำหนดค่าต่างๆ)
ขั้นแรกให้สำรองไฟล์การกำหนดค่า samba ดั้งเดิมดังนี้
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.orig
หลังจากนั้น เราจะดำเนินการกำหนดค่า samba สำหรับบริการ ไม่ระบุชื่อ และ การแชร์ไฟล์ที่ปลอดภัย ตามที่อธิบายไว้ด้านล่าง
ข้อสำคัญ: ก่อนที่จะดำเนินการใดๆ เพิ่มเติม ตรวจสอบให้แน่ใจว่าเครื่อง Windows อยู่ใน กลุ่มงาน เดียวกันซึ่งจะได้รับการกำหนดค่าบนเซิร์ฟเวอร์ Ubuntu
ตรวจสอบการตั้งค่ากลุ่มงานเครื่อง Windows
เข้าสู่ระบบเครื่อง Windows ของคุณ คลิกขวาที่ “พีซีเครื่องนี้ ” หรือ “คอมพิวเตอร์ของฉัน ” → คุณสมบัติ → การตั้งค่าระบบขั้นสูง → ชื่อคอมพิวเตอร์ เพื่อตรวจสอบเวิร์กกรุ๊ป
หรือเปิดพรอมต์คำสั่งและดูโดยใช้คำสั่งด้านล่างแล้วค้นหา “โดเมนเวิร์กสเตชัน ”
>net config workstation
เมื่อคุณรู้จักเวิร์กกรุ๊ป Windows ของคุณแล้ว ก็ถึงเวลาดำเนินการต่อและกำหนดค่าเซิร์ฟเวอร์ samba สำหรับการแชร์ไฟล์
การแชร์ไฟล์ Samba แบบไม่เปิดเผยตัวตน
ขั้นแรกให้เริ่มต้นด้วยการสร้างไดเร็กทอรี samba ที่ใช้ร่วมกันซึ่งไฟล์จะถูกจัดเก็บ
sudo mkdir -p /srv/samba/anonymous_shares
จากนั้นตั้งค่าการอนุญาตที่เหมาะสมในไดเร็กทอรี
sudo chmod -R 0775 /srv/samba/anonymous_shares
sudo chown -R nobody:nogroup /srv/samba/anonymous_shares
ตอนนี้เปิดไฟล์กำหนดค่า
sudo vi /etc/samba/smb.conf
OR
sudo nano /etc/samba/smb.conf
แก้ไขหรือแก้ไขการตั้งค่าคำสั่งถัดไปตามที่อธิบายไว้ด้านล่าง
global]
workgroup = WORKGROUP
netbios name = ubuntu
security = user
[Anonymous]
comment = Anonymous File Server Share
path = /srv/samba/anonymous_shares
browsable =yes
writable = yes
guest ok = yes
read only = no
force user = nobody
ตอนนี้ตรวจสอบการตั้งค่าแซมบ้าปัจจุบันโดยรันคำสั่งด้านล่าง
testparm
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
WARNING: The "syslog" option is deprecated
Processing section "[printers]"
Processing section "[print$]"
Processing section "[Shares]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
Global parameters
[global]
netbios name = UBUNTU
server string = %h server (Samba, Ubuntu)
server role = standalone server
map to guest = Bad User
obey pam restrictions = Yes
pam password change = Yes
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
unix password sync = Yes
syslog = 0
log file = /var/log/samba/log.%m
max log size = 1000
dns proxy = No
usershare allow guests = Yes
panic action = /usr/share/samba/panic-action %d
idmap config * : backend = tdb
[printers]
comment = All Printers
path = /var/spool/samba
create mask = 0700
printable = Yes
[print$]
comment = Printer Drivers
path = /var/lib/samba/printers
browseable = No
[Anonymous]
comment = Anonymous File Server Share
path = /srv/samba/anonymous_shares
force user = nobody
read only = No
guest ok = Yes
จากนั้นรีสตาร์ทบริการ Samba เพื่อให้มีผลกับการเปลี่ยนแปลงข้างต้น
sudo systemctl restart smbd [Systemd]
sudo service smbd restart [Sys V]
ทดสอบการแชร์ไฟล์ Samba แบบไม่เปิดเผยตัวตน
ไปที่เครื่อง Windows และเปิด “เครือข่าย ” จากหน้าต่าง Windows Explorer คลิกที่โฮสต์ Ubuntu (TECMINT สำหรับกรณีของเรา) หรือลองเข้าถึงเซิร์ฟเวอร์ samba โดยใช้ที่อยู่ IP
\2.168.43.168
หมายเหตุ: ใช้คำสั่ง ifconfig เพื่อรับที่อยู่ IP ของเซิร์ฟเวอร์ Ubuntu
จากนั้นเปิดไดเร็กทอรี Anonymous และลองเพิ่มไฟล์ในไดเร็กทอรีเพื่อแชร์กับผู้ใช้รายอื่น
การแชร์ไฟล์ Samba ที่ปลอดภัย
หากต้องการใช้รหัสผ่านป้องกันการแชร์ Samba คุณต้องสร้างกลุ่ม “smbgrp” และตั้งรหัสผ่านสำหรับผู้ใช้แต่ละคน ในตัวอย่างนี้ ฉันใช้ aaronkilik เป็นผู้ใช้และรหัสผ่านเป็น “tecmint“
sudo addgroup smbgrp
sudo usermod aaronkilik -aG smbgrp
sudo smbpasswd -a aaronkilik
หมายเหตุ: โหมดความปลอดภัยของ samba: security=user กำหนดให้ไคลเอนต์ป้อนชื่อผู้ใช้และรหัสผ่านเพื่อเชื่อมต่อกับการแชร์
บัญชีผู้ใช้ Samba แยกจากบัญชีระบบ อย่างไรก็ตาม คุณสามารถเลือกติดตั้งแพ็คเกจ libpam-winbind ซึ่งใช้ในการซิงค์ผู้ใช้ระบบและรหัสผ่านกับฐานข้อมูลผู้ใช้ samba
sudo apt install libpam-winbind
จากนั้นสร้างไดเร็กทอรีที่ปลอดภัยที่จะเก็บไฟล์ที่แชร์ไว้
sudo mkdir -p /srv/samba/secure_shares
จากนั้น ตั้งค่าการอนุญาตที่เหมาะสมในไดเร็กทอรี
sudo chmod -R 0770 /srv/samba/secure_shares
sudo chown -R root:smbgrp /srv/samba/secure_shares
ตอนนี้เปิดไฟล์กำหนดค่า
sudo vi /etc/samba/smb.conf
OR
sudo nano /etc/samba/smb.conf
แก้ไขหรือแก้ไขการตั้งค่าคำสั่งถัดไปตามที่อธิบายไว้ด้านล่าง
[Secure]
comment = Secure File Server Share
path = /srv/samba/secure_shares
valid users = @smbgrp
guest ok = no
writable = yes
browsable = yes
เช่นเดียวกับเมื่อก่อน ให้รันคำสั่งนี้เพื่อดูการตั้งค่าแซมบ้าปัจจุบันของคุณ
testparm
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
WARNING: The "syslog" option is deprecated
Processing section "[printers]"
Processing section "[print$]"
Processing section "[Shares]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
Global parameters
[global]
netbios name = UBUNTU
server string = %h server (Samba, Ubuntu)
server role = standalone server
map to guest = Bad User
obey pam restrictions = Yes
pam password change = Yes
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
unix password sync = Yes
syslog = 0
log file = /var/log/samba/log.%m
max log size = 1000
dns proxy = No
usershare allow guests = Yes
panic action = /usr/share/samba/panic-action %d
idmap config * : backend = tdb
[printers]
comment = All Printers
path = /var/spool/samba
create mask = 0700
printable = Yes
[print$]
comment = Printer Drivers
path = /var/lib/samba/printers
browseable = No
[Anonymous]
comment = Anonymous File Server Share
path = /srv/samba/anonymous_shares
force user = nobody
read only = No
guest ok = Yes
[Secure]
comment = Secure File Server Share
path = /srv/samba/secure_shares
valid users = @smbgrp
read only = No
เมื่อคุณเสร็จสิ้นการกำหนดค่าข้างต้นแล้ว ให้เริ่มบริการ Samba ใหม่เพื่อใช้การเปลี่ยนแปลง
sudo systemctl restart smbd [Systemd]
sudo service smbd restart [Sys V]
การทดสอบการแชร์ไฟล์ Samba ที่ปลอดภัย
เช่นเคยในเครื่อง Windows และเปิด “เครือข่าย ” จากหน้าต่าง Windows Explorer คลิกที่โฮสต์ Ubuntu (TECMINT สำหรับกรณีของเรา) คุณอาจได้รับข้อผิดพลาดด้านล่าง หากไม่ดำเนินการขั้นตอนต่อไป
ลองเข้าถึงเซิร์ฟเวอร์โดยใช้ที่อยู่ IP เช่น \\192.168.43.168
แบบนี้ จากนั้นป้อนข้อมูลประจำตัว (ชื่อผู้ใช้และรหัสผ่าน) สำหรับผู้ใช้ aaronkilik และคลิก ตกลง
ตอนนี้คุณจะเห็นไดเร็กทอรีที่แชร์ทั้งหมด คลิก ปลอดภัย เพื่อเปิด
คุณสามารถแบ่งปันไฟล์บางไฟล์กับผู้ใช้ที่ได้รับอนุญาตรายอื่นบนเครือข่ายได้อย่างปลอดภัยโดยวางไฟล์เหล่านั้นลงในไดเร็กทอรีนี้
เปิดใช้งาน Samba ในไฟร์วอลล์ UFW ใน Ubuntu
หากคุณเปิดใช้งาน/ใช้งานไฟร์วอลล์ UFW บนระบบของคุณ คุณต้องเพิ่มกฎเพื่ออนุญาตให้ Samba ผ่านไฟร์วอลล์ของคุณได้
เพื่อทดสอบสิ่งนี้ เราได้ใช้รูปแบบเครือข่าย 192.168.43.0 เรียกใช้คำสั่งด้านล่างเพื่อระบุที่อยู่เครือข่ายของคุณ
sudo ufw allow proto udp to any port 137 from 192.168.43.0/24
sudo ufw allow proto udp to any port 138 from 192.168.43.0/24
sudo ufw allow proto tcp to any port 139 from 192.168.43.0/24
sudo ufw allow proto tcp to any port 445 from 192.168.43.0/24
คุณยังสามารถตรวจสอบบทความที่เป็นประโยชน์เกี่ยวกับการแชร์ไฟล์ Samba บนเครือข่ายได้
- การตั้งค่า Samba4 Active Directory Domain Controller- ตอนที่ 1 ถึง 14
- วิธีเมานท์/ถอนเมานต์ระบบไฟล์ Local และ Network (Samba & NFS) ใน Linux
- การใช้ ACL (รายการควบคุมการเข้าถึง) และการติดตั้ง Samba/NFS Shares
- วิธีแก้ไขช่องโหว่ SambaCry (CVE-2017-7494) ในระบบ Linux
นั่นคือทั้งหมด! ในคู่มือนี้ เราได้แสดงวิธีการตั้งค่า Samba4 สำหรับการแชร์ไฟล์แบบไม่เปิดเผยตัวตนและปลอดภัยระหว่างเครื่อง Ubuntu และ Windows ใช้แบบฟอร์มคำติชมด้านล่างเพื่อแบ่งปันความคิดเห็นกับเรา