一、Samba簡介
Samba是在Linux和UNIX系統上實現SMB協議的一個免費軟件,由服務器及客戶端程序構成。SMB(Server Messages Block,信息服務塊)是一種在局域網上共享文件和打印機的一種通信協議,它為局域網內的不同計算機之間提供文件及打印機等資源的共享服務。SMB協議 是客戶機/服務器型協議,客戶機通過該協議可以訪問服務器上的共享文件系統、打印機及其他資源。通過設置“NetBIOS over TCP/IP”使得Samba不但能與局域網絡主機分享資源,還能與全世界的電腦分享資源。
Samba最大的功能就是可以用於Linux與windows系統直接的文件共享和打印共享,Samba既可以用於windows與Linux之間的文件共享,也可以用於Linux與Linux之間的資源共享。
二、關閉SELinux和防火牆
a、臨時關閉(不用重啟機器):
# setenforce 0 ##設置SELinux 成為permissive模式 (關閉SELinux)
# setenforce 1 ##設置SELinux 成為enforcing模式 (開啟SELinux)
|
b、修改配置文件需要重啟機器:
將SELINUX=enforcing 改為SELINUX=disabled(需重啟機器)
c、可自己做策略開放相應端口,這里我直接關閉:
# systemctl status firewalld.service ##查看防火牆狀態
# systemctl stop firewalld.service ##關閉防火牆
|
防火牆,使用新的防火牆firewall添加就可以,比iptables更方便
# firewall-cmd --permanent --add-service=samba
# firewall-cmd --reload
# firewall-cmd --list-services
三、安裝Samba服務
①直接yum安裝
|
# yum install samba samba-client
|
②啟動並查看Samba
# systemctl start smb nmb ##注:NMB對客戶端提供NetBIOS服務
# systemctl status smb nmb
|
四、配置Samba服務
①配置
# vi /etc/samba/smb.conf
=================== Global Settings[全局選項] ==============================
[global]
#
workgroup = WORKGROUP
##設定Samba Server所要加入的工作組或域
server string = Samba Server Version %
v
##設定注釋,宏%v表示顯示Samba的版本號
netbios name = zhi
##設置Samba Server的NetBIOS名稱
map to guest = bad user
##開啟匿名訪問
# ----------------- Logging Options [日志選項]-----------------------------
log
file
=
/var/log/samba/log
.%m
##設置日志文件存儲位置及名稱,宏%m(主機名),表示對每台 訪問Samba Server的機器都單獨記錄一個日志文件
max log size = 50
##設置Samba Server日志文件的最大容量,單位為KB,0代表不限制
# ---------------- Standalone Server Options[獨立運行進程] ---------------------
security = share
##共享級別:共享目錄只能被授權的用戶訪問
passdb backend = tdbsam
##建立安全賬戶管理數據庫
# ----------------- Printing Options[打印選項]-----------------------------
# load printers = yes ##設置是否在啟動Samba時共享打印機
# cups options = raw ##通用unix打印選項
#================== Share Definitions[共享參數] ==============================
[homes]
##設置用戶宿主目錄
comment = Home Directories
##描述該共享:家目錄
browseable = no
##指定該共享是否可以瀏覽
writable =
yes
##指定該共享路徑是否可寫
[printers]
##設置打印機宿主目錄
comment = All Printers
##描述:所有打印機
path =
/var/spool/samba
browseable = no
guest ok = no
##指定該共享是否允許guest賬戶訪問
writable = no
printable =
yes
##指定是否可打印
[public]
comment = Public Stuff
##定義說明信息
path =
/home/samba
##共享目錄路徑
public =
yes
##指定該共享是否允許guest賬戶訪問
writable =
yes
printable = no
write list = +staff
##允許寫入該共享的用戶
|
注:
+ =====》 只在本機的密碼文件組中查找
& =====》只在nis服務中查找
@ =====》先通過NIS服務器查找,nis找不到再到本機查找
|
②測試語法
③建立共享目錄
# mkdir /home/samba
# cd /home/samba/
# touch samba.txt
|
五、測試
①在windows下輸入\\192.168.10.128訪問
②在Linux下輸入smbclient //192.168.10.128/public訪問
③配置只允許個別用戶訪問
a、配置smb.conf,添加如下
[
time
]
comment = Ashes Of Time
path =
/share/time
valid
users
= zhi
write list = zhi
printable = no
create mask = 0755
directory mask = 0755
|
b、建立共享目錄、添加相應用戶和組
# mkdir -p /share/time
# groupadd admin
# useradd zhi -s /sbin/nologin
# cd /share/time
# echo "12345" > abc.txt
# pdbedit -a -u zhi ##新建Samba用戶
|
# pdbedit -L ##查看Samba用戶列表
# systemctl restart smb nmb ##重啟Samba
|
注: 可使用命令smbpasswd -a + 用戶名為該用戶添加Samba密碼,但用戶必須是系統用戶。
c、驗證
windows客戶端驗證:
在"這台電腦"右鍵,"映射網絡驅動器"
提示輸入用戶名密碼
輸入后
並會在這台電腦上顯示
錯誤:輸入用戶名、密碼后彈出如下內容:
“指定的網絡文件夾目前是以其他用戶名和密碼進行映射的。要用其他用戶名和密碼進行連接,首先請斷開所有現有的連接到網絡共享的映射。”
解決:使用命令net use查看
然后使用命令net use * /delete結束所有連接,即可連接。
Linux客戶端驗證:
|
$ smbclient -L 192.168.10.128 -U zhi
|
|
$ smbclient
//192
.168.10.128
/time
-U zhi
|
問題:能下載不能上傳
解決:
|
# setfacl -m u:zhi:rwx /share/time/ ##賦予用戶寫權限
|
已經可以上傳了
Linux進行掛載
$
sudo
apt-get
install
cifs-utils
##網絡文件共享系統套件
$
sudo
mkdir
/mnt/samba
$
sudo
mount
-t cifs
//192
.168.10.128
/time
/mnt/samba
-o username=zhi
|
Linux實現自動掛載
$
sudo
vi
/etc/fstab
##添加如下
//192
.168.10.128
/time
/mnt/samba
cifs credentials=
/etc/samba/zhi
.
passwd
0 0
$
sudo
vi
/etc/samba/zhi
.
passwd
##防止密碼泄露,所以另建文件
username=zhi
password=abcdef
$
sudo
chmod
og=---
/etc/samba/zhi
.
passwd
##設置該密碼文件權限
$
sudo
umount
/mnt/samba
##卸載
$
sudo
mount
-a
##掛載fstab下的所有選項
$
ls
/mnt/samba/
|
附:Ubuntu下安裝配置Samba的wiki:
http://wiki.ubuntu.org.cn/Samba
注出現:你沒有權限訪問
修改SELinux設置
如果啟用了SELinux,做完了上面的配置還是只能以只讀方式訪問,需要修改SELinux的設置:
sudo chcon -t samba_share_t /share/time