本節索引:
一、SAMBA介紹
二、SAMBA服務配置
三、SAMBA用戶管理與掛載
四、實驗:Linux作為SAMBA客戶端訪問Windows共享文件
五、實驗:Linux作為SAMBA服務器端
六、實驗:指定共享目錄
七、實驗:實現不同用戶目錄權限不同
八、實驗:實現多用戶掛載(RHCE)
一、SAMBA介紹
Samba是在Linux和UNIX系統上實現SMB協議的一個免費軟件,由服務器及客戶端程序構成。
SMB:Server Messages Block,信息服務塊,是一種在局域網上共享文件和打印機的一種
通信協議,它為局域網內的不同計算機之間提供文件及打印機等資源的共享服務。
CIFS:common internet file system,微軟基于SMB發布,CIFS是公共的或開放的SMB協議
版本,并由Microsoft使用。像SMB協議一樣,CIFS在高層運行,而不像TCP/IP協議那樣運
行在底層。CIFS可以看做是應用程序協議如文件傳輸協議和超文本傳輸協議的一個實現。
SAMBA的功能:
共享文件和打印,實現在線編輯
實現登錄SAMBA用戶的身份認證
可以進行NetBIOS名稱解析
外圍設備共享
計算機網絡管理模式:
工作組WORKGROUP:計算機對等關系,帳號信息各自管理
域DOMAIN: C/S結構,帳號信息集中管理,DC,AD
相關包:
Samba ? ? ? ? ? ? ? ? ? ? ? ? 提供smb服務
Samba-client ? ? ? ? ? ? ?客戶端軟件
samba-common ? ? ? ? 通用軟件
cifs-utils smb ? ? ? ? ? ? ?客戶端工具
samba-winbind ? ? ? ? ?和AD相關
相關服務進程:
smbd 提供smb(cifs)服務 TCP:139,445
nmbd NetBIOS名稱解析 ? ? ?UDP:137,138
主配置文件:
/etc/samba/smb.conf
幫助參看:man smb.conf
語法檢查: testparm [-v] [/etc/samba/smb.conf]
客戶端工具:smbclient,mount.cifs
二、SAMBA服務配置
smb.conf繼承了.ini文件的格式,用[ ]分成不同的部分
全局設置:
[global] ? ? ? ? ? ? 服務器通用或全局設置的部分
特定共享設置:
[homes] ? ? ? ? ? 用戶的家目錄共享
[printers] ?????? 定義打印機資源和服務
[sharename] ?自定義的共享目錄配置
其中:#和;開頭的語句為注釋,大小寫不敏感
宏定義:
%m 客戶端主機的NetBIOS名
%M 客戶端主機的FQDN
%H 當前用戶家目錄路徑
%U 當前用戶用戶名
%g 當前用戶所屬組
%h samba服務器的主機名
%L samba服務器的NetBIOS名
%I 客戶端主機的IP
%T 當前日期和時間
%S 可登錄的用戶名
workgroup ? ? ? ? ? ? ?指定工作組名稱
server string ? ? ? ? ?主機注釋信息
netbios name ??????? 指定NetBIOS名
interfaces ? ? ? ? ? ? ? 指定服務偵聽接口和IP
hosts allow ? ? ? ? ? ? 可用“,” ,空格,或tab分隔,默認允許所有主機訪問,也可在每個共享獨立配置,
如在[global]設置,將應用并覆蓋所有共享設置
IPv4 network/prefix:172.25.0.0/24 IPv4前綴: 172.25.0.
IPv4 network/netmask:172.25.0.0/255.255.255.0
主機名:desktop.example.com
以example.com后綴的主機名:.example.com
示例:
hosts allow = 172.25.
hosts allow = 172.25. .example.com
hosts deny ???? 拒絕指定主機訪問
config file=/etc/samba/conf.d/%U ???? 用戶獨立的配置文件
Security三種認證方式:
??? share:匿名(CentOS7不再支持)
??? user:samba用戶(采有linux用戶,samba的獨立口令)
??? domain:使用DC(DOMAIN CONTROLLER)認證
passdb backend = tdbsam ???????????? 密碼數據庫格式
配置samba日志
默認不記錄
以IP方式記錄日志
log file = /var/log/samba/log.%I
log level = 2
日志文件達到50K,將輪循rotate,單位KB
max log size=50
配置目錄共享
[共享名稱] ??????????? 遠程網絡看到的共享名稱
comment ? ? ? ? ? ? ? ? 注釋信息
path ???????????????????????? 所共享的目錄路徑
public ????????????????????? 能否被guest訪問的共享,默認no,和guest ok 類似
browsable ??????? ? ? ? ?是否允許所有用戶瀏覽此共享,默認為yes,no為隱藏
writable=yes ????????? 可以被所有用戶讀寫,默認為no
read only=no ?? ? ? ? ?和writable=yes等價,如與以上設置沖突,放在后面的設置生
效,默認只讀
write list ? ? ? ? ? ? ? ? ?三種形式:用戶,@組名,+組名,用,分隔如writable=no,列
表中用戶或組可讀寫,不在列表中用戶只讀
valid users ? ? ? ? ? ? ?特定用戶才能訪問該共享,如為空,將允許所有用戶,用戶名
之間用空格分隔
備注:每個共享目錄應該有獨立的[ ]部分
三、SMABA用戶管理與掛載
管理samba用戶
實現samba用戶
包:samba-common-tools
工具:smbpasswd pdbedit
samba用戶須是Linux用戶,建議使用/sbin/nologin
添加samba用戶
smbpasswd -a <user>
pdbedit -a -u <user>
修改用戶密碼
smbpasswd <user>
刪除用戶和密碼:
smbpasswd –x <user>
pdbedit –x –u <user>
查看samba用戶列表:
/var/lib/samba/private/passdb.tdb
pdbedit –L –v
查看samba服務器狀態
smbstatus
掛載CIFS文件系統
手動掛載
mount -t cifs -o user=wang,password=wxlinux //server//shared
/mnt/smb
開機自動掛載
cat /etc/fstab 可以用文件代替用戶名和密碼的輸入
//server/homes /mnt cifs credentials=/etc/smb.txt 0 0
cat /etc/smb.txt
username=wang
password=password
chmod 600 /etc/smb.txt
四、實驗:將Linux作為SAMBA客戶端訪問Windows共享文件
前期準備:
Window系統版本為?win10
Linux系統版本為?CentOS 7.4
Windows系統中共享目錄如下:
在Windows系統中創建一個test用戶(必須以管理員身份創建)
Linux系統:
安裝samba-client包
yum install samba-client
查看Windows系統上的共資源
smbclient -L 192.168.30.1 -U test%123
連接Windows系統上的共享資源
smbclient //192.168.30.1/lamp -U test%123
掛載windows共享目錄到/mnt/win目錄下
mkdir /mnt/win
mount -o username=test,password=123,vers=3.0? //192.168.30.1/lamp /mnt/win
也可寫入/etc/fstab文件中永久掛載,為了防止明文用戶名密碼,可用下面寫法,將用戶和賬號保存在一個文件中
vim /etc/user.txt
username=test
password=123
五、實驗:Linux系統作為SAMBA服務器端
在LINUX系統中創建SAMBA賬號需要先創建LINUX賬號在使用smbpasswd命令轉換為samba賬號
創建linux賬號
useradd -s /sbin/nologin smb1
useradd -s /sbin/nologin smb2
useradd -s /sbin/nologin smb3
將linux賬號變為samba賬號
smbpasswd -a smb1
smbpasswd -a smb2
smbpasswd -a smb3
刪除samba賬號可使用
smbpasswd –x
修改samba賬號密碼:
smbpasswd user
查看已有的samba賬號:
pdbedit -L
開啟smb服務
systemctl start smb
切換客戶端進行測試:
smbclient -L 192.168.30.10 -U smb1%centos
默認以samba用戶的家目錄作為共享目錄
也可在Window作為訪問端連接SAMBA服務器
六、實驗:SAMBA共享指定目錄
添加配置
vim etc/samba/sam.conf
[share]
comment=smba share dir
path=/data/tools
read only=no??????? ? ? 等價于writeabe=yes
public=no???? ? ? ? ? ? ? ?是否允許匿名訪問,默認為NO
valid users=smb1 smb2? 指定有效用戶,其他用戶不可訪問
#valid users=+staff ?也可指定有效組,用戶多時建議用組管理
#wirte list???????????????? 指定列表中用戶可寫,需配合read only=yes
smbclient //192.168.30.10/share -U smb1%centos
smb3用戶由于沒有授權,所有拒絕登錄
七、實驗:針對不同的用戶設置不同的共享目錄和權限
SAMBA服務器端:
目前已存在的SAMBA用戶
配置文件中加上此行,指定配置目錄
vim etc/samba/sam.conf
[global]
config file = /etc/samba/conf.d/%U
創建SAMBA共享目錄和測試文件
mkdir /data/smb2
mkdir /data/smb3
touch /data/smb2/test2
touch /data/smb3/test3
創建SAMBA配置目錄
mkdir /etc/samba/conf.d/
cd /etc/samba/conf.d/
vim smb2
[share]
path=/data/smb2
writeable=yes
vim smb3
[share]
path=/data/smb3
給data目錄添加777權限
chmod -R 777 /data/
重啟smb服務
systemct restart smb
測試:
使用samb2用戶登錄,共享目錄為/data/smb2
smbclient //192.168.30.7/share -U smb2%centos
使用samb2用戶登錄,共享目錄為/data/smb3
smbclient //192.168.30.7/share -U smb3%centos
八、實驗:實現多用戶SAMBA掛載(僅CentOS 7支持,RHCE)
SAMBA服務器端:
目前已有四個samba賬號,smb1,smb2,smb3,smb4
vim /etc/samba/
[share]
??????? comment = samba share dir
??????? path = /data/tools
??????? read only = yes
??????? valid users = smb1 smb2 smb3 smbshare
??????? write list = smb1 smb3
添加/data/tools目錄讀寫權限
chmod 777 /data/tools
重啟smb服務
systemctl restart smb
客戶端:
必須建立同名用戶,UID可以不一致
useradd smb1
useradd smb2
useradd smb3
用smbshare用戶掛載share目錄
mount -o username=smbshare,password=centos,multiuser //192.168.30.10/share /mnt
若要永久掛載,可修改/etc/fstab目錄
備注:SELinux環境下還需:
chcon -R -t samba_share_t /data/to
測試:
su – smb1
驗證SAMBA服務器是否有同名用戶
cifscreds add 192.168.30.7
創建f1文件所有者為f1
su – smb2
由于smb2不在wirte_list表中,不具有讀權限,登錄失敗
su – smb3
cifscreds add 192.168.30.7
創建f3文件所有者為smb3
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/101980