- Samba Server và SBM
- Sử dụng Samba Server trên CentOS 7
- Cài đặt Samba Server
- Cấu hình chia sẻ Public - kết nối
- Cấu hình chia sẻ bảo mật
- Cài đặt Client Samba
- Sử dụng trên Debian
- Sử dụng trên Ubuntu
- Samba Docker
Samba Server và SBM
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 ...
Sử dụng Samba Server trên CentOS 7
Cài đặt Samba Server
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
Chia sẻ một thư mục public
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
Thư mục chia sẻ được bảo mật
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.
Cài đặt Client Samba và sử dụng
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
Samba Server trên Debian
Đố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
Samba Server trên Ubuntu
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
Samba Server trên Docker Container
Bạn có thể chạy Samba Server trên Docker container, tham khảo ví dụ sau:
Sambar Docker