samba實現與windows共舞

##########################################################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用戶

wKiom1M9ir2QjGA4AAIZfsYbrRc856.jpg

   添加文件系統權限

wKiom1M9i1mBACtWAAFpfZwrBuM968.jpg

   添加共享權限

wKiom1M9i3iTrM7XAAJ6kWwPB8c160.jpg

   linux做爲客戶端須要安裝客戶端工具

yum install samba-client -y

   列出服務共享的目錄列表

smbclient -L 192.168.1.201 -U test

wKioL1M9jDiy6pTOAAK4e7FOeZw527.jpg

   進入共享目錄進行上傳、下載等操做

smbclient //192.168.1.201/testdir  -U test

wKioL1M9jQLTgANSAAGSPobm69k296.jpg

wKiom1M9jWHS6ICyAAEvorPE6cM037.jpg

   掛載共享目錄至本地

mkdir /winfs
mount -t cifs -o username=test,password=123 //192.168.1.201/testdir /winfs
touch /winfs/test

wKioL1M9j3GTb1WSAAExfOfYVQA263.jpg


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登陸測試

wKioL1M9pLDQo-2hAAFROviD2K0150.jpg

wKiom1M9pNjBlAyfAAFoxsaHRW4157.jpg

wKioL1M9pLDRM2dwAAFwg3HwMtc266.jpg

wKiom1M9pNiyEwWcAAEsBnWRwJo281.jpg

   使用web部門bob登陸測試

wKioL1M9pjODcKlXAAFLmmqnecM643.jpg

wKiom1M9pluAra6hAAGYwNUh9m8616.jpg

wKioL1M9pjOT-iW1AAFC4efzR7k244.jpg

wKiom1M9plzAKWZrAAExMDrx4nU391.jpg

   使用test用戶登陸測試

wKioL1M9qRDCRVxUAAG6OIdlUes338.jpg

wKiom1M9qTji7Q6oAAFE-U9OB5w757.jpg

wKioL1M9qRCQlPxPAAE10_hBZ6A052.jpg

samba的使用介紹到此,歡迎博友提出疑問和指正。

相關文章
相關標籤/搜索