##########################################################linux
閒扯Sambaios
Windows做爲服務端web
Linux做爲服務端windows
################################################################bash
閒扯Sambasocket
最近幾個月看的東西有點多,事也多,一直抽不開身寫博文。總結的東西卻是很多,但本身還未能徹底消耗造成完善的體系,因此拿不出手的東西寫了是必定會誤導博友的,正好最近用到samba就順便總結下基礎服務。感受本身欠下好多博文,深刻淺出的博文確實很差寫,只能慢慢來了,看成鍛鍊本身。ide
windows和Linux之間經過FTP共享文件,不方便用戶使用,因而samba就誕生了。啥是samba?samba是幹啥的呢?簡單的來講samba是CIFS/SMB協議的一種實現,CIFS/SMB協議實現了跨平臺文件共享,windows的網上鄰居就是使用CIFS協議,所以Samba能夠實現linux和windows之間的文件共享。須要特別說明的是客戶端訪問samba服務的用戶帳戶必定是系統用戶,而密碼則是由samba本身維護的,接下來經過介紹linux和windows之間共享文件的模式來進一步瞭解samba是什麼。工具
Windows做爲服務端測試
這種工做模型下,linux將做爲客戶端訪問windows,因此linux須要安裝客戶端軟件,而且須要訪問憑證,文件的最終訪問權限爲共享權限和文件系統權限兩者的交集,首先咱們看看windows做爲服務端是如何共享出資源的。ui
建立test用戶
添加文件系統權限
添加共享權限
linux做爲客戶端須要安裝客戶端工具
yum install samba-client -y
列出服務共享的目錄列表
smbclient -L 192.168.1.201 -U test
進入共享目錄進行上傳、下載等操做
smbclient //192.168.1.201/testdir -U test
掛載共享目錄至本地
mkdir /winfs mount -t cifs -o username=test,password=123 //192.168.1.201/testdir /winfs touch /winfs/test
Linux做爲服務端
linux做爲服務端須要安裝samba主包,samba還支持web-gui化管理工具swat,samba的選項有不少,興趣的朋友能夠自行研究,這裏以實際案例來演示samba的在工做中是如何使用的。
安裝samba
yum install -y samba setenforce 0 #samba會受到selinux的影響
啓動服務查看監聽端口
for i in smb nmb; do service $i restart; done netstat -tunlp smbd負責文件共享 port 445 nmbd負責NetBIOS port 137 138 139
實戰需求:任何用戶訪問samba服務必須通過認證,每一個用戶有本身的目錄而且只有本身能夠看到,public爲公共目錄任何人均可以增刪改,tom,lucy屬於ios部門,ios部門有本身專屬的同名目錄而且只有所屬職員有增刪改權限;bob,jim屬於web部門,web部門有專屬的同名目錄而且只有所屬職員有增刪改權限。
建立公共目錄
mkdir -pv /office/public mkdir -pv /office/ios mkdir -pv /office/web mkdir -pv /office/users
批量建立用戶、用戶目錄、添加用戶到指定組、修改用戶目錄權限腳本(若是在想在/home下就很簡單,直接建立用戶就能夠,不用這麼麻煩,這裏只是爲了更清楚的印證文件最終權限爲共享權限和文件系統權限兩者的交集)
#!/bin/bash # users='bob jim' path='/office/users/' group='web' groupadd $group &>/dev/null for i in $users; do useradd -g $group -r $i &>/dev/null && echo "Add $i succeed in $group ." mkdir -pv $path$i &> /dev/null && echo "mkdir $path$i succeed ." setfacl -m u:$i:rwx $path$i && echo "$path$i permission ok" done
爲ios、web目錄設置權限,根據本身的須要作出設置
setfacl -m g:ios:rwx /office/ios #爲目錄定義用戶權限 setfacl -m g:web:rwx /office/web #爲目錄定義組權限 chmod o-r /office/ios #ios組之外的用戶沒法進入ios目錄 chmod o-r /office/web #web組之外的用戶沒法進入web目錄 chmod o+r /office/ios #ios組之外的用戶只能查看,沒法刪、改 chmod o+r /office/web #web組之外的用戶只能查看,沒法刪、改
主配置文件/etc/samba/smb.conf
[global] netbios name = Linux File Server #輔助名稱 server string = Samba #服務名稱 smb passwd file = /etc/samba/smbpasswd #密碼文件存放位置 log file = /var/log/samba/log.%m #日誌文件 max log size = 500 #日誌大小 socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 idmap config * : backend = tdb printing = bsd [homes] comment = user_home path = /office/users/%U #用戶家目錄 browseable = no #其餘人沒法瀏覽 writable = yes #可寫 valid users = %S #容許訪問的用戶 sync always = yes #同步模式工做 create mask = 0755 #建立文件權限 directory mask = 0755 #建立目錄權限 [public] comment = public path = /office/public write list = +staff #共享寫列表 read only = No #非只讀模式,就是可寫 sync always = yes create mask = 0777 directory mask = 0777 guest ok = Yes #全部人可見 [ios] comment = ios path = /office/ios write list = +ios #read only = No sync always = yes create mask = 0777 directory mask = 0777 guest ok = yes [web] comment = web path = /office/web write list = +web #read only = No sync always = yes create mask = 0777 directory mask = 0777 guest ok = Yes
使用ios部門tom登陸測試
使用web部門bob登陸測試
使用test用戶登陸測試
samba的使用介紹到此,歡迎博友提出疑問和指正。