Samba服務器搭建配置


本次環境:

  服務端-centos6.8-192.168.2.200

  客戶端1-centos6.8-192.168.2.201

  客戶端2-Windows7-192.168.2.104

假設條件如下:

  • 使用者認證層級設定 (security) 為: user
  • 用戶密碼檔案使用 TDB 數據庫格式,默認檔案在 /var/lib/samba/private/ 內;
  • 密碼必須要加密;
  • 每個可使用 samba 的使用者均擁有自己的家目錄;
  • 設定三個用戶,名稱為 smb1, smb2, smb3 ,且均加入 users 為次要群組。此三個用戶 Linux 密碼為 1234, Samba 密碼則為 4321;
  • 分享 /home/project 這個目錄,且資源名稱取名為: project;
  • 加入 users 這個群組的使用者可以使用 //IP/project 資源,且在該目錄下 users 這個群組的使用者具有寫入的權限。

所需要的軟件與配置文件如下:

  • samba: 這個軟件主要提供了 SMB 服務器所需的各項服務程序 (smbd 及 nmbd)、 的文件檔、以及其他與 SAMBA 相關的 logrotate 配置文件及開機默認選項檔案等;

  • samba-client: 這個軟件則提供了當 Linux 做為 SAMBA Client 端時,所需要的工具指令,例如掛載 SAMBA 文件格式的 mount.cifs、 取得類似網芳相關樹形圖的 smbtree 等等;

  • samba-common: 這個軟件提供的則是服務器與客戶端都會使用到的數據,包括 SAMBA 的主要配置文件 (smb.conf)、語法檢驗指令 (testparm) 等等;

這三個軟件你都得要安裝才行喔!如果尚未安裝的話,使用 yum 去裝好它吧!安裝完畢之后,你可以依序察看一下 Samba 的軟件結構喔!與它相關的配置文件基本上有這些:

  • /etc/samba/smb.conf: 這是 Samba 的主要配置文件,基本上,咱們的 Samba 就僅有這個配置文件而已,且這個配置文件本身就是很詳細的說明文件了,請用 vim 去查閱它吧!主要的設定項目分為服務器的相關設定 (global),如工作組、NetBIOS 名稱與密碼等級等, 以及分享的目錄等相關設定,如實際目錄、分享資源名稱與權限等等兩大部分。

  • /etc/samba/lmhosts: 早期的 NetBIOS name 需額外設定,因此需要這個 lmhosts 的 NetBIOS name 對應的 IP 檔。 事實上它有點像是 /etc/hosts 的功能!只不過這個 lmhosts 對應的主機名是 NetBIOS name 喔!不要跟 /etc/hosts 搞混了!目前 Samba 預設會去使用你的本機名稱 (hostname) 作為你的 NetBIOS name,因此這個檔案不設定也無所謂。

  • /etc/sysconfig/samba: 提供啟動 smbd, nmbd 時,你還想要加入的相關服務參數。

  • /etc/samba/smbusers: 由於 Windows 與 Linux 在管理員與訪客的賬號名稱不一致,例如: administrator (windows) 及 root(linux), 為了對應這兩者之間的賬號關系,可使用這個檔案來設定

  • /var/lib/samba/private/{passdb.tdb,secrets.tdb}: 管理 Samba 的用戶賬號/密碼時,會用到的數據庫檔案;

  • /usr/share/doc/samba-<版本>: 這個目錄包含了 SAMBA 的所有相關的技術手冊喔!也就是說,當你安裝好了 SAMBA 之后,你的系統里面就已經含有相當豐富而完整的 SAMBA 使用手冊了!值得高興吧! ^_^,所以,趕緊自行參考喔!

至於常用的腳本文件案方面,若分為服務器與客戶端功能,則主要有底下這幾個數據:

  • /usr/sbin/{smbd,nmbd}:服務器功能,就是最重要的權限管理 (smbd) 以及 NetBIOS name 查詢 (nmbd) 兩個重要的服務程序;

  • /usr/bin/{tdbdump,tdbtool}:服務器功能,在 Samba 3.0 以后的版本中,用戶的賬號與密碼參數已經轉為使用數據庫了!Samba 使用的數據庫名稱為 TDB (Trivial DataBase)。 既然是使用數據庫,當然要使用數據庫的控制指令來處理啰。tdbdump 可以察看數據庫的內容,tdbtool 則可以進入數據庫操作接口直接手動修改帳密參數。不過,你得要安裝 tdb-tools 這個軟件才行;

  • /usr/bin/smbstatus:服務器功能,可以列出目前 Samba 的聯機狀況, 包括每一條 Samba 聯機的 PID, 分享的資源,使用的用戶來源等等,讓你輕松管理 Samba 啦;

  • /usr/bin/{smbpasswd,pdbedit}:服務器功能,在管理 Samba 的用戶賬號密碼時, 早期是使用 smbpasswd 這個指令,不過因為后來使用 TDB 數據庫了,因此建議使用新的 pdbedit 指令來管理用戶數據;

  • /usr/bin/testparm:服務器功能,這個指令主要在檢驗配置文件 smb.conf 的語法正確與否,當你編輯過 smb.conf 時,請務必使用這個指令來檢查一次,避免因為打字錯誤引起的困擾啊!

  • /sbin/mount.cifs:客戶端功能,在 Windows 上面我們可以設定『網絡驅動器機』來連接到自己的主機上面。在 Linux 上面,我們則是透過 mount (mount.cifs) 來將遠程主機分享的檔案與目錄掛載到自己的 Linux 主機上面哪!

  • /usr/bin/smbclient:客戶端功能,當你的 Linux 主機想要藉由『網絡上的芳鄰』的功能來查看別台計算機所分享出來的目錄與裝置時,就可以使用 smbclient 來查看啦!這個指令也可以使用在自己的 SAMBA 主機上面,用來查看是否設定成功哩!

  • /usr/bin/nmblookup:客戶端功能,有點類似 nslookup 啦!重點在查出 NetBIOS name 就是了。

  • /usr/bin/smbtree:客戶端功能,這玩意就有點像 Windows 系統的網絡上的芳鄰顯示的結果,可以顯示類似『靠近我的計算機』之類的數據, 能夠查到工作組與計算機名稱的樹狀目錄分布圖!

大致的軟件結構就是這樣,底下就准備來講一個簡單的案例吧!這樣比較好介紹配置文件項目啦!

一、服務端的搭建配置:

  1.安裝所需軟件

 1 [root@lys1 ~]# yum -y install samba samba-client samba-common
 2 已加載插件:fastestmirror
 3 設置安裝進程
 4 Determining fastest mirrors
 5  * base: mirrors.nwsuaf.edu.cn
 6  * extras: mirrors.aliyun.com
 7  * updates: mirrors.aliyun.com
 8 base                                                                                                                                                                                                                 | 3.7 kB     00:00     
 9 extras                                                                                                                                                                                                               | 3.4 kB     00:00     
10 updates                                                                                                                                                                                                              | 3.4 kB     00:00     
11 updates/primary_db                                                                                                                                                                                                   | 1.4 MB     00:01     
12 解決依賴關系
13 --> 執行事務檢查
14 ---> Package samba.x86_64 0:3.6.23-35.el6_8 will be 安裝
15 ....................

2、設定 smb.conf 配置文件與目錄權限相關之設定

1 [root@lys1 ~]# vim /etc/samba/smb.conf
 1 [global]
 2         workgroup       = vbirdhouse
 3         netbios name    = vbirdserver
 4         server string   = This is vbird's samba server
 5         unix charset    = utf8
 6         display charset = utf8
 7         dos charset     = cp950
 8         log file        = /var/log/samba/log.%m
 9         max log size    = 50
10         load printers    = no
11 
12         # 與密碼有關的設定項目,包括密碼檔案所在格式喔!
13         security = user          <==這行就是重點啦!改成 user 層級
14         passdb backend = tdbsam  <==使用的是 TDB 數據庫格式!
15 
16 # 2. 分享的資源設定方面:刪除 temp  加入 homes 與 project
17 [homes]                                   <==分享的資源名稱
18         comment        = Home Directories
19         browseable     = no               <==除了使用者自己外,不可被其他人瀏覽
20         writable       = yes              <==掛載后可擦寫此分享
21         create mode    = 0664             <==建立檔案的權限為 664
22         directory mode = 0775             <==建立目錄的權限為 775
23 
24 [project]                                 <==就是那三位使用者的共享資源
25         comment    = smbuser's project
26         path       = /home/project        <==實際的 Linux 上面的目錄位置
27         browseable = yes                  <==可被其他人所瀏覽到資源名稱(非內容)
28         writable   = yes                  <==可以被寫入
29         write list = @users               <==寫入者有哪些人的意思

3 、每次改完 smb.conf 你都需要重新檢查一下語法正確否!

 1 [root@lys1 samba]# testparm 
 2 Load smb config files from /etc/samba/smb.conf
 3 rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
 4 Processing section "[homes]"
 5 Processing section "[project]"
 6 Loaded services file OK.
 7 Server role: ROLE_STANDALONE
 8 Press enter to see a dump of your service definitions 
 9 
10 [global]
11     dos charset = cp950
12     unix charset = utf8
13     display charset = utf8
14     workgroup = VBIRDHOUSE
15     netbios name = VBIRDSERVER
16     server string = This is vbird's samba server
17     log file = /var/log/samba/log.%m
18     max log size = 50
19     client signing = required
20     load printers = No
21     idmap config * : backend = tdb
22 
23 [homes]
24     comment = Home Directories
25     read only = No
26     create mask = 0664
27     directory mask = 0775
28     browseable = No
29 
30 [project]
31     comment = smbuser's project
32     path = /home/project
33     write list = @users
34     read only = No
35 [root@lys1 samba]# 

4、建立共享目錄並設置權限

1 [root@lys1 samba]# mkdir /home/project
2 [root@lys1 samba]# chgrp users /home/project
3 [root@lys1 samba]# chmod 2770 /home/project
4 [root@lys1 samba]# ll -d /home/project
5 drwxrws---. 2 root users 4096 8月  13 02:06 /home/project
6 [root@lys1 samba]# 

5、設定可使用 Samba 的用戶賬號與密碼

 1 [root@lys1 samba]# useradd -G users smb1
 2 [root@lys1 samba]# useradd -G users smb2
 3 [root@lys1 samba]# useradd -G users smb3
 4 [root@lys1 samba]# echo 1234 | passwd --stdin smb1
 5 更改用戶 smb1 的密碼 。
 6 passwd: 所有的身份驗證令牌已經成功更新。
 7 [root@lys1 samba]# echo 1234 | passwd --stdin smb2
 8 更改用戶 smb2 的密碼 。
 9 passwd: 所有的身份驗證令牌已經成功更新。
10 [root@lys1 samba]# echo 1234 | passwd --stdin smb3
11 更改用戶 smb3 的密碼 。
12 passwd: 所有的身份驗證令牌已經成功更新。
13 [root@lys1 samba]# 

6、通過pdbedit命令把剛創建的3個賬號添加成Samba使用者

  pdbedit:

選項與參數:
-L :列出目前在數據庫當中的賬號與 UID 等相關信息;
-v :需要搭配 -L 來執行,可列出更多的訊息,包括家目錄等數據;
-w :需要搭配 -L 來執行,使用舊版的 smbpasswd 格式來顯示數據;
-a :新增一個可使用 Samba 的賬號,后面的賬號需要在 /etc/passwd 內存在者;
-r :修改一個賬號的相關信息,需搭配很多特殊參數,請 man pdbedit;
-x :刪除一個可使用 Samba 的賬號,可先用 -L 找到賬號后再刪除;
-m :后面接的是機器的代碼 (machine account),與 domain model 有關!
 1 [root@lys1 samba]# pdbedit -a -u smb1
 2 new password:  
 3 retype new password:
 4 Unix username:        smb1
 5 NT username:          
 6 Account Flags:        [U          ]
 7 User SID:             S-1-5-21-3802184857-4025074321-3003230506-1000
 8 Primary Group SID:    S-1-5-21-3802184857-4025074321-3003230506-513
 9 Full Name:            
10 Home Directory:       \\vbirdserver\smb1
11 HomeDir Drive:        
12 Logon Script:         
13 Profile Path:         \\vbirdserver\smb1\profile
14 Domain:               VBIRDSERVER
15 Account desc:         
16 Workstations:         
17 Munged dial:          
18 Logon time:           0
19 Logoff time:          三, 06 2月 2036 23:06:39 CST
20 Kickoff time:         三, 06 2月 2036 23:06:39 CST
21 Password last set:    六, 13 8月 2016 02:16:15 CST
22 Password can change:  六, 13 8月 2016 02:16:15 CST
23 Password must change: never
24 Last bad password   : 0
25 Bad password count  : 0
26 Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
27 [root@lys1 samba]# pdbedit -a -u smb2
28 [root@lys1 samba]# pdbedit -a -u smb3

查詢下目前已存在的samba賬號

1 [root@lys1 samba]# pdbedit -L
2 smb1:500:
3 smb3:502:
4 smb2:501:
5 [root@lys1 samba]# 

7、開啟Samba並進行自我測試

1 smb2:501:
2 [root@lys1 samba]# /etc/init.d/smb start
3 啟動 SMB 服務:                                            [確定]
4 [root@lys1 samba]# /etc/init.d/nmb start
5 啟動 NMB 服務:                                            [確定]
 1 [root@lys1 samba]# smbclient -L //127.0.0.1 -U smb1
 2 Enter smb1's password:    <==輸入 smb1 在 pdbedit 所建立的密碼
 3 Domain=[VBIRDHOUSE] OS=[Unix] Server=[Samba 3.6.23-35.el6_8]
 4 
 5     Sharename       Type      Comment
 6     ---------       ----      -------
 7     project         Disk      smbuser's project
 8     IPC$            IPC       IPC Service (This is vbird's samba server)
 9     smb1            Disk      Home Directories
10 Domain=[VBIRDHOUSE] OS=[Unix] Server=[Samba 3.6.23-35.el6_8]
11 
12     Server               Comment
13     ---------            -------
14     VBIRDSERVER          This is vbird's samba server
15 
16     Workgroup            Master
17     ---------            -------
18     VBIRDHOUSE           VBIRDSERVER
19 [root@lys1 samba]# 
自我掛載測試
1 [root@lys1 /]# mount -t cifs //127.0.0.1/smb1 /mnt -o username=smb1,password=4321
2 [root@lys1 /]# ll -a /mnt/
3 ls: 正在讀取目錄/mnt/: 權限不夠
4 總用量 0
5 [root@lys1 /]# 

分析:應該是 SELinux 的問題吧!根據 /var/log/messages 的訊息,進行如下的動作就能夠處理好這個程序!

1 setsebool   setsid      setsysfont  
2 [root@lys1 /]# setsebool -P samba_enable_home_dirs=1
3 [root@lys1 /]# ls -a /mnt
4 .  ..  .bash_logout  .bash_profile  .bashrc
5 [root@lys1 /]# 
1 [root@lys1 /]# df -h
2 Filesystem            Size  Used Avail Use% Mounted on
3 /dev/mapper/vg_lys1-lv_root
4                        18G  900M   16G   6% /
5 tmpfs                 491M     0  491M   0% /dev/shm
6 /dev/sda1             477M   28M  425M   7% /boot
7 //127.0.0.1/smb1       18G  900M   16G   6% /mnt
8 [root@lys1 /]# umount /mnt
9 [root@lys1 /]# 

 

二、客戶端搭建使用

1、Windows7的使用:

雙擊網絡,啟動網絡發現,會發現Samba服務器:VBIRDSERVER如下圖:

 

雙擊VBIRDSERVER服務器會出現等了界面,輸出在Samba上創建的其中一個賬戶如下圖:

 

 

2、linux客戶端的使用

  先安裝客戶端軟件

1 [root@lys2 ~]# yum -y install samba-client samba-common

  掛載使用

1 [root@lys2 ~]# mount -t cifs //192.168.2.200/smb2 /mnt -o username=smb2,password=4321,codepage=cp950 
2 [root@lys2 ~]# df -h
3 Filesystem            Size  Used Avail Use% Mounted on
4 /dev/mapper/vg_lys2-lv_root
5                        18G  862M   16G   6% /
6 tmpfs                 491M     0  491M   0% /dev/shm
7 /dev/sda1             477M   28M  425M   7% /boot
8 //192.168.2.200/smb2   18G  900M   16G   6% /mnt

客戶端使用正常。

去服務器看下使用log是否生成:

 1 [root@lys1 home]# ll /var/log/samba/
 2 總用量 16
 3 drwx------. 4 root root 4096 8月  13 02:19 cores
 4 -rw-r--r--. 1 root root    0 8月  13 02:20 log.127.0.0.1
 5 -rw-r--r--. 1 root root    0 8月  13 02:43 log.192.168.2.104
 6 -rw-r--r--. 1 root root    0 8月  13 03:00 log.192.168.2.201
 7 -rw-r--r--. 1 root root    0 8月  13 02:43 log.liuyisai-pc
 8 -rw-r--r--. 1 root root  359 8月  13 02:20 log.nmbd
 9 -rw-r--r--. 1 root root 1523 8月  13 02:59 log.smbd
10 -rw-r--r--. 1 root root    0 8月  13 02:20 log.vbirdserver
11 drwx------. 2 root root 4096 5月  12 13:23 old

OK,實驗成功!!!

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM