Linux_服務管理—samba

samba概述

Samba是在Linux和UNIX系統上實現SMB協議的一個免費軟件,由服務器及客戶端程序構成。

在此之前我們已經瞭解了NFS,NFS與samba一樣,也是在網絡中實現文件共享的一種實現,但不幸的是,其不支持windows平臺,而本章要提到的samba是能夠在任何支持SMB協議的主機之間共享文件的一種實現,當然也包括windows。

SMB(Server Messages Block,信息服務塊)是一種在局域網上共享文件和打印機的一種通信協議,它爲局域網內的不同計算機之間提供文件及打印機等資源的共享服務。

SMB協議是C/S型協議,客戶機通過該協議可以訪問服務器上的共享文件系統、打印機及其他資源。
Samba監聽端口有:

TCP UDP
139
445
137
138

tcp端口相對應的服務是smbd服務,其作用是提供對服務器中文件、打印資源的共享訪問。
udp端口相對應的服務是nmbd服務,其作用是提供基於NetBIOS主機名稱的解析。

samba進程:

進程 對應
nmbd 對應netbios
smbd 對應cifs協議
winbindd + ldap 對應Windows AD活動目錄

samba用戶:

帳號 密碼
都是系統用戶
/etc/passwd
Samba服務自有密碼文件
通過smbpasswd -a USERNAME命令設置
//smbpasswd命令:
    -a Sys_User     //添加系統用戶爲samba用戶併爲其設置密碼
    -d              //禁用用戶帳號
    -e              //啓用用戶帳號
    -x              //刪除用戶帳號
 
 
[root@localhost ~]# yum -y install samba-*
[root@localhost ~]# useradd tom
[root@localhost ~]# smbpasswd -a tom
New SMB password:
Retype new SMB password:
Added user tom.

Samba安全級別:
Samba服務器的安全級別有三個,分別是user,server,domain

安全級別 作用
user 基於本地的驗證
server 由另一臺指定的服務器對用戶身份進行認證
domain 由域控進行身份驗證

以前的samba版本支持的安全級別有四個,分別是share,user,server,domain
share是用來設置匿名訪問的,但現在的版本已經不支持share了,但是還是可以實現匿名訪問的
只是配置方式變了

samba配置文件:
/etc/samba/smb.conf(主配置文件)

samba三大組成 作用
[global] 全局配置,此處的設置項對整個samba服務器都有效
[homes] 宿主目錄共享設置,此處用來設置Linux用戶的默認共享,對應用戶的宿主目錄。
當用戶訪問服務器中與自己用戶名同名的共享目錄時,通過驗證後將會自動映射到該用戶的宿主目錄中
[printers] 打印機共享設置

常用配置文件參數:

參數 作用
workgroup 表示設置工作組名稱
server
string
表示描述samba服務器
security 表示設置安全級別,其值可爲share、user、server、domain
passdb
backend
表示設置共享帳戶文件的類型,其值可爲tdbsam(tdb數據庫文件)、ldapsam(LDAP目錄認證)、
smbpasswd(兼容舊版本samba密碼文件)
comment 表示設置對應共享目錄的註釋,說明信息,即文件共享名
browseable 表示設置共享是否可見
writable 表示設置目錄是否可寫
path 表示共享目錄的路徑
guest ok 表示設置是否所有人均可訪問共享目錄
public 表示設置是否允許匿名用戶訪問
write list 表示設置允許寫的用戶和組,組要用@表示,例如 write list = root,@root
valid users 設置可以訪問的用戶和組,例如 valid users = root,@root
hosts deny 設置拒絕哪臺主機訪問,例如 hosts deny = 192.168.72.1
hosts allow 設置允許哪臺主機訪問,例如 hosts allow = 192.168.72.2
printable 表示設置是否爲打印機
//測試配置文件是否有語法錯誤,以及顯示最終生效的配置:使用testparm命令
[root@localhost ~]# testparm
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[homes]"
Processing section "[printers]"
Processing section "[print$]"
Loaded services file OK.
Server role: ROLE_STANDALONE
[root@node01-linux ~]# systemctl status smb 	查看服務狀態
[root@node01-linux ~]# systemctl status nmb	

samba訪問

環境說明:

服務端 客戶端
node01
192.168.67.131
node02
192.168.67.132
[root@node01-linux ~]# yum -y install samba*		#安裝所有的包

[root@node01-linux ~]# systemctl stop firewalld

[root@node02-linux ~]# yum -y install samba-client	#安裝客戶端包

[root@node01-linux ~]# useradd -r -M -s /sbin/nologin tom	#創建一個系統用戶

[root@node01-linux ~]# smbpasswd -a tom	#添加tom系統用戶爲samba用戶併爲其設置密碼

[root@node01-linux samba]# useradd zhangshan
[root@node01-linux samba]# smbpasswd -a zhangshan


[root@node01-linux ~]# systemctl enable --now smb nmb		#啓動smb,nmb服務

[root@node01-linux samba]# vim smb.conf
# See smb.conf.example for a more detailed config file or
# read the smb.conf manpage.
# Run 'testparm' to verify the config is correct after
# you modified it.

[global]
        workgroup = SAMBA	#表示設置工作組名稱
        security = user		#表示設置安全級別,其值可爲share、user、server、domain

        passdb backend = tdbsam	#表示設置共享帳戶文件的類型,其值可爲tdbsam(tdb數據庫文件)、ldapsam(LDAP目錄認證)、smbpasswd(兼容舊版本samba密碼文件)

        printing = cups			#打印
        printcap name = cups	#打印名稱
        load printers = yes		#加載打印機
        cups options = raw		#選項

[runtime]
        comment = runtime	#表示設置對應共享目錄的註釋,說明信息,即文件共享名
        browseable = yes	#表示設置共享是否可見
        writable = no		#表示設置目錄是否可寫
        valid users = jerry,zhangshan	#設置可以訪問的用戶和組,例如 valid users = root,@root
        write list = zhangshan	#表示設置允許寫的用戶和組,組要用@表示,例如 write list = root,@root
        path = /opt				#表示共享目錄的路徑
		hosts deny = 192.168.67.133		#設置拒絕哪臺主機訪問,例如 hosts deny = 192.168.72.1
		hosts allow = 192.168.67.132	#設置允許哪臺主機訪問,例如 hosts allow = 192.168.72.2

[root@node01-linux samba]# systemctl restart smb nmb	#重啓smb nmb服務

[root@node01-linux samba]# echo 'hello world' > /opt/abc
[root@node01-linux samba]# ls /opt/
abc

[root@node01-linux samba]# setfacl -m u:zhangshan:rwx /opt/	#設置zhangshan用戶對opt目錄有rwx權限

`//查看samba服務器有哪些共享資源`
[root@node02-linux ~]# smbclient -L 192.168.67.131 -U zhangshan
Enter SAMBA\zhangshan's password: 

	Sharename       Type      Comment
	---------       ----      -------
	runtime         Disk      runtime
	IPC$            IPC       IPC Service (Samba 4.10.4)
Reconnecting with SMB1 for workgroup listing.

	Server               Comment
	---------            -------

	Workgroup            Master
	---------            -------
	SAMBA                NODE01-LINUX
	WORKGROUP            LAPTOP-6AKE6Q6L

`//交互式訪問某共享資源`
[root@node02-linux ~]# smbclient //192.168.67.131/runtime -U tom
Enter SAMBA\tom's password: 
tree connect failed: NT_STATUS_ACCESS_DENIED
[root@node02-linux ~]# smbclient //192.168.67.131/runtime -U zhangshan
Enter SAMBA\zhangshan's password: 
Try "help" to get a list of possible commands.
smb: \> ls
  .                                   D        0  Fri May 15 11:44:20 2020
  ..                                  D        0  Tue May 12 11:46:52 2020
  abc                                 N       12  Fri May 15 11:44:20 2020

		8374272 blocks of size 1024. 7131200 blocks available
smb: \> exit
[root@node02-linux ~]# 

`//基於掛載的方式訪問`
[root@node02-linux ~]# mkdir /opt/smb
[root@node02-linux ~]# mount -t cifs //192.168.67.131/runtime /opt/smb -o username=zhangshan,password=123456
[root@node02-linux ~]# df -h
Filesystem                Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   8.0G  1.2G  6.9G  15% /
devtmpfs                  476M     0  476M   0% /dev
tmpfs                     488M     0  488M   0% /dev/shm
tmpfs                     488M  7.6M  480M   2% /run
tmpfs                     488M     0  488M   0% /sys/fs/cgroup
/dev/sda1                1014M  130M  885M  13% /boot
tmpfs                      98M     0   98M   0% /run/user/0
//192.168.67.131/runtime  8.0G  1.2G  6.9G  15% /opt/smb
[root@node02-linux ~]# cd /opt/smb/
[root@node02-linux smb]# ls
abc
[root@node02-linux smb]# rm -f abc 
[root@node02-linux smb]# touch 111
[root@node02-linux smb]# ll
total 0
-rw-r--r--. 1 1001 1001 0 May 15 16:10 111
[root@node01-linux opt]# ll
total 0
-rw-r--r-- 1 zhangshan zhangshan 0 May 15 16:10 111

`永久掛載`
[root@node02-linux ~]# umount /opt/smb/
[root@node02-linux ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root  8.0G  1.2G  6.9G  15% /
devtmpfs                 476M     0  476M   0% /dev
tmpfs                    488M     0  488M   0% /dev/shm
tmpfs                    488M  7.6M  480M   2% /run
tmpfs                    488M     0  488M   0% /sys/fs/cgroup
/dev/sda1               1014M  130M  885M  13% /boot
tmpfs                     98M     0   98M   0% /run/user/0
[root@node02-linux ~]# vim /etc/fstab 


#
# /etc/fstab
# Created by anaconda on Tue May 12 11:40:49 2020
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=b81f2ae0-a658-4c1f-bd24-90d9c7f28bcc /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
//192.168.67.131/runtime /opt/smb cifs defaults,username=zhangshan,password=123456 0 0
[root@node02-linux ~]# mount -a
[root@node02-linux ~]# df -h
Filesystem                Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   8.0G  1.2G  6.9G  15% /
devtmpfs                  476M     0  476M   0% /dev
tmpfs                     488M     0  488M   0% /dev/shm
tmpfs                     488M  7.6M  480M   2% /run
tmpfs                     488M     0  488M   0% /sys/fs/cgroup
/dev/sda1                1014M  130M  885M  13% /boot
tmpfs                      98M     0   98M   0% /run/user/0
//192.168.67.131/runtime  8.0G  1.2G  6.9G  15% /opt/smb

實例

配置用戶認證共享

`//使用yum命令安裝samba服務器`
[root@localhost ~]# yum -y install samba-*

`//映射共享目錄`
`//創建用戶zhang`
[root@node01-linux ~]# useradd -M zhang

`//爲zhang用戶創建smb共享密碼`
[root@node01-linux ~]# smbpasswd -a zhang
New SMB password:
Retype new SMB password:
Added user zhang.

`//假設這裏映射zhang用戶爲share用戶,那麼就要在/etc/samba/smbusers文件中添加如下內容`
[root@node01-linux ~]# echo 'zhang = share' > /etc/samba/smbusers
[root@node01-linux samba]# ls
lmhosts  smb.conf  smb.conf.example  smbusers
[root@node01-linux samba]# mv smbusers .smbusers  	#隱藏映射映射文件
[root@node01-linux samba]# ls
lmhosts  smb.conf  smb.conf.example
`//在全局配置中添加如下內容`
[root@node01-linux samba]# vim smb.conf



[global]
        workgroup = SAMBA
        security = user
        username map = /etc/samba/.smbusers 	#添加此行內容

        passdb backend = tdbsam

        printing = cups
        printcap name = cups
        load printers = yes
        cups options = raw

[runtime]
        comment = runtime
        browseable = yes
        writable = no
        valid users = jerry,zhangshan
        write list = zhangshan
        path = /opt

`//創建一個共享目錄zhang`
[root@node01-linux samba]# mkdir /opt/runtime
[root@node01-linux samba]# chown -R zhang.zhang /opt/runtime/
[root@node01-linux samba]# ll /opt/
total 0
-rw-r--r-- 1 zhangshan zhangshan 0 May 15 16:10 111
-rw-r--r-- 1 root      root      0 May 15 16:07 abc
drwxr-xr-x 2 zhang     zhang     6 May 15 16:44 runtime


`//配置共享`
[root@node01-linux samba]# vim smb.conf

# See smb.conf.example for a more detailed config file or
# read the smb.conf manpage.
# Run 'testparm' to verify the config is correct after
# you modified it.

[global]
        workgroup = SAMBA
        security = user
        username map = /etc/samba/.smbusers

        passdb backend = tdbsam

        printing = cups
        printcap name = cups
        load printers = yes
        cups options = raw

[runtime]
        comment = runtime
        browseable = yes
        writable = no
        valid users = zhang
        write list = zhang
        path = /opt/runtime

`//重啓smb nmb服務`
[root@node01-linux samba]# systemctl restart smb nmb

`//啓動smb服務`
[root@node01-linux samba]# systemctl start smb

`//重啓smb服務`
[root@node01-linux samba]# systemctl restart smb

`//重新加載smb服務`
[root@node01-linux samba]# systemctl reload smb

`//設置smb服務隨系統啓動而啓動`
[root@node01-linux samba]# systemctl enable smb

`//客戶端查看samba服務器有哪些共享資源`
[root@node02-linux ~]# smbclient -L 192.168.67.131 -U share
Enter SAMBA\share's password: 

	Sharename       Type      Comment
	---------       ----      -------
	runtime         Disk      runtime
	IPC$            IPC       IPC Service (Samba 4.10.4)
Reconnecting with SMB1 for workgroup listing.

	Server               Comment
	---------            -------

	Workgroup            Master
	---------            -------
	SAMBA                NODE01-LINUX

[root@node02-linux ~]# vim /etc/fstab 


#
# /etc/fstab
# Created by anaconda on Tue May 12 11:40:49 2020
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=b81f2ae0-a658-4c1f-bd24-90d9c7f28bcc /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
//192.168.67.131/runtime /media cifs defaults,username=share,password=123456 0 0

[root@node02-linux ~]# mount -a
[root@node02-linux ~]# df -h
Filesystem                Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   8.0G  1.2G  6.9G  15% /
devtmpfs                  476M     0  476M   0% /dev
tmpfs                     488M     0  488M   0% /dev/shm
tmpfs                     488M  7.6M  480M   2% /run
tmpfs                     488M     0  488M   0% /sys/fs/cgroup
/dev/sda1                1014M  130M  885M  13% /boot
tmpfs                      98M     0   98M   0% /run/user/0
//192.168.67.131/runtime  8.0G  1.2G  6.9G  15% /media
`//驗證`
[root@node02-linux ~]# cd /media/
[root@node02-linux media]# ls
[root@node02-linux media]# touch runtime
[root@node02-linux media]# ll
total 0
-rw-r--r--. 1 1002 1002 0 May 15 17:16 runtime

[root@node01-linux ~]# cd /opt/runtime/
[root@node01-linux runtime]# ls
runtime
[root@node01-linux ~]# id zhang
uid=1002(zhang) gid=1002(zhang) groups=1002(zhang)



配置匿名共享

`//使用yum命令安裝samba服務器`
[root@localhost ~]# yum -y install samba-*

`//在全局配置中添加如下內容`
[root@node01-linux samba]# vim smb.conf

[global]
        workgroup = SAMBA
        security = user
        map to guest = Bad User

        passdb backend = tdbsam

        printing = cups
        printcap name = cups
        load printers = yes
        cups options = raw

[runtime]
        comment = runtime
        browseable = yes
        path = /opt/anon 
        public = yes
        guest = yes
        writable = yes
        
[root@node01-linux samba]# mkdir /opt/anon 	#創建匿名共享目錄/opt/anon
[root@node01-linux samba]# chmod 777 /opt/anon/ 	#權限777 所有人都能寫

[root@node01-linux samba]# systemctl restart smb nmb

[root@node02-linux ~]# df -h
Filesystem                Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   8.0G  1.2G  6.9G  15% /
devtmpfs                  476M     0  476M   0% /dev
tmpfs                     488M     0  488M   0% /dev/shm
tmpfs                     488M  7.6M  480M   2% /run
tmpfs                     488M     0  488M   0% /sys/fs/cgroup
/dev/sda1                1014M  130M  885M  13% /boot
tmpfs                      98M     0   98M   0% /run/user/0
//192.168.67.131/runtime  8.0G  1.2G  6.8G  15% /opt/smb
//192.168.67.131/runtime  8.0G  1.2G  6.8G  15% /media
[root@node02-linux ~]# umount /media  #先卸載
[root@node02-linux ~]# vim /etc/fstab 


#
# /etc/fstab
# Created by anaconda on Tue May 12 11:40:49 2020
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=b81f2ae0-a658-4c1f-bd24-90d9c7f28bcc /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
//192.168.67.131/runtime /media cifs defaults,username=BadUser  0 0

[root@node02-linux ~]# mount -a
Password for BadUser@//192.168.67.131/runtime:  
[root@node02-linux ~]# df -h
Filesystem                Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   8.0G  1.2G  6.9G  15% /
devtmpfs                  476M     0  476M   0% /dev
tmpfs                     488M     0  488M   0% /dev/shm
tmpfs                     488M  7.6M  480M   2% /run
tmpfs                     488M     0  488M   0% /sys/fs/cgroup
/dev/sda1                1014M  130M  885M  13% /boot
tmpfs                      98M     0   98M   0% /run/user/0
//192.168.67.131/runtime  8.0G  1.2G  6.8G  15% /opt/smb
//192.168.67.131/runtime  8.0G  1.2G  6.8G  15% /media
`//驗證`
[root@node02-linux ~]# cd 
[root@node02-linux ~]# cd /media/
[root@node02-linux media]# ls
[root@node02-linux media]# touch abc
[root@node02-linux media]# ll
total 0
-rw-r--r--. 1 nobody nobody 0 May 15 17:40 abc

[root@node01-linux ~]# cd /opt/anon/
[root@node01-linux anon]# ll
total 0
-rw-r--r-- 1 nobody nobody 0 May 15 17:40 abc
[root@node01-linux anon]# id nobody		#匿名用戶
uid=99(nobody) gid=99(nobody) groups=99(nobody)

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