SAMBA服務

大家都知道ftp是跨平臺的服務,但是不能在線修改,編輯,只能上傳、下載。而nfs是unix網絡文件系統,它可以將目錄遠程掛載到服務器上,但是不能跨平臺。而samba彌補這兩種服務的不足,它不僅實現了linux與windows 跨平臺文件共享,而且也可以實現掛載。

一、samba服務簡介

Samba是在Linux和UNIX系統上實現SMB協議的一個免費軟件,由服務器及客戶端程序構成。SMB(Server Messages Block,信息服務塊)是一種在局域網上共享文件和打印機的一種通信協議,它爲局域網內的不同計算機之間提供文件及打印機等資源的共享服務。SMB協議是客戶機/服務器型協議,客戶機通過該協議可以訪問服務器上的共享文件系統、打印機及其他資源。

二、samb服務基礎

       軟件包:samba

     Samba-client 客戶端軟件

     samba-common 通用軟件 

     cifs-utils smb客戶端工具

   協議:SMP(TCP139)CIFS(445)

   配置文件路徑:/etc/samba/smb.conf

   所需服務器:centos7 (172.18.254.254)

三、samba服務器的配置步驟

1、安裝軟件

[root@localhost ~]# yum -y install samba

2、起服務

[root@localhost ~]# systemctl restart smb

3、samba帳號的管理

    samba用戶:a、提前建立同名的系統用戶(可不設置密碼)

              b、採用獨立於系統的密碼

  管理工具:pdbedit

   添加用戶:-a

  查詢用戶:-L

  刪除用戶:-x

[root@localhost ~]# systemctl restart smb
[root@localhost ~]# useradd -s /sbin/nologin smb1
[root@localhost ~]# smbpasswd -a smb1
New SMB password:
Retype new SMB password:
Added user smb1.
[root@localhost ~]# pdbedit -L              //查看系統中所有的smb賬戶
smb1:2002:

     4、配置文件及參數

[root@svr7 ~]# vim /etc/samba/smb.conf
[global]            //全局配置
        workgroup = MYGROUP
[homes]            //家目錄共享                
[printers]            //打印機共享
[samba]
      path = /smb/        //共享目錄路徑
      public = yes|no      //默認no;公用的        
      browseable = yes|no    //默認yes;是否可以瀏覽
      read only = yes|no    //默認yes;只讀
      writable = yes|no     //默認yes;可寫
      write list = user    //默認無;可寫入的用戶列表
      valid users = user,user1//默認所有用戶;有效的用戶列表
      hosts allow = 客戶地址       //允許的客戶機地址
      hosts deny =  客戶地址      //禁止的客戶機地址
      comment = 註釋          //說明

5、修改用戶對目錄的讀寫執行權限

[root@localhost ~]# mkdir /smb
[root@localhost ~]# setfacl -m u:smb1:rwx /smb

6、SELinux對samba共享的保護

a、用getseboolbool查看selinux開關

[root@localhost ~]# getsebool -a|grep samba_export
samba_export_all_ro --> off
samba_export_all_rw --> off

b、用setsebool控制SELinux開關

[root@localhost ~]# setsebool -P samba_export_all_ro=on
[root@localhost ~]# setsebool -P samba_export_all_rw=on

四、客戶端訪問共享目錄

所需軟件包:samba-client

1、列出共享資源:smbclient -L 服務器地址

[root@centos6 ~]#smbclient -L 172.18.254.254
Enter root's password:                                //匿名登錄,可以不輸密碼,直接回車
Anonymous login successful
Domain=[SAMBA] OS=[Windows 6.1] Server=[Samba 4.7.1]
Sharename       Type      Comment
---------       ----      -------
print$          Disk      Printer Drivers
IPC$            IPC       IPC Service (Samba 4.7.1)
Anonymous login successful
Domain=[SAMBA] OS=[Windows 6.1] Server=[Samba 4.7.1]
Server               Comment
---------            -------
Workgroup            Master
---------            -------

注意:在沒有配置主配置文件的情況下,用用戶登錄時,會登錄到用戶的家目錄。

[root@localhost ~]# smbclient -L //172.18.254.254 -U smb1%centos
Sharename       Type      Comment
---------       ----      -------
print$         Disk      Printer Drivers
IPC$          IPC       IPC Service (Samba 4.7.1)
smb1          Disk      Home Directories
Reconnecting with SMB1 for workgroup listing.
Server               Comment
---------            -------
Workgroup            Master
---------            -------

2、連接到目標主機的共享目錄

[root@centos6 ~]#smbclient //172.18.250.55/leifengta -U xuxian
Enter xuxian's password: 
Domain=[WORKGROUP] OS=[Windows 6.1] Server=[Samba 4.7.1]
smb: \> ls
  .                                   D        0  Mon Oct  8 20:52:38 2018
  ..                                  D        0  Mon Oct  8 20:14:25 2018
  xuxian.txt                          A        3  Mon Oct  8 20:45:52 2018
  lost+found                          D        0  Mon Oct  8 19:16:01 2018
  suzhen.txt                          A       12  Mon Oct  8 20:45:19 2018
  aquota.user                               7168  Mon Oct  8 20:11:47 2018
  2.samba.avi                         A 396617646  Mon Oct  8 18:45:48 2018
51200 blocks of size 4096. 51199 blocks available
smb: \>

五、配置過程中可能遇到的問題

1、客戶端登錄samba時出現以下提示:

session setup failed: NT_STATUS_LOGON_FAILURE

該錯誤提示表示用戶有誤,可能是用戶不存在,也可能是密碼錯誤,或者只是在samba用戶和系統用戶及密碼出現錯誤,總之就是用戶和密碼的問題。

tree connect failed: NT_STATUS_BAD_NETWORK_NAME

該錯誤表示壞的網絡名,表示共享目錄不存在,或共享目錄權限問題

可用setfacl -m給用戶加權限

Connection to 192.168.4.7 failed (Error NT_STATUS_HOST_UNREACHABLE)

2、客戶端連接到samba共享目錄時出現以下提示:

smb: \> ls

NT_STATUS_ACCESS_DENIED listing \*

文件權限不足,或者存在selinux限制

調整文件的權限,並打開selinux開關

3、執行setsebool -P 操作啓用SElinux開關參數時失敗,提示:Killed

內存不足,而且交換空間也不足

添加交換分區(1GB)在重試

六、多用戶SMB掛載

SAMBA共享默認只支持同時用一個用戶掛載SMB共享 ,但CentOS7中可啓用多用戶掛載功能 ,客戶端掛載samba共享目錄後,在客戶端登錄的不同用戶訪問同一個 samba的掛載點,可獲得不同權限 。

實驗:多用戶smb掛載

服務端:

1.新建兩個smb用戶,修改其密碼

[root@localhost ~]# useradd -s /sbin/nologin xiaoma
[root@localhost ~]# useradd -s /sbin/nologin xiaomao
[root@localhost ~]# smbpasswd -a xiaoma 
New SMB password:
Retype new SMB password:
Added user xiaoma.
[root@localhost ~]# smbpasswd -a xiaomao
New SMB password:
Retype new SMB password:
Added user xiaomao.

      2.新建一個共享目錄,並修改它的contect值及設置acl權限

[root@localhost ~]# mkdir /app/smbshared
[root@localhost ~]# chcon -t samba_share_t /app/smbshared/
[root@localhost ~]# setfacl -m u:xiaoma:rwx /app/smbshared/
[root@localhost ~]# setfacl -m u:xiaomao:rwx /app/smbshared/

     3.修改samba主配置文件

[root@localhost ~]# vim /etc/samba/smb.conf
[gongxiang]
        comment = My Gongxiang
        path = /app/smbshared
        browseable = yes
        writeable = no
        write list = xiaoma,xiaomao
        public = yes

4.重啓服務

[root@localhost ~]# systemctl restart smb

       客戶端:

    1、新建兩個用戶

[root@localhost ~]# useradd xiaoma
[root@localhost ~]# useradd xiaomao

        2、編輯身份認證文件

[root@localhost ~]# vim /etc/multiuser
username=smb1
password=centos

       3、開機自動掛載到服務器上

[root@localhost ~]# vim /etc/fstab 
//172.18.250.55/gongxiang /mnt/ cifs credentials=/etc/multiuser,multiuser,sec=ntlmssp 0 0
[root@localhost ~]# mount -a

              credentials=/etc/multiuser            指定掛載時用到的用戶身份認證文件

              multiuser                                       支持多用戶認證

              sec=ntlmssp                認證方式爲smb認證

    4、切換用戶,進入到掛載的目錄下

[root@localhost ~]# su - xiaoma
[xiaoma@localhost ~]$ cd /mnt
[xiaoma@localhost mnt]$ ls
ls: reading directory .: Permission denied               //因爲沒有做smb的認證所以無法訪問smb共享
[xiaoma@localhost mnt]$ cifscreds add 172.18.250.55                //對用戶進行smb的認證
Password:

    5、測試

[xiaoma@localhost mnt]$ ls
[xiaoma@localhost mnt]$ touch masai
[xiaoma@localhost mnt]$ ll
total 0
-rw-r--r--. 1 1009 1010 0 Oct 11 09:56 masai
[xiaoma@localhost mnt]$ exit
logout

七、一個samba的綜合性實驗

實驗:創建baisuzhen,xuxian,fahai,xiaoqing,xushilin,guanyin 六個用戶

1.要求以上六個用戶都可以瀏覽並訪問目標主機的共享目錄leifengta,匿名用戶可訪問但不可瀏覽。大小2GB。未來可自動擴展

2.baisuzhen,xuxian,xushilin 可以在該共享目錄下創建及刪除文件,且彼此之間創建的文件,可以相互修改,其他用戶不可創建文件。

3.xuxian,xushilin最多能各自創建200M的數據,且不能刪除其他人創建的文件,baisuzhen不受限制.

4.六個用戶各自都 有一個以自己名字爲名的共享目錄,僅自己可見可訪問可創建,他人不可見,guanyin對所有目錄均有完整權限。

1、創建六個用戶,並設置密碼

[root@localhost ~]#  for username in baisuzhen xuxian fahai xiaoqing xushilin guanyin ;do useradd -s /sbin/nologin $username ; (echo redhat;echo redhat) |smbpasswd -a $username ;done

2、創建共享目錄,建議用邏輯卷掛載

[root@localhost ~]#  mkdir /app/baishezhuan
[root@localhost ~]#  fdisk /dev/sda 
[root@localhost ~]#  partprobe /dev/sda
[root@localhost ~]#  pvcreate /dev/sda6
[root@localhost ~]#  vgcreate vgbaishe /dev/sda6
[root@localhost ~]#  lvcreate -l +100%FREE -n lvbaishe vgbaishe
[root@localhost ~]#  mkfs.ext4 /dev/vgbaishe/lvbaishe 
[root@localhost ~]#  vim /etc/fstab 
/dev/vgbaishe/lvbaishe /app/baishezhuan                           ext4    defaults,usrquota  0 0
[root@localhost ~]#  mount -a

3、爲baisuzhen,xuxian,xushilin三個用戶設置acl權限,使其可以在共享目錄下創建刪除文件

[root@localhost ~]#  setfacl -m u:baisuzhen:rwx /app/baishezhuan/
[root@localhost ~]#  setfacl -m u:xuxian:rwx /app/baishezhuan/
[root@localhost ~]# setfacl -m u:xushilin:rwx /app/baishezhuan/

4、配置samba的主配置文件

[root@localhost ~]#vim /etc/samba/smb.conf
[global]
        workgroup = SAMBA
        security = user
        passdb backend = tdbsam
        printing = cups
        printcap name = cups
        load printers = yes
        cups options = raw
        config file = /etc/samba/conf.d/%U.conf        //子配置文件
[leifengta]
        comment = xi hu leifengta
        path = /app/baishezhuan
        public = yes                       //可訪問
        browseable = no                           //不能瀏覽
        writeable = no                         //不可寫

5、將baisuzhen,xuxian,xushilin三個用戶加入到同一個組中,使彼此之間創建的文件,可以相互修改,其他用戶不可創建文件

[root@localhost  conf.d]# groupadd baishezhuan
[root@localhost  conf.d]# usermod  -aG baishezhuan baisuzhen
[root@localhost  conf.d]# usermod  -aG baishezhuan xuxian
[root@localhost  conf.d]# usermod  -aG baishezhuan xushilin
[root@localhost  conf.d]# chgrp baishezhuan /app/baishezhuan
[root@localhost  conf.d]# chmod g+s /app/baishezhuan/         //對一個目錄作用了sgid權限後,任何人在該目錄下創建的文件的所屬組,均與該目錄的所屬組相同。
[root@localhost  conf.d]# chown baisuzhen /app/baishezhuan/
[root@localhost  conf.d]# chmod o+t /app/baishezhuan/          //對一個目錄作用了stickey權限後,該目錄下文件僅其所屬人和目錄所屬人及root可刪除

6、創建與六個用戶名字相同的目錄,並編輯子配置文件

[root@localhost  samba]# mkdir conf.d
[root@localhost  samba]# cd conf.d/
[root@localhost conf.d]# vim baisuzhen.conf
[leifengta]
        comment = xi hu leifengta
        path = /app/baishezhuan
        browseable = yes
       writeable = yes
       force create mode = 0664
[baisuzhen]
        comment = baisuzhen
        path = /app/common/baisuzhen
        browseable = yes
        writeable = yes
[root@localhost conf.d]# vim xiaoqing.conf 
[leifengta]
        comment = xi hu leifengta
        path = /app/baishezhuan
        browseable = yes
        writeable = no
[xiaoqing]
        comment = xiaoqing
        path = /app/common/xiaoqing
        browseable = yes
        writeable = yes
[root@localhost conf.d]# cat guanyin.conf 
[leifengta]
        comment = xi hu leifengta
        path = /app/baishezhuan
        browseable = yes
        writeable = no
[baisuzhen]
        comment = baisuzhen
        path = /app/common/baisuzhen
        browseable = yes
        writeable = yes
[fahai]
        comment = fahai
        path = /app/common/fahai
        browseable = yes
        writeable = yes
[xiaoqing]
        comment = xiaoqing
        path = /app/common/xiaoqing
        browseable = yes
        writeable = yes
[xushilin]
        path = /app/common/xushilin
        browseable = yes
        writeable = yes
[xuxian]
        comment = xuxian
        path = /app/common/xuxian
        browseable = yes
        writeable = yes
[guanyin]
        comment = guanyin
        path = /app/common/guanyin
        browseable = yes
        writeable = yes

7、 爲xuxian,xushilin設置quota

[root@localhost  ~]# quotacheck -cum /app/baishezhuan/                       //生成quota數據庫
[root@localhost  ~]# quotaon /app/baishezhuan/                            //開啓quota
[root@localhost  ~]# edquota -u xuxian
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/mapper/vgbaishe-lvbaishe          4          0       200M          1        0        0
[root@localhost  ~]# edquota -p xuxian xushilin                                                        
[root@localhost  common]# mkdir baisuzhen xiaoqing fahai xuxian xushilin guanyin

8、設置共享目錄所屬人,使其僅自己可見可訪問可創建,他人不可見,guanyin對所有目錄均有完整權限

[root@localhost common]# chown baisuzhen baisuzhen/
[root@localhost  common]# chown fahai fahai/
[root@localhost common]# chown guanyin guanyin/
[root@localhost  common]# chown xiaoqing xiaoqing/
[root@localhost common]# chown xushilin xushilin/
[root@localhost  common]# chown xuxian xuxian/
[root@localhost common]# chmod 700 *
[root@localhost common]# setfacl -m u:guanyin:rwx *

9、測試

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章