我之我见:samba共享
目錄
1. Samba概述 1
1.1 Samba簡介 1
1.2 SMB/CIFS協議 1
1.3 Samba服務基礎 1
1.3.1主要軟件包 1
1.3.2系統服務腳本 1
1.4共享賬號控制 1
1.4.1共享訪問控制 1
1.4.2共享賬號管理 2
2.配置Samba服務器 2
2.1服務器端操作 3
2.1.1安裝samba服務器端程序 3
2.1.2建立samba認證用戶nick\hunter 3
2.1.3準備共享文件夾,確認相關權限 3
2.1.4修改samba.conf配置文件,添加documents共享設置,并啟用服務 4
2.2從客戶機訪問documents共享,并驗證訪問權限 4
2.2.1安裝samba客戶端程序 4
2.2.2查看服務器共享資源 4
2.2.3使用smbclient命令測試共享訪問 5
2.3使用mount命令掛載共享 6
2.3.1手動掛載 6
2.3.2為documents配置開機自動掛載 6
2.4通過別名賬戶訪問共享 6
2.4.1建立別名記錄文件 6
2.4.2啟用別名文件,smbd進程在運行,調整配置后會自動生效,無需重啟 6
2.4.3采用別名賬號訪問documents共享 7
2.4.4為documents共享添加客戶機地址限制 7
2.4.5測試客戶機訪問限制 7
2.5配置文件測試工具 7
3.出現的問題 8
3.1把該在服務器端的配置寫到了客戶端 8
3.2防火墻為開放139和445 8
3.3不看提示瞎回車 9
3.4selinux安全上下文 9
?
1.?Samba概述
1.1 Samba簡介
Samba是在Linux和UNIX系統上實現SMB協議的一個免費軟件,由服務器及客戶端程序構成。SMB(Server Messages Block,信息服務塊)是一種在局域網上共享文件和打印機的一種通信協議,它為局域網內的不同計算機之間提供文件及打印機等資源的共享服務。SMB協議是客戶機/服務器型協議,客戶機通過該協議可以訪問服務器上的共享文件系統、打印機及其他資源。通過設置“NetBIOS over TCP/IP”使得Samba不但能與局域網絡主機分享資源,還能與全世界的電腦分享資源。
1.2 SMB/CIFS協議
1.2.1 SMB
Server Message Block,服務消息塊SMB協議在局域網上用于服務器文件訪問和打印的協議
1.2.2 CIFS
Common Internet File System,通用網際文件系統CIFS 是一個新提出的協議,它使程序可以訪問遠程Internet計算機上的文件并要求此計算機提供服務。CIFS 使用客戶/服務器模式。客戶程序請求遠在服務器上的服務器程序為它提供服務。服務器獲得請求并返回響應。CIFS是公共的或開放的SMB協議版本,并由Microsoft使用。SMB協議在局域網上用于服務器文件訪問和打印的協議。像SMB協議一樣,CIFS在高層運行,而不像TCP/IP協議那樣運行在底層。CIFS可以看做是應用程序協議如文件傳輸協議和超文本傳輸協議的一個實現。
1.3 Samba服務基礎
1.3.1主要軟件包
服務器端:samba
客戶端:samba-client、cifs-utils
1.3.2系統服務腳本
/etc/init.d/smb
1.4共享賬號控制
1.4.1共享訪問控制
共享賬號
1:新建共享賬號時,必須有同名的系統賬戶
2:共享賬號的密碼是獨立的
3:訪問共享時以共享賬號/密碼登錄、權限取決于對應的系統賬號
賬號數據庫文件
默認采用TDB數據格式 ??????/var/lib/samba/private/passdb.tdb
1.4.2共享賬號管理
pdbedit 工具 ?
1)格式:pdbedit [選項] ?[共享賬戶名]
2)常用管理選項
-a:將制定的系統用戶添加為共享賬號
-L:查看共享賬號信息
-x:刪除指定的共享賬號
3)案例
[root@localhost ~]# useradd vina??????????????????//建同名系統用戶
[root@localhost ~]# pdbedit -a vina????????????????//添加為共享賬號
new password:?????????????????????????????????//設置密碼
retype new password:???????????????????????????//確認設置密碼
[root@localhost ~]# pdbedit -vL vina???????????????//查看vina賬號信息
?
[root@localhost ~]# smbpasswd vina?????????????//修改vina的smb密碼
New SMB password:???????????????????????????//輸入新密碼
Retype new SMB password:?????????????????????//再次輸入密碼
[root@localhost ~]# pdbedit -x vina???????????????//刪除vina用戶
[root@localhost ~]# pdbedit -vL vina??????????????//查看vina用戶信息
Username not found!?????????????
2.配置Samba服務器
將/share/zhang發布為documents共享
2.1服務器端操作
2.1.1安裝samba服務器端程序
[root@localhost ~]# yum -y install samba samba-client???
注意:配置各種網絡服務時,往往為了測試方便,會將某個應用的服務器端,客戶端一起給裝上,本次實驗也是如此,此外還需要安裝samba-common,一般這個系統已經安裝。
2.1.2建立samba認證用戶nick\hunter
[root@localhost ~]# useradd nick?????????????????????//添加系統用戶nick
[root@localhost ~]# useradd hunter???????????????????//添加系統用戶hunter
[root@localhost ~]# pdbedit -a nick????????????????????//為nick設置共享密碼
new password:
retype new password:
[root@localhost ~]# pdbedit -a hunter??????????????????//為hunter設置共享密碼
new password:
retype new password:
[root@localhost ~]# pdbedit –L????????????????????????//查看共享賬號列表
nick:502:
hunter:503:
注意:samba服務器使用獨立的共享賬號數據庫文件,其中的賬號名稱必須有與它同名的系統用戶相對應,以便主機對共享訪問的權限進行控制;但共享用戶的密碼額外設置,可以與系統用戶的密碼不一樣(甚至可不設密碼)
2.1.3準備共享文件夾,確認相關權限
[root@localhost ~]# setfacl -m user:hunter:rwx /share/zhang
[root@localhost ~]# getfacl /share/zhang/
getfacl: Removing leading '/' from absolute path names
# file: share/zhang/
# owner: root
# group: root
user::rwx
user:hunter:rwx
group::r-x
mask::rwx
other::r-x
注意:文件夾默認的權限為755,系統用戶nick、hunter對其有讀取權限,但是沒有寫入權限。若希望在共享訪問時hunter有權限寫入,可以通過setfacl命令做相應調整。
為方便客戶機下載測試,在/share/zhang下新建一個hello.txt文件
[root@localhost ~]# echo "hello,hello" > /share/zhang/hello.txt
[root@localhost ~]# cat /share/zhang/hello.txt
hello,hello
2.1.4修改samba.conf配置文件,添加documents共享設置,并啟用服務
[root@localhost ~]# vim /etc/samba/smb.conf
[documents]
????path = /share/zhang??????????????????????//指定共享目錄
????public = no?????????????????????????????//不對所有人開放
????read only = yes??????????????????????????//默認的權限為只讀
????valid users = nick,hunter???????????????????//指定合法用戶
write list = hunter????????????????????????//用戶hunter用戶可讀可寫
確保啟動smb服務程序,必要時設為開機后自動運行
[root@localhost ~]# service smb restart
[root@localhost ~]# chkconfig smb on
[root@localhost ~]# netstat -anput | grep smbd
tcp ???????0 ?????0 0.0.0.0:139 ????????????????0.0.0.0:* ??????????????????LISTEN ?????2631/smbd ??????????
tcp ???????0 ?????0 0.0.0.0:445 ????????????????0.0.0.0:* ??????????????????LISTEN ?????2631/smbd ??????????
tcp ???????0 ?????0 :::139 ?????????????????????:::* ???????????????????????LISTEN ?????2631/smbd ??????????
tcp ???????0 ?????0 :::445 ?????????????????????:::* ???????????????????????LISTEN ?????2631/smbd ?????????
2.2從客戶機訪問documents共享,并驗證訪問權限
2.2.1安裝samba客戶端程序
[root@xias ~]# yum -y install samba-client cifs-utils
2.2.2查看服務器共享資源
使用smbclient命令結合-L選項可以查看目標主機有哪些共享,此操作不涉及實際的文件資源,因此不需要密碼,當提示驗證密碼時回車即可。
[root@xias ~]# smbclient -L 192.168.1.132?????????//查看對方的共享資源列表
Enter root's password: ????????????????????????//無密碼,直接回車
Anonymous login successful
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.23-25.el6_7]
?
????????Sharename ??????Type ?????Comment
????????--------- ??????---- ?????-------
????????documents???????Disk ???????????????????//顯示對方提供了一個名為documents的磁盤共享目錄
????????IPC$ ???????????IPC ??????IPC Service (Samba Server Version 3.6.23-25.el6_7)
Anonymous login successful
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.23-25.el6_7]
?
????????Server ??????????????Comment
????????--------- ???????????-------
?
????????Workgroup ???????????Master
????????--------- ???????????-------
2.2.3使用smbclient命令測試共享訪問
[root@xias smbdir]# smbclient -U nick //192.168.11.135/documents
Enter nick's password:
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.23-25.el6_7]
smb: \>ls
??. ??????????????????????????????????D ???????0 ?Mon Apr 11 01:48:43 2016
??.. ?????????????????????????????????D ???????0 ?Mon Apr 11 01:46:34 2016
??hello.txt ??????????????????????????????????12 ?Mon Apr 11 01:48:43 2016
?
????????????????36825 blocks of size 524288. 18248 blocks available
smb: \> get hello.txt
getting file \hello.txt of size 12 as hello.txt (0.5 KiloBytes/sec) (average 0.5 KiloBytes/sec)
smb: \> !ls
a.txt ?hello.txt
smb: \> put a.txt
NT_STATUS_ACCESS_DENIED opening remote file \a.txt
smb: \> put a.txt
NT_STATUS_ACCESS_DENIED opening remote file \a.txt
smb: \> quit
[root@xias smbdir]# smbclient -Uhunter //192.168.11.135/documents
Enter hunter's password:
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.23-25.el6_7]
smb: \> ls
??. ??????????????????????????????????D ???????0 ?Mon Apr 11 01:48:43 2016
??.. ?????????????????????????????????D ???????0 ?Mon Apr 11 01:46:34 2016
??hello.txt ??????????????????????????????????12 ?Mon Apr 11 01:48:43 2016
?
????????????????36825 blocks of size 524288. 18248 blocks available
smb: \> get hello.txt
getting file \hello.txt of size 12 as hello.txt (0.3 KiloBytes/sec) (average 0.3 KiloBytes/sec)
smb: \> put a.txt
putting file a.txt as \a.txt (0.0 kb/s) (average 0.0 kb/s)
smb: \> quit
2.3使用mount命令掛載共享
2.3.1手動掛載
[root@xias smbdir]# mount -o username=nick,password=1234 //192.168.11.135/documents /mnt/smbdir/????????????????????//通過mount命令掛載documents共享,由于要求用戶
?????????????????????????????????認證,因此要結合-o選項指定用戶名,密碼才能掛上。
[root@xias smbdir]# mount | tail -1
//192.168.11.135/documents on /mnt/smbdir type cifs (rw)
[root@xias smbdir]# df -hT /mnt/smbdir/
Filesystem ????????????????Type ?Size ?Used Avail Use% Mounted on
//192.168.11.135/documents cifs ??18G ?8.2G ?9.0G ?48% /mnt/smbdir
[root@xias smbdir]# ls /mnt/smbdir/
a.?txt ?hello.txt
2.3.2為documents配置開機自動掛載
[root@xias smbdir]# tail -1 /etc/fstab ??????????//配置開機自動掛載
//192.168.11.135/documents /mnt/smbdir cifs defaults,username=nick,password=1234 0 0
[root@xias smbdir]# umount /mnt/smbdir/??????//卸載已掛載目錄
[root@xias smbdir]# mount | grep cifs??????????//確認已卸載
[root@xias smbdir]# mount /mnt/smbdir/???????//測試fstab配置
[root@xias smbdir]# mount | grep cifs??????????//確認掛載結果
//192.168.11.135/documents on /mnt/smbdir type cifs (rw)
2.4通過別名賬戶訪問共享
通過別名賬戶訪問共享,這是為了提升賬戶安全性,知道賬戶名,可以暴力破解嘗試一下,而不知道用戶名,沒法破解。
2.4.1建立別名記錄文件
Vim /etc/samba/smbusers ???????????????????//修改配置文件
# Unix_name = SMB_name1 SMB_name2????????//告訴你格式
root = administrator admin
nobody = guest pcguest smbguest??????????????//添加以幾行
hunter = hijack
?
2.4.2啟用別名文件,smbd進程在運行,調整配置后會自動生效,無需重啟
[global]
????????username map = /etc/samba/smbusers
?
?
2.4.3采用別名賬號訪問documents共享
[root@xias ~]# smbclient -U hijack //192.168.11.135/documents
Enter hijack's password:
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.23-25.el6_7]
smb: \>
?
2.4.4為documents共享添加客戶機地址限制
Vim /etc/samba/smb.conf
Hosts allow = 192.168.11.135 ???????????????//允許客戶機訪問的ip地址
?
2.4.5測試客戶機訪問限制
將ip地址改為其他ip后,作為測試機的客戶端不能訪問,出現以下提示
?
2.5配置文件測試工具
[root@localhost ~]# testparm
?
2.6常見配置
workgroup 工作組名稱
server string 服務器描述
security user|share安全級別,user為要去用戶驗證
comment對此共享目錄的說明文字
path共享目錄的實際位置,方括號的類似于別名
browseable是否可見,no為隱藏共享
public是否所有人可用,等效于guest ok
writeable 是否可寫,與read only相反
共享目錄的認證配置
設置共享訪問權限
valid users = 共享賬號
write list = 共享賬號
用戶名或者 @組名,多個賬號之間以逗號分隔
主機地址控制
hosts allow = ip或網段地址
hosts deny = ip或網段地址
3.出現的問題
3.1把該在服務器端的配置寫到了客戶端
問題:在準備測試別名賬號的時候出現以下錯誤,這是因為配置的時候把配置都寫到了客戶端,不是在服務器端做的配置。修改之后,正常
3.2防火墻為開放139和445
問題:在使用smbclient時老提示錯誤,但是能ping通如下圖
解決:這說明服務器是沒有down機的,然后查看進程也正常,最終定位防火墻問題,開放服務器的139和445端口后,成功。
需要在服務器端開放這兩個端口
-A INPUT -m state --state NEW -m tcp -p tcp --dport 139 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT
常見配置
?
3.3不看提示瞎回車
這個報錯是自己疏忽大意了,沒輸密碼就直接按回車,每次都是拒絕
這個報錯應該就是selinux的關系了,當時是執行了下邊第一條命令就可以了
3.4selinux安全上下文
如果是selinux的問題,設置安全上下文
setsebool?-P?samba_export_all_rw?on
1.?samba共享的文件必須用正確的selinux安全上下文標記。
chcon?-R?-t?samba_share_t?/tmp/abc
2.如果共享/home/abc,需要設置整個主目錄的安全上下文。
chcon?-R?-r?samba_share_t?/home
查看samba共享,提示一下
這是由于wuhaoshu僅僅只是系統用戶,而沒有將它加入到samba賬戶中來,換言之,用來登錄samba服務器的賬戶,首先是一個系統賬戶,同時還應是samba賬戶。
smbpasswd -a wuhaoshu
轉載于:https://blog.51cto.com/zhangdl/1881869
總結
以上是生活随笔為你收集整理的我之我见:samba共享的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL性能优化的21条最佳经验【转】
- 下一篇: Effective stl---笔记