兄弟連Linux(二十二)--Samba服務
1、Samba簡介
1.1 資料共享方法 Windows和Linux方法無法在兩個系統中通用
Windows中最常見的是“網路上的芳鄰”。網路上的芳鄰使用的檔案系統是CIFS(通用網際網路檔案系統)協議進行資料分享 無法跨路由、無法跨網段
Linux中最常用的是NFS服務
1.2 Samba的由來
在1991年Andrew tridgell為了實現Unix和Windows之間檔案共享,開發了SMB(Server Message Block,服務訊息塊)檔案系統
由於SMB無法註冊,就取名為Samba,熱情的桑巴舞
1.3 Samba與NetBIOS協議
IBM開發的NetBIOS協議是為了區域網內少數計算機進行通訊的協議。
Samba基於NetBIOS協議開發
所以可以和Windows通訊,但是隻能在區域網通訊
1.4 Samba主要應用
檔案共享
列印伺服器
Samba登入時身份驗證
可以進行Windows的主機名解析
1.5 常見檔案伺服器的比較
服務名稱 |
適用範圍 |
伺服器端 |
客戶端 |
侷限性 |
FTP |
內網和公網 |
Windows、Linux |
Windows、Linux |
無法直接在伺服器端修改資料 |
Samba |
內網 |
Windows、Linux |
Windows、Linux |
只能在內網使用 |
NFS |
內網和公網 |
Linux |
Linxu |
只能在Linux之間使用 |
2、Sanba安裝與埠
2.1 安裝
samba 主服務包
samba-client 客戶端
samba-common 通用工具
samba4-libs 庫
samba-winbind Windows域對映
samba-winbind-clients 域對映客戶端
2.2 samba的守護程序
smbd:提供對伺服器中檔案、列印資源的共享訪問139 445
nmbd:提供基於NetBIOS主機名稱的解析 137 138
2.3 啟動samba服務
$ service smb start
$ service nmb start
3、Samba相關檔案
3.1 常用檔案
/etc/samba/smb.conf 配置檔案
/etc/samba/lmhosts 對應的NetBIOS名與主機的IP的檔案,一般samba會自動搜尋(只對本級有效)
/etc/samba/smbpasswd samba密碼儲存檔案,預設不存在,如果需要,手工建立
/etc/samba/smbusers 使用者別名,用於適用於不同作業系統中使用者名稱習慣。需要配置檔案中“username map”選項支援
3.2 常用命令
testparm 檢測配置檔案是否正確
4、配置檔案詳解
4.1 配置檔案結構
Global Setting
[global] 全域性設定
Share Definitions
[homes] 使用者目錄共享設定
[printers] 印表機共享設定
[myshare] 自定義名稱的共享目錄設定
4.2 Global Setting
workgroup 所在工作組名稱
server string 伺服器描述資訊
log file 日誌檔案位置
max log size 日誌檔案的最大容量
security 安全級別,可用值如下
share 不需要密碼可以訪問
user 使用系統使用者,samba密碼登入
server 由其他伺服器提供認證
domain 由域控制器提供認證
4.3 Share Definitions
comment 描述資訊
path 共享的路徑
guest ok 允許所有人訪問,等同於public
read only 所有人只讀
writable 所有人可寫
write list 擁有寫許可權的使用者列表
browseable 是否 瀏覽 可見
valid users 指定可以訪問的使用者
4.4 常見的變數
%v samba的版本號
%s 任意使用者都可以登入
%m client端的NetBIOSD主機名
%L 伺服器端的NetBIOS主機名
%u 當前登陸的使用者名稱
%g 當前登入的使用者組名
5、Samba基本使用
5.1 share訪問許可權
5.1.1 share基本使用
share許可權訪問
客戶端的使用
user級別訪問
新增、刪除、檢視使用者
5.1.2 配置檔案修改
[global]
workgroup=MYGROUP
server string=Samba Server Lamp
log file=/var/log/samba/log.%m
max log size=50
security=share
passdb backend=tdbsam
Share Definitions
[movie]
comment=study material
path=/study
browseable=yes
writable=yes
guest ok=yes
5.1.3 建立共享目錄
$ mkdir /study 建立共性目錄
$ chown nobody /study/
5.1.4 測試配置檔案
$ testparm
5.1.5 重啟Samba服務
$ service smb restart
$ service nmb restart
5.2 客戶端的使用
5.2.1 Windwos客戶端訪問
網路上的芳鄰訪問
5.2.2 Linux客戶端訪問
$ smbclient -L 192.168.44.4 檢視主機的共享資源
$ smbclient //192.168.44.4/movie 訪問共性目錄
5.2.3 思考
為什麼我擁有writable=yes許可權,為什麼依然無法上傳資料
5.3 user級別訪問
5.3.1 配置檔案修改
[global]
workgroup=MYGROUP
server string=Samba Server Lamp
log file=/var/log/samba/log.%m
max log size=50
security=user
passdb backend=tdbsam
5.3.2 Share Definitions
[homes]
comment=Home Directories
browseable=no
writable=yes
[pub]
path=/public
browseable=no(後果是什麼)
writable=yes
writ list=sc
5.3.3 建立共享目錄與測試配置檔案
$ mkdir /public
$ testparm
5.3.4 重啟Samba服務
$ service smb restart
$ service nmb restart
5.3.5 新增Samba使用者
$ smbpasswd –a 系統使用者名稱 注意,要給使用者新增samba密碼,該使用者必須已經是系統使用者
FTP:使用系統使用者,系統密碼登入
Samba:使用系統使用者,Samba登入
5.3.4 許可權設定
如果要想訪問與上傳:
Linux系統許可權需要允許
Samba服務許可權也需要與允許
5.4 新增刪除檢視使用者
5.4.1 新增samba使用者
注意使用者必須已經是系統使用者,才能新增為samba使用者
$ pdbedit -a -u 系統使用者
或 $ smbpasswd –a 系統使用者名稱
5.4.2 刪除samba使用者
$ pdbedit -x -u 系統使用者名稱
或 $ smbpasswd –x 系統使用者
5.4.3 檢視samba使用者
$ pebedit -L
6、Samba訪問實驗
6.1 Samba共享目錄許可權
系統許可權要對共享目錄生效
Samba伺服器許可權也會對共享目錄聲響
在實際工作中,可能的共享目錄眾多、使用者眾多、許可權交叉。建議使用系統許可權控制共享目錄許可權,而不是使用samba許可權。
6.2 舉例
6.3 Samba共享目錄
[教學]
path=/share/jiaoxue
browseable=yes
writable=yes
[教務]
path=/share/jiaowu
browseable=yes
writable=yes
6.4 Linux系統控制權限 ACL許可權解決複雜許可權問題
教學的許可權
$ setfacl -m u:jx:rwx /share/jiaoxue
$ setfacl -m u:jw:rx /share/jiaoxue
$ setfacl -m u:xz:rx /share/jiaoxue
$ setfacl -m u:wl:rx /share/jiaoxue
教務的許可權
$ setfacl -m u:jw:rwx /share/jiaowu
$ setfacl -m u:jx:rwx /share/jiaowu
$ setfacl -m u:xz:rwx /share/jiaowu
$ setfacl -m u:tg:rwx /share/jiaowu
7、Samba其他使用
7.1 客戶端掛載到本地使用
$ mount –t cifs –o username=使用者 原路徑 目標路徑
例如
$ mount –t cifs –o username=user1 //192.168.44.3pub /test
自動掛載
$ vi /etc/fstab
//192.168.44.3/pub /test cifs defaults,username=user1,password=126 1 2
7.2 Samba別名
Linux的使用者如root、nobody在Window中可能對應的使用者是Administrator、guest使用者
Samba是跨平臺的,所以用別名讓他們可以通用
別名檔案
$ vi /etc/samba/smbusers
原名=別名(多個別名 空格隔開)
user1=lamp1
配置檔案中開啟別名
$ vi /etc/samba/smb.conf
加入
username map=/etc/samba/smbusers
重啟,就可以使用別名訪問samba了
7.3 總結
vsftp
內網 外網 伺服器:W L 客戶端:W L
使用者:系統使用者,系統密碼
缺點:不能直接在伺服器上修改檔案
Samba
內網使用 伺服器:W L 客戶端:W L
使用者:系統使用者,samba密碼
缺點:只能在內網使用