Danh mục : Linux | Về : Phần mềm Đăng vào 2024-09-06 09:55:51
Samba là một phần mềm nguồn mở (https://samba.org), nó cho phép chia sẻ file (tạo file server) với giao thức SMB (Server Message Block) giữa các nền tảng Linux, Windows, macOS. Như đã biết SMB là giao thức chia sẻ file qua mạng mặc định được sử dụng trong hệ điều hành Windows. Tài liệu đầy đủ về Samba xem tại Samba Document
Mặc định Samba Server sử dụng cổng 139
và 445
(giao thức TCP), nhớ cổng này để mở firewall hoặc ánh xạ cổng nếu sử dụng với Docker ...
yum update -y
yum install samba -y
systemctl enable smb.service
systemctl enable nmb.service
systemctl restart smb.service
systemctl restart nmb.service
CentOS 7 có thể cần mở firewall cho Samba
firewall-cmd --permanent --zone=public --add-service=samba firewall-cmd --reload
Ngoài sử dụng systemctl
để quản lý dịch vụ sbm samba, bạn cũng có thể sử dụng một số lệnh, như (Những lệnh này có thể có ích khi bạn chạy Samba trên Docker):
smbcontrol smbd shutdown # Tắt Samba
smbd # chạy Samba
Sau khi cài đặt, có file cấu hình mặc định tại /etc/samba/smb.conf
, ta sẽ lưu file cấu hình này lại và tạo file smb.conf mới cấu hình theo nhu cầu cụ thể như sau:
mv /etc/samba/smb.conf /etc/samba/smb.conf.bak # Sao lưu
vi /etc/samba/smb.conf
Nhập vào nội dung sau:
[global]
workgroup = WORKGROUP
server string = My Samba Server
netbios name = centos
security = user
map to guest = bad user
dns proxy = no
#=== BAT DAU THIET LAP CHIA SE FILE
[PublicShare]
path = /samba/publicshare
browsable = yes
writable = yes
guest ok = yes
read only = no
Lưu file này lại. Ở đây định nghĩa một khối chia sẻ file có tên là PublicShare
, nghĩa là sau này các máy client kết nối đến bằng địa chỉ IP/PublicShare
(Có thể thay địa chỉ IP bằng domain, tên máy mạng nội bộ). Khối này chia sẻ thư mục /samba/publicshare
, nên nếu chưa có cần tạo và thiết lập:
mkdir -p /samba/publicshare/
chmod -R 0755 /samba/publicshare/
chown -R nobody:nobody /samba/publicshare/
Sau thiết lập trên, khởi động lại Samba
# CentOS 7
systemctl restart smb.service
systemctl restart nmb.service
# NẾU KHÔNG DÙNG ĐƯỢC systemctl
smbcontrol smbd shutdown
smbd
Kết nối từ Windows đến Samba Server
Giả sử Server trên có địa chỉ IP là 192.168.1.5
, thì tạo chỉ việc Map ổ đĩa mạng trong Windows, như sau:
Trong File Explorer phải chuột chọn Map network drive ...
Như vậy đã có thể truy cập thư mục chia sẻ từ máy chạy CentOS qua mạng. Tương tự nếu trên macOS, kết nối đến thì từ Finder nhấn Command + K và điền địa chỉ smb://192.168.1.5/PublicShare
Hoặc từ Ubuntu, ở Files chọn Other locations rồi điền địa chỉ smb://192.168.1.5/PublicShare
vào mục connect to Server, xong bấm Connect
Nếu muốn tạo ra một thư mục chia sẻ qua Samba mà cần phải đăng nhập (cung cấp user / pass) thì làm tương như sau:
Đầu tiện tạo ra một group có tên là smbgroup
và một user thuộc group này tên là testuser
useradd testuser # tạo testuser
groupadd smbgroup # Tạo group smbgroup
usermod -a -G smbgroup testuser # Gán group cho user
smbpasswd -a testuser # Tạo password cho testuser trong Samba (Khi hỏi, Nhập 2 lần password để thiết lập - nhớ kỹ password này, nếu quyên chạy lại để reset)
Giả sử thư mục có thiết lập bảo mật là ở /samba/mydata
, hãy tạo thư mục và các thiết lập bằng lệnh:
mkdir -p /home/mydata/
chown -R testuser:smbgroup /home/mydata/
chmod -R 0770 /home/mydata/
chcon -t samba_share_t /home/mydata/
Mở lại file cấu hình
vi /etc/samba/smb.conf
Thêm vào khối mới, đặt tên là Mydata
như sau
[Mydata]
path = /home/mydata/
valid users = @smbgroup
guest ok = no
writable = yes
browsable = yes
Sau đó cần khởi động lại Samba (xem phần trên). Giờ khi ở các máy Client (Windows, macOS, Ubuntu) truy cập đến smb://192.168.1.5/Mydata
nó sẽ hỏi User/Password, cần điền đúng mới truy cập được.
Samba ngoài cung cấp tạo Server chia sẻ file SBM như trên, nó cũng cung cấp gói phần mềm có thể cài ở các máy Client ví dụ ở một máy CentOS khác để tạo chức năng kết nối đến server Samba ở trên.
Để cài đặt, ở Client CentOS gõ lệnh:
yum update -y yum -y install samba-client cifs-utils samba-common -y
Giờ ta sẽ mount ổ đĩa Server ở địa chỉ //192.168.1.5/Mydata
vào máy Client
mkdir -p /mnt/mydata # Tạo thư mục để Mount
groupadd --gid 2000 smbgroup # Thêm một Group giống tên group trên Server
usermod -aG smbgroup root # Gán group cho user (login) ví dụ root
Kết nối thử với testuser (user do server cung cấp)
smbclient -L //192.168.1.5/Mydata -U testusers
Nếu sau khi nhập Password thành công thì dùng lệnh sau để Mount ổ đĩa
mount -t cifs -o user=testuser,password=123456 //192.168.1.5/Mydata /mnt/mydata
Như vậy từ giờ ở máy Client truy cập vào /mnt/mydata
chính là đang truy cập ổ mạng //192.168.1.5/Mydata
Nếu Client chạy bằng Docker, để mount được khi chạy container cần cho tham số --cap-add SYS_ADMIN --cap-add DAC_READ_SEARCH
Đối với Debian cấu hình và sử dụng tương tự CentOS, sau đây là lệnh cài đặt, bạn có thể áp dụng với Container chạy Debian (từ Image debian:stretch)
apt-get update -y apt-get install samba vim -y
Tương tự CentOS, bạn có thể
smbcontrol smbd shutdown # Tắt Samba
smbd # chạy Samba
Bạn cũng có thể chạy, để theo dõi lỗi nếu có smbd -FS -d 2 < /dev/null
Chú ý, nếu muốn thực hành trên Container có thể tạo nó
docker run -it --rm -v $(pwd):/data/ -p 139:139 -p 445:445 debian:stretch
Bạn cũng có thể thực hành trên Ubuntu Container
docker run -it --rm -v $(pwd):/data/ -p 139:139 -p 445:445 ubuntu
Gõ các lệnh để cài đặt:
apt-get update -y apt-get install samba vim -y
Sử dụng và cấu hình tương tự trên CentOS, Debian