2018-07-09 網(wǎng)絡(luò)文件共享服務(wù) 2 NFS服務(wù)和SAMBA服務(wù)

1、NFS服務(wù)介紹

  • NFS:Network File System 網(wǎng)絡(luò)文件系統(tǒng),基于內(nèi)核的文件系統(tǒng)。Sun公司開發(fā),通過使用NFS,用戶和程序可以像訪問本地文件一樣訪問遠(yuǎn)端系統(tǒng)上的文件,基于RPC(Remote Procedure Call Protocol遠(yuǎn)程過程調(diào)用)實(shí)現(xiàn),rpc就是客戶端在執(zhí)行某個(gè)程序的時(shí)候,執(zhí)行中途會(huì)調(diào)用遠(yuǎn)程服務(wù)器上的一個(gè)程序,然后再返回原程序繼續(xù)執(zhí)行的過程。
  • NFS優(yōu)勢(shì):節(jié)省本地存儲(chǔ)空間,將常用的數(shù)據(jù)如:home目錄,存放在一臺(tái)NFS服務(wù)器上且可以通過網(wǎng)絡(luò)訪問,那么本地終端將可以減少自身存儲(chǔ)空間的使用。
  • NFS是一個(gè)文件系統(tǒng),遠(yuǎn)程主機(jī)可以掛載nfs服務(wù)器上共享的這個(gè)nfs文件系統(tǒng)的文件
  • 軟件包:nfs-utils
    Kernel支持:nfs.ko
  • 端口:2049(nfsd), 其它端口由rpcbind(111)分配
  • 配置文件:/etc/exports,/etc/exports.d/*.exports
    CentOS7不支持同一目錄同時(shí)用nfs和samba共享,因?yàn)槭褂面i機(jī)制不同
  • 相關(guān)軟件包:rpcbind(必須),tcp_wrappers
    CentOS6開始portmap進(jìn)程由rpcbind代替,rpcbind服務(wù)用于管理nfs服務(wù)的端口,它可以給nfs各服務(wù)分配端口并記錄下來,客戶端不是直接去訪問nfs,因?yàn)閚fs服務(wù)由很多服務(wù)組成,并且各個(gè)服務(wù)的端口不是固定的,所以客戶端首先去訪問rpcbind服務(wù)的111端口,通過rpcbind服務(wù)找到nfs服務(wù)的各個(gè)端口,所以安裝nfs服務(wù)的同時(shí)要安裝rpcbind服務(wù)才可以,centos6上要把rpcbind服務(wù)也要設(shè)置成開機(jī)啟動(dòng),不然啟動(dòng)了nfs服務(wù)也沒用,客戶端找不到端口,centos7中可以不設(shè)置成開機(jī)啟動(dòng),因?yàn)閏entos7中有獨(dú)特的功能,在開啟nfs服務(wù)的同時(shí)會(huì)把依賴的服務(wù)rpcbind服務(wù)同時(shí)開啟。
  • NFS服務(wù)主要進(jìn)程:
    NFS服務(wù)由很多進(jìn)程組成,在開啟主進(jìn)程的時(shí)候會(huì)把相應(yīng)的進(jìn)程也開啟
    rpc.nfsd最主要的NFS進(jìn)程,管理客戶端是否可登錄
    rpc.mountd掛載和卸載NFS文件系統(tǒng),包括權(quán)限管理
    rpc.lockd非必要,管理文件鎖,避免同時(shí)寫出錯(cuò)
    rpc.statd非必要,檢查文件一致性,可修復(fù)文件
  • 日志:/var/lib/nfs/
    開啟nfs服務(wù)
centos6中啟動(dòng)服務(wù)
service rpcbind start
chkconfig rpcbind on
service nfs start  
chkconfig nfs on
centos7中啟動(dòng)服務(wù)
systemctl start nfs-server
systemctl enable nfs-server
rpcinfo -p   ---查看nfs服務(wù)打開的端口號(hào),除了nfs的主服務(wù)端口為2049外,其他端口都是由rpcbind服務(wù)隨機(jī)分配
[root@centos7 app]#rpcinfo -p
   program vers proto   port  service
    100000    4   tcp    111  portmapper  ---雖然這里的服務(wù)寫的是portmapper,但實(shí)際上是由rpcbind服務(wù)提供的,服務(wù)名沒有改過來,還是保留古老的名字,你可以把它當(dāng)成是rpcbind
    100000    3   tcp    111  portmapper
    100000    2   tcp    111  portmapper
    100000    4   udp    111  portmapper
    100000    3   udp    111  portmapper
    100000    2   udp    111  portmapper
    100024    1   udp  43647  status
    100005    1   udp  20048  mountd
    100024    1   tcp  43426  status
    100005    1   tcp  20048  mountd
    100005    2   udp  20048  mountd
    100005    2   tcp  20048  mountd
    100005    3   udp  20048  mountd
    100005    3   tcp  20048  mountd
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100227    3   tcp   2049  nfs_acl
    100003    3   udp   2049  nfs
    100003    4   udp   2049  nfs
    100227    3   udp   2049  nfs_acl
    100021    1   udp  50902  nlockmgr
    100021    3   udp  50902  nlockmgr
    100021    4   udp  50902  nlockmgr
    100021    1   tcp  38930  nlockmgr
    100021    3   tcp  38930  nlockmgr
    100021    4   tcp  38930  nlockmgr

2、配置防火墻

配置防火墻,開放NFS服務(wù)
配置NFS使用固定端口

vim /etc/sysconfig/nfs
RQUOTAD_PORT=875
LOCKD_TCPPORT=32803
LOCKD_UDPPORT=32769
MOUNTD_PORT=892
STATD_PORT=662
STATD_OUTGOING_PORT=2020

防火墻除開放上述端口,還需開放TCP和UDP的111和2049共4個(gè)端口,111是rpcbind服務(wù)的端口,2049是nfs主服務(wù)的端口

3、NFS配置文件

vim /etc/exports,/etc/exports.d/*.exports   ---注意如果使用副配置文件要以.exports結(jié)尾
/dir  主機(jī)1(opt1,opt2) 主機(jī)2(opt1,opt2)...
主機(jī)格式:
單個(gè)主機(jī):ipv4,ipv6,F(xiàn)QDN
IP networks:兩種掩碼格式均支持
172.18.0.0/255.255.0.0
172.18.0.0/16
wildcards:主機(jī)名通配,例如*.magedu.com,IP不可以
netgroups:NIS域的主機(jī)組,@group_name
*:表示所有遠(yuǎn)程客戶端都可以訪問這個(gè)共享目錄
選項(xiàng):
默認(rèn)選項(xiàng):(ro,sync,root_squash,no_all_squash)
ro,rw 只讀和讀寫
async異步,數(shù)據(jù)變化后不立即寫磁盤,性能高
sync(1.0.0后為默認(rèn))同步,數(shù)據(jù)在請(qǐng)求時(shí)立即寫入共享
no_all_squash (默認(rèn))保留共享文件的UID和GID
all_squash 所有遠(yuǎn)程用戶(包括root)都變成nfsnobody,有了這一項(xiàng),no_root_squash 就失效了
root_squash (默認(rèn))遠(yuǎn)程root映射為nfsnobody,UID為65534,早期版本是4294967294 (nfsnobody)
no_root_squash 遠(yuǎn)程root映射成root用戶,也就是不壓榨root,本機(jī)的root在遠(yuǎn)程共享的文件夾也是管理員。
anonuid和anongid 指明匿名用戶映射為特定用戶UID和組GID,而非nfsnobody,可配合all_squash使用,可以設(shè)置成壓榨為apache用戶去訪問共享資源,這樣將來可以用于web服務(wù)用的共享nfs
NFS配置示例
在/etc/exports文件中定義共享的目錄
/myshare server.example.com
/myshare *.example.com
/myshare server?.example.com
/myshare server[0-20].example.com
/myshare 172.25.11.10
/myshare 172.25.0.0/16
/myshare 2000:472:18:b51:c32:a21
/myshare 2000:472:18:b51::/64
/myshare *.example.com 172.25.0.0/16
/myshare desktop.example.com(ro)
/myshare desktop.example.com(ro) server[0-20].example.com(rw)
/myshare diskless.example.com(rw,no_root_squash

這個(gè)文件中規(guī)定了共享的目錄,以及哪些遠(yuǎn)程主機(jī)可以連接這個(gè)共享目錄,并指定權(quán)限等。
nfs服務(wù),當(dāng)客戶端以root身份去訪問nfs共享時(shí),默認(rèn)是壓榨(squash)為nfsnobody的身份去訪問共享資源,也就是在服務(wù)器端會(huì)看到客戶端上傳的文件的所有者和所屬組都是nfsnobody,權(quán)限降低了,但以普通用戶身份去訪問nfs共享時(shí),普通用戶在服務(wù)器端被映射成為id相同的用戶,如果服務(wù)器端沒有和客戶端id相同的用戶,則客戶端上傳的文件不顯示屬主和屬組,只顯示id號(hào)。

4、NFS工具

rpcinfo
rpcinfo -p 172.18.21.107 ---查看nfs服務(wù)的端口號(hào),后面加上IP地址可以查看遠(yuǎn)程主機(jī)的nfs服務(wù)的端口號(hào),不加也可以指的是查詢本機(jī)的
rpcinfo –s hostname 查看RPC注冊(cè)程序
exportfs,服務(wù)器端工具
–v 查看本機(jī)所有NFS共享
–r 重讀配置文件,讓配置文件生效,不用重啟服務(wù)
–a 輸出本機(jī)所有共享,也就是下面的選項(xiàng)停止后-a選項(xiàng)可以恢復(fù)共享
–au 停止本機(jī)所有共享
showmount -e 172.18.21.107 ---客戶端工具,可以查看遠(yuǎn)程主機(jī)有哪些目錄被共享
mount.nfs 掛載工具NFSv4支持通過掛載NFS服務(wù)器的共享“根”,從而瀏覽NFS服務(wù)器上的共享目錄列表
mount nfsserver:/ /mnt/nfs

5、客戶端NFS掛載

基于安全考慮,建議使用nosuid,nodev,noexec掛載選項(xiàng)
NFS相關(guān)的掛載選項(xiàng):
fg(默認(rèn))前臺(tái)掛載,bg后臺(tái)掛載
hard(默認(rèn))持續(xù)請(qǐng)求,soft 非持續(xù)請(qǐng)求
intr和hard配合,請(qǐng)求可中斷
rsize和wsize一次讀和寫數(shù)據(jù)最大字節(jié)數(shù),rsize=32768
_netdev無網(wǎng)絡(luò)不掛載
示例:

mount -o rw,nosuid,fg,hard,intr 172.18.0.1:/testdir /mnt/nfs/
開機(jī)自動(dòng)掛載
vim /etc/fstab
172.16.0.1:/public /mnt/nfs nfs defaults 0 0
mount -a  ---修改這個(gè)文件后執(zhí)行立即自動(dòng)掛載
指定nfs版本掛載
mount -o vers=3 172.18.0.1:/testdir /mnt/nfs/

6、自動(dòng)掛載

可使用autofs按需要掛載NFS共享,在空閑時(shí)自動(dòng)卸載
由autofs包提供
系統(tǒng)管理器指定由/etc/auto.master自動(dòng)掛載器守護(hù)進(jìn)程控制的掛載點(diǎn),自動(dòng)掛載監(jiān)視器訪問這些目錄并按要求掛載文件系統(tǒng),文件系統(tǒng)在失活的指定間隔5分鐘后會(huì)自動(dòng)卸載,比如神奇的目錄/misc/cd
參看幫助:man 5 autofs
支持含通配符的目錄名

示例
* server:/export/&   ---指將后面遠(yuǎn)程主機(jī)的目錄自動(dòng)掛載到前面的目錄中,遠(yuǎn)程主機(jī)共享目錄的basename和本機(jī)要掛載的目錄的basename相同
cat /etc/auto.master 
/net    -hosts    ---因?yàn)橛羞@一項(xiàng)設(shè)置所以在cd /net時(shí)會(huì)發(fā)現(xiàn)自動(dòng)進(jìn)入遠(yuǎn)程主機(jī)共享的目錄,不用掛載。
[root@centos6 app]#showmount -e 172.18.21.107
Export list for 172.18.21.107:
/app/homedir/zhenghome *
[root@centos6 app]#cd /net
[root@centos6 net]#ls
172.18.21.107
[root@centos6 net]#cd 172.18.21.107/
[root@centos6 172.18.21.107]#ls
app
[root@centos6 172.18.21.107]#cd app/
[root@centos6 app]#ls
homedir
發(fā)現(xiàn)不用掛載直接就可以進(jìn)入遠(yuǎn)程主機(jī)共享的目錄,也就是你在客戶端輸入 cd /net/172.18.21.107即可

7、實(shí)現(xiàn)zheng的家目錄nfs共享并自動(dòng)掛載

目的是實(shí)現(xiàn)zheng用戶登錄時(shí)進(jìn)入的家目錄不是在本機(jī)的磁盤,而是通過nfs共享的一個(gè)目錄,步驟如下

在nfs服務(wù)器上的操作
systemctl start nfs-server
rpcinfo -p    ---查看端口是否打開
mkdir /app/homedir/zhenghome -pv   ---創(chuàng)建一個(gè)目錄做為共享目錄給遠(yuǎn)程主機(jī)的zheng用戶做為家目錄使用
vim /etc/exports   ---修改配置文件,并將這個(gè)目錄共享出來
/app/homedir/zhenghome   *(rw)
exportfs -r   ---讓配置文件生效
cd /app/homedir/zhenghome/
touch f1
cp -r /etc/skel/.[^.]* .  ---因?yàn)檫@個(gè)目錄要做為家目錄使用,所以要將家目錄模板文件夾中的內(nèi)容拷貝過來,注意第一個(gè)是.第二個(gè)是非.,因?yàn)槿绻诙€(gè)是點(diǎn)的話可能把上一級(jí)目錄也拷貝過來了
setfacl -R -m u:zheng:rwx /app/homedir/zhenghome/  ---授權(quán)zhang用戶對(duì)這個(gè)目錄具有絕對(duì)控制權(quán)限,因?yàn)槭跈?quán)的是本機(jī)的zheng用戶,并沒有授權(quán)遠(yuǎn)程主機(jī)的zheng用戶,nfs服務(wù)是通過id判斷身份的,所以要將本機(jī)的zheng用戶和遠(yuǎn)程主機(jī)的zheng用戶的id和gid修改為相同的,這樣授權(quán)本機(jī)的zheng用戶就相當(dāng)于授權(quán)遠(yuǎn)程的zheng用戶了
id zheng  ---查看一下本機(jī)的zheng用戶的uid和gid為1000
在遠(yuǎn)程主機(jī)客戶端的操作
showmount -e 172.18.21.107  ---查看一下遠(yuǎn)程nfs服務(wù)共享的目錄
usermod -u 1000 zheng
groupmod -g 1000 zheng
id zheng   ---修改本機(jī)的zheng用戶的uid和gid為1000,這樣本機(jī)的zheng用戶才有權(quán)限
mount 172.18.21.107:/app/homedir/zhenghome /home/zheng
su - zheng   --切換到zheng用戶
pwd    ---發(fā)現(xiàn)有f1文件,說明共享成功。
實(shí)現(xiàn)自動(dòng)掛載
在遠(yuǎn)程客戶端的操作
rpm -q autofs  ---查看是否安裝此軟件包
vim /etc/auto.master 
/- /etc/test  ---表示自動(dòng)掛載的目錄由后面的文件決定
vim /etc/test   --創(chuàng)建一個(gè)配置文件,指明將后面目錄自動(dòng)掛載到前面的目錄下
/home/zheng -fstype=nfs,rw,nosuid,nodev 172.18.21.107:/app/homedir/zhenghome
service autofs restart 
[root@centos6 home]#cd /home/zheng  ---就可以像進(jìn)入/misc/cd 一樣,只要訪問這個(gè)目錄就會(huì)掛載
[root@centos6 zheng]#df
Filesystem           1K-blocks    Used Available Use% Mounted on
/dev/sda2             50264772 4891932  42812840  11% /
tmpfs                   502056      76    501980   1% /dev/shm
/dev/sda3             40185208   49060  38088148   1% /app
/dev/sda1               991512   34904    905408   4% /boot
/dev/sr0               6049912 6049912         0 100% /media/CDROM
172.18.21.107:/app/homedir/zhenghome
                      52403200   33024  52370176   1% /home/zheng

8、實(shí)現(xiàn)nfs偽根

NFSv4支持通過掛載NFS服務(wù)器的共享“根”,從而瀏覽NFS服務(wù)器上的共享目錄列表

在nfs服務(wù)器上的操作
[root@centos7 app]#mkdir /app/nfsdir1
[root@centos7 app]#mkdir /app/nfsdir2
[root@centos7 app]#mkdir /nfsroot/dir1
[root@centos7 app]#mkdir /nfsroot/dir2
[root@centos7 app]#mount -B /app/nfsdir1 /nfsroot/dir1
[root@centos7 app]#mount -B /app/nfsdir2 /nfsroot/dir2
vim /etc/fstab
/app/nfsdir1 /nfsroot/dir1  none bind 0 0
/app/nfsdir2 /nfsroot/dir2   none bind 0 0
[root@centos7 app]#vim /etc/exports.d/root.exports
/nfsroot *(rw,fsid=0,crossmnt)
/nfsroot/dir1 *(rw)
/nfsroot/dir2 *(ro)
[root@centos7 app]#exportfs -r
[root@centos7 app]#exportfs -v
在遠(yuǎn)程客戶端的操作
[root@centos6 172.18.21.107]#showmount -e 172.18.21.107
Export list for 172.18.21.107:
/nfsroot/dir2          *
/nfsroot/dir1          *
/nfsroot               *
/app/homedir/zhanghome *
[root@centos6 172.18.21.107]#mount 172.18.21.107:/ /mnt   ---在客戶端掛載的時(shí)候只需要掛載根就可以看到遠(yuǎn)程服務(wù)器上的共享目錄
[root@centos6 dir1]#cd /mnt
[root@centos6 mnt]#ls
dir1  dir2

實(shí)現(xiàn)偽根的作用是可以把nfs服務(wù)器上所有共享的目錄一次性的掛載到遠(yuǎn)程客戶端的一個(gè)目錄下,不必每個(gè)目錄單獨(dú)掛載,只需要掛載根即可。

9、NFS相關(guān)SELinux設(shè)置

CentOS7默認(rèn)SELinux 的布爾值nfs_export_all_ro和nfs_export_all_rw都啟用. 這允許NFS服務(wù)可以讀寫任意文件,基于安全考慮可關(guān)閉.
對(duì)于只讀的NFS目錄SELinux安全上下文件應(yīng)設(shè)為public_content_t或nfs_t.
對(duì)于讀寫的NFS目錄SELinux安全上下文件應(yīng)設(shè)為public_content_rw_t或nfs_tcontext,并且布爾值nfsd_anon_writeBoolean 必須啟用,以允許寫操作.
幫助參考nfsd_selinux(8)(selinux-policy-devel包)nfs(5),mount(8),mount.nfs(8),exportfs(8),exports(5), nfsd_selinux(8)

10、SAMBA服務(wù)簡(jiǎn)介

  • SMB:Server Message Block服務(wù)器消息塊,IBM發(fā)布,最早是DOS網(wǎng)絡(luò)文件共享協(xié)議
  • Cifs:common internet file system,微軟基于SMB發(fā)布
  • SAMBA:1991年Andrew Tridgell,實(shí)現(xiàn)windows和UNIX相通,也就是windows上的共享可以用linux登錄連接,linux上的共享可以用windows登錄連接。
  • SAMBA的功能:
    共享文件和打印,實(shí)現(xiàn)在線編輯
    實(shí)現(xiàn)登錄SAMBA用戶的身份認(rèn)證
    可以進(jìn)行NetBIOS名稱解析,NetBIOS名是windows的計(jì)算機(jī)名,比如你在windows運(yùn)行下輸入\jack,需要進(jìn)行解析成ip地址后才能進(jìn)入此共享,也可以額直接輸入ip地址\172.0.0.1\c
    外圍設(shè)備共享
  • 計(jì)算機(jī)網(wǎng)絡(luò)管理模式:
    工作組WORKGROUP:計(jì)算機(jī)對(duì)等關(guān)系,帳號(hào)信息各自管理
    域DOMAIN:C/S結(jié)構(gòu),帳號(hào)信息集中管理,DC,AD
  • 相關(guān)包:
    Samba 提供smb服務(wù)
    Samba-client 客戶端軟件
    samba-common 通用軟件
    cifs-utils smb客戶端工具
    samba-winbind和AD相關(guān)
  • 相關(guān)服務(wù)進(jìn)程:
    smbd:提供smb(cifs)服務(wù)TCP:139,445
    nmbd:提供NetBIOS名稱解析UDP:137,138,可以將windows的計(jì)算機(jī)名解析成ip地址,如果不用名字,用ip訪問,可以不啟動(dòng)這個(gè)服務(wù)
    主配置文件:/etc/samba/smb.conf ---來自于samba-common包
    幫助參看:man smb.conf
    語法檢查:testparm[-v] [/etc/samba/smb.conf]
    客戶端工具:smbclient,mount.cifs
    UNC(通用命名規(guī)范)路徑:在windows的運(yùn)行處輸入\127.0.0.1\test
    URL路徑:http://172.18.21.107/test

11、SAMBA服務(wù)器配置

vim /etc/samba/smb.conf
smb.conf繼承了.ini文件的格式,用[ ] 分成不同的部分
全局設(shè)置:
[global] 服務(wù)器通用或全局設(shè)置的部分
特定共享設(shè)置:
[homes] 用戶的家目錄共享
[printers] 定義打印機(jī)資源和服務(wù)
[sharename] 自定義的共享目錄配置
其中:#和;開頭的語句為注釋,大小寫不敏感
宏定義:
%m 客戶端主機(jī)的NetBIOS名 %M 客戶端主機(jī)的FQDN
%H 當(dāng)前用戶家目錄路徑 %U 當(dāng)前用戶用戶名
%g 當(dāng)前用戶所屬組 %h samba服務(wù)器的主機(jī)名
%L samba服務(wù)器的NetBIOS名 %I 客戶端主機(jī)的IP
%T 當(dāng)前日期和時(shí)間 %S 可登錄的用戶名
workgroup 指定工作組名稱
server string 主機(jī)注釋信息
netbiosname 指定NetBIOS名
nterfaces 指定服務(wù)偵聽接口和IP
hosts allow 可用“,” ,空格,或tab分隔,默認(rèn)允許所有主機(jī)訪問,也可在每個(gè)共享獨(dú)立配置,如在[global]設(shè)置,將應(yīng)用并覆蓋所有共享設(shè)置
IPv4 network/prefix: 172.25.0.0/24 IPv4前綴: 172.25.0.
注意要有后面的點(diǎn)
IPv4 network/netmask: 172.25.0.0/255.255.255.0
主機(jī)名: desktop.example.com
以example.com后綴的主機(jī)名: .example.com
示例:
hosts allow = 172.25.
hosts allow = 172.25. .example.com
hosts deny 拒絕指定主機(jī)訪問
config file = /etc/samba/conf.d/%U 設(shè)置成每個(gè)用戶有獨(dú)立的配置文件
log file = /var/log/samba/log.%m不同客戶機(jī)采用不同日志
log level = 2 設(shè)置日志的詳細(xì)程度,默認(rèn)是0
max log size = 50 日志文件達(dá)到50K,將輪循rotate,單位KB
security三種認(rèn)證方式:
share:匿名(CentOS7不再支持)
user:samba用戶(采有l(wèi)inux用戶,samba的獨(dú)立口令)
domain:使用DC(DOMAINCONTROLLER)認(rèn)證
passdb backend = tdbsam密碼數(shù)據(jù)庫(kù)格式

12、將windows的共享掛載到linux中

在windows中操作
創(chuàng)建一個(gè)共享目錄如下圖


image.png

在windows的命令行輸入以下命令可以看到共享的目錄


image.png

在linux中的操作
systemctl start smb
smbclient -L 172.18.254.200 -U zhangdazhi%123456---此工具為客戶端工具,可以查看windows共享和linuxsamba共享,其中zhangdazhi為windows開機(jī)的用戶名,123456為開機(jī)密碼,172.18.254.200為windows的ip地址
mkdir /mnt/winshare
mount -o username=zhangdazhi,password=123456 //172.18.254.200/testzhang /mnt/winshare   ---掛載windows目錄到linux一個(gè)目錄下

13、實(shí)現(xiàn)samba用戶

包:samba-common-tools ----在安裝samba包的時(shí)候會(huì)因依賴關(guān)系隨著一起安裝
工具:smbpasswd pdbedit
samba用戶須是Linux用戶,建議使用/sbin/nologin

添加samba用戶
smbpasswd -a <sysuser>  
pdbedit -a -u <sysuser>   ---這兩個(gè)命令都可以將系統(tǒng)用戶添加為samba用戶,后面的<sysuser>  為系統(tǒng)用戶
修改samba用戶密碼
smbpasswd <smbuser>   
刪除用戶和密碼:
smbpasswd –x <smbuser>
pdbedit –x –u <smbuser>  --以上兩個(gè)命令都可以
查看samba用戶列表:
/var/lib/samba/private/passdb.tdb
pdbedit –L –v     ---用-L就可以,加上-v顯示的詳細(xì)一些,是小寫的v
查看samba服務(wù)器狀態(tài)
smbstatus

示例:創(chuàng)建一個(gè)samba用戶,用windows和linux登錄

在samba服務(wù)器端操作
[root@centos7 samba]#systemctl start smb
[root@centos7 samba]#useradd -s /sbin/nologin smb1---創(chuàng)建一個(gè)系統(tǒng)賬號(hào)
[root@centos7 samba]#smbpasswd -a smb1---添加這個(gè)系統(tǒng)賬號(hào)為samba用戶,并設(shè)置密碼
[root@centos7 samba]#pdbedit -L
No builtin backend found, trying to load plugin
Module 'tdbsam' loaded
smb1:1004:   ---可以看到這個(gè)用戶
[root@centos7 samba]#cd /var/lib/samba/private/
[root@centos7 private]#ls
msg.sock  passdb.tdb  secrets.tdb
[root@centos7 private]#file passdb.tdb   ---這個(gè)用戶名和密碼被保存到這個(gè)數(shù)據(jù)庫(kù)文件中,因?yàn)槭嵌M(jìn)制的,所以看不了
passdb.tdb: TDB database version 6, little-endian hash size 131 bytes
在另外一臺(tái)遠(yuǎn)程主機(jī)客戶端的操作
[root@centos6 ~]#smbclient -L 172.18.21.107 -U smb1%1   ---可以查看一下遠(yuǎn)程samba服務(wù)器器又哪些共享目錄,smb1為samba的用戶名,1為密碼
Domain=[SAMBA] OS=[Windows 6.1] Server=[Samba 4.4.4]

    Sharename       Type      Comment
    ---------       ----      -------
    print$          Disk      Printer Drivers
    IPC$            IPC       IPC Service (Samba 4.4.4)
    smb1            Disk      Home Directories    ---發(fā)現(xiàn)smb1目錄被共享了
Domain=[SAMBA] OS=[Windows 6.1] Server=[Samba 4.4.4]

    Server               Comment
    ---------            -------
    CENTOS7              Samba 4.4.4

    Workgroup            Master
    ---------            -------
    SAMBA                CENTOS7
    WORKGROUP            HEBURN-PC
[root@centos6 ~]#smbclient //172.18.21.107/smb1 -U smb1%1  ---可以登錄到這個(gè)遠(yuǎn)程的samba共享,發(fā)現(xiàn)和登錄到ftp類似,連上傳和下載的命令都一樣
Domain=[SAMBA] OS=[Windows 6.1] Server=[Samba 4.4.4]
smb: \> pwd
Current directory is \\172.18.21.107\smb1\
smb: \> ls
  .                                   D        0  Sun Oct 15 22:08:43 2017
  ..                                  D        0  Sun Oct 15 21:53:58 2017
  .mozilla                           DH        0  Fri Jul 14 11:16:33 2017
  .bash_logout                        H       18  Wed Aug  3 00:00:07 2016
  .bash_profile                       H      193  Wed Aug  3 00:00:07 2016
  .bashrc                             H      231  Wed Aug  3 00:00:07 2016

        51175 blocks of size 1048576. 35719 blocks available
smb: \> put mbr   ---上傳一個(gè)文件,也可以輸入?,查看支持的命令
putting file mbr as \mbr (125.0 kb/s) (average 125.0 kb/s)
smb: \> ls
  .                                   D        0  Sun Oct 15 22:08:58 2017
  ..                                  D        0  Sun Oct 15 21:53:58 2017
  .mozilla                           DH        0  Fri Jul 14 11:16:33 2017
  .bash_logout                        H       18  Wed Aug  3 00:00:07 2016
  .bash_profile                       H      193  Wed Aug  3 00:00:07 2016
  .bashrc                             H      231  Wed Aug  3 00:00:07 2016
  mbr                                 A      512  Sun Oct 15 22:08:58 2017

        51175 blocks of size 1048576. 35719 blocks available
smb: \> quit

總結(jié):ftp不屬于文件系統(tǒng),nfs和samba服務(wù)都會(huì)提供文件系統(tǒng),nfs服務(wù)為nfs文件系統(tǒng),samba服務(wù)為cifs文件系統(tǒng),都可以掛載,使用起來比較方便,ftp不可以掛載,samba服務(wù)默認(rèn)是把家目錄共享的,創(chuàng)建一個(gè)samba用戶后登陸上去,在客戶端用smbclient命令會(huì)看到和用戶名同名的家目錄共享出來了。

14、配置目錄共享

每個(gè)共享目錄應(yīng)該有獨(dú)立的[ ]部分
[共享名稱] 遠(yuǎn)程網(wǎng)絡(luò)看到的共享名稱,不是文件夾名稱。
comment 注釋信息
path 所共享的目錄路徑
public 匿名用戶能否訪問共享,默認(rèn)no
browsable是否允許所有用戶瀏覽此共享,默認(rèn)為yes,no為隱藏,改為no后可以設(shè)置隱藏共享,客戶端用smbclient命令時(shí)看不到的。
writable=yes 可以被所有用戶讀寫,默認(rèn)為no
read only=no 和writable=yes等價(jià),如與以上設(shè)置沖突,放在后面的設(shè)置生效,默認(rèn)只讀
write list 三種形式:用戶,@組名,+組名,用,分隔
如writable=no,列表中用戶或組可讀寫,不在列表中用戶只讀
valid users 特定用戶才能訪問該共享,如為空,將允許所有用戶,用戶名之間用空格分隔
示例

服務(wù)器端操作
[root@centos7 etc]#mkdir /app/smbshare   ---創(chuàng)建一個(gè)共享目錄
[root@centos7 etc]#cd /app/smbshare/
[root@centos7 smbshare]#touch f1
[root@centos7 smbshare]#vim /etc/samba/smb.conf
[share]   ---共享目錄名
        comment = testshare   ---注釋信息
        path = /app/smbshare   ---共享目錄的路徑
        create mask = 0644  ----表示用戶在客戶端登錄后上傳文件的權(quán)限是0644
        writable = no    ----不可以寫
        write list = @smbusers   ---只有在這個(gè)組里的用戶才可以寫
[root@centos7 share2]#testparm ---用來檢查主配置文件的語法
[root@centos7 smbshare]#chomod 777 /app/smbshare/  ---設(shè)置目錄文件系統(tǒng)的權(quán)限
[root@centos7 smbshare]#useradd -s /sbib/nologin/ smb1
[root@centos7 smbshare]#useradd -s /sbib/nologin/ smb2
[root@centos7 smbshare]#useradd -s /sbib/nologin/ smb3
[root@centos7 smbshare]#smbpasswd -a smb1
[root@centos7 smbshare]#smbpasswd -a smb2
[root@centos7 smbshare]#smbpasswd -a smb3
[root@centos7 smbshare]#pdbedit -L   ---創(chuàng)建三個(gè)samba用戶
smb1:1004:
smb3:1006:
smb2:1005:
[root@centos7 smbshare]#groupadd smbusers  ---創(chuàng)建組
[root@centos7 smbshare]#gpasswd -a smb1smbusers
Adding user smb1 to group smbusers
[root@centos7 smbshare]#groupmems -a smb2 -g smbusers
[root@centos7 smbshare]#groupmems -l -g smbusers  ---將用戶加到組里
smb1  smb2 
客戶端操作
[root@centos6 ~]#smbclient -L 172.18.21.107    ---查看一下有哪些共享
[root@centos6 ~]#smbclient //172.18.21.107/share -U smb1%123   ---登錄到這個(gè)共享,可以上傳文件,注意這里是UNC路徑
[root@centos6 ~]#smbclient //172.18.21.107/share -U smb3%123   ---smb3不可以上傳,因?yàn)椴辉诮M里

centos7中在主配置文件中修改配置不需要重啟服務(wù)也可以生效。

15、實(shí)現(xiàn)客戶端不同的samba用戶登錄時(shí)訪問的共享目錄不同,但共享目錄的名字是相同的

創(chuàng)建好samba用戶smb2和smb3
vim /etc/samba/smb.conf
[global]
config file = /etc/samba/conf.d/%U   ---設(shè)置成每個(gè)用戶有單獨(dú)配置文件,%U表示文件名為samba用戶名
mkdir /etc/samba/conf.d
cd /etc/samba/conf.d
vim smb2
[share]
path=/app/share2/
comment=testshare2
vim smb3
[share]
path=/app/share3/
comment=testshare3
mkdir /app/share2
mkdir /app/share3
touch /app/share2/f2
touch /app/share3/f3
[root@centos6 ~]#smbclient -L 172.18.21.107 ---在客戶端是看不到共享的,只有登錄后才可以看到
Enter root's password: 
Anonymous login successful
Domain=[SAMBA] OS=[Windows 6.1] Server=[Samba 4.4.4]

    Sharename       Type      Comment
    ---------       ----      -------
    print$          Disk      Printer Drivers
    IPC$            IPC       IPC Service (Samba 4.4.4)
Anonymous login successful
Domain=[SAMBA] OS=[Windows 6.1] Server=[Samba 4.4.4]

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

    Workgroup            Master
    ---------            -------
[root@centos6 ~]#smbclient //172.18.21.107/share/ -U smb3%123
Domain=[WORKGROUP] OS=[Windows 6.1] Server=[Samba 4.4.4]
smb: \> ls
  .                                   D        0  Tue Oct 17 20:47:01 2017
  ..                                  D        0  Tue Oct 17 20:47:39 2017
  f3                                           0  Tue Oct 17 20:47:01 2017

        51175 blocks of size 1048576. 51142 blocks available
smb: \> quit
在客戶端訪問共享發(fā)現(xiàn)每個(gè)smb2和smb3訪問的目錄不同

16、掛載CIFS文件系統(tǒng)

smbclient -L 172.18.21.107 ---掛載之前先看一下有哪些共享
掛載的時(shí)候需要安裝mount.cifs工具,來自cifs-utils包
mount -t cifs -o username=smb1,password=123 //172.18.21.107/share /mnt
開機(jī)自動(dòng)掛載
vim /etc/fstab 
//172.18.21.107/share   /mnt   cifs    credentials=/etc/smb.txt 0 0
vim /etc/smb.txt  ---創(chuàng)建一個(gè)這樣的文件避免賬號(hào)和密碼泄露
username=smb1
password=123
chomd 600 /etc/smb.txt 
mount -a 
[root@centos6 ~]#cd /mnt
[root@centos6 mnt]#ll
total 4
-rw-r--r-- 1 root root   0 Oct 17  2017 f2
-rwxr--r-- 1 1005 1005 512 Oct 17  2017 mbr
在服務(wù)器端
[root@centos7 share2]#ll /app/share2
total 4
-rw-r--r-- 1 root root   0 Oct 17 20:46 f2
-rwxr--r-- 1 smb2 smb2 512 Oct 17 20:49 mbr
可以看到samba服務(wù)和nfs服務(wù)一樣,也是通過id號(hào)識(shí)別身份的

17、CentOS7中實(shí)現(xiàn)多用戶掛載

SAMBA共享默認(rèn)只支持同時(shí)用一個(gè)samba用戶掛載SMB共享,并且默認(rèn)情況下以哪個(gè)samba用戶掛載,訪問共享的權(quán)限由samba用戶的權(quán)限決定,不論登錄的是哪個(gè)系統(tǒng)賬號(hào),權(quán)限都由samba用戶權(quán)限決定的,CentOS7中可啟用多用戶掛載功能,客戶端掛載samba共享目錄后,在客戶端登錄的不同系統(tǒng)用戶訪問同一個(gè)samba的掛載點(diǎn),可獲得不同權(quán)限

一、samba服務(wù)器配置
yum install samba
systemctl start smb
systemctl enable smb
vim /etc/samba/smb.conf
[share]
        path = /app/share2
        comment = testshare2
        write list = smb1
        writable = no
此配置只有smb1可以寫,其他用戶都是只讀的權(quán)限
在服務(wù)器端創(chuàng)建samba用戶smb1,smb2,smb3
二、客戶端配置
yum install cifs-utils samba-client
smbclient -L 172.18.21.107
echo "smb1 smb2 smb3"|xargs -n1 useradd  ---創(chuàng)建三個(gè)系統(tǒng)賬號(hào)和samba賬號(hào)同名
vim /etc/fstab 
//172.18.21.107/share   /mnt/ cifs credentials=/etc/smb.txt,multuser 0 0
vim /etc/smb.txt   ---表示自動(dòng)掛載的時(shí)候以smb3的身份掛載
username=smb3
password=123
chmod 600 /etc/smb.txt
mount -a   ---以smb3身份掛載后應(yīng)該對(duì)這個(gè)共享目錄只有讀權(quán)限
[root@redhat7 ~]#cd /mnt
[root@redhat7 mnt]#ls
f1  f2  f3  f4  f6  ff  mbr
[root@redhat7 mnt]#touch f7  ---發(fā)現(xiàn)root用戶只能讀,和samba用戶smb3相同,因?yàn)榫褪且詓mb3的身份掛載的
touch: cannot touch ‘f7’: Permission denied
[root@redhat7 mnt]#su - smb1  
Last login: Tue Oct 17 22:29:44 CST 2017 on pts/0
[smb1@redhat7 ~]$cd /mnt
[smb1@redhat7 mnt]$ls   ---切換到smb1這個(gè)系統(tǒng)用戶后連看的權(quán)限都沒有了
ls: reading directory .: Permission denied
[smb1@redhat7 mnt]$cifscreds add 172.18.21.107   ---執(zhí)行這個(gè)命令會(huì)把系統(tǒng)賬號(hào)添加為samba賬號(hào)smb1
Password: 
[smb1@redhat7 mnt]$ls
f1  f2  f3  f4  f6  ff  mbr
[smb1@redhat7 mnt]$touch fff  ---因?yàn)榉?wù)器端設(shè)置的是samba賬號(hào)smb1有寫權(quán)限,所以可以寫
[smb1@redhat7 mnt]$ls
f1  f2  f3  f4  f6  ff  fff  mbr
[smb1@redhat7 mnt]$exit
logout
[root@redhat7 mnt]#su - smb2   ---切換為smb2這個(gè)系統(tǒng)賬號(hào)
Last login: Tue Oct 17 22:26:34 CST 2017 on pts/0
[smb2@redhat7 ~]$cifscreds add 172.18.21.107  ---添加系統(tǒng)用戶smb2為samba用戶smb2
Password: 
[smb2@redhat7 ~]$cd /mnt
[smb2@redhat7 mnt]$ls
f1  f2  f3  f4  f6  ff  fff  mbr
[smb2@redhat7 mnt]$touch ffff  ---因samba用戶smb2對(duì)這個(gè)目錄只有讀權(quán)限,所以只能讀,不能寫
touch: cannot touch ‘ffff’: Permission denied

通過上面的設(shè)置可以實(shí)現(xiàn)不同的系統(tǒng)用戶對(duì)于samba共享目錄具有不同的權(quán)限,而不是受掛載的samba用戶的權(quán)限的影響。

18、samba的相關(guān)SELinux配置

SMB共享目錄應(yīng)設(shè)為samba_share_t安全上下文
semanage fcontext -a -t samba_share_t  '/sharedpath(/.*)?'
restorecon -vvFR /sharedpath
SMB共享目錄安全上下文也可設(shè)public_content_t(只讀)和public_content_rw_t(讀寫).
要支持讀寫,SElinux布爾值smbd_anon_write必須啟用
如用SMB網(wǎng)絡(luò)共享samba服務(wù)器上的用戶家目錄,需在samba服務(wù)器上啟用布爾值samba_enable_home_dirs
如需掛載遠(yuǎn)程SMB目錄做為本地用戶家目錄,需在SMB客戶機(jī)上啟用布爾值use_samba_home_dirs

19、實(shí)驗(yàn):實(shí)現(xiàn)圖形化管理

一、在CentOS6(第二張光盤)上安裝包
yum install samba-swat samba
service samba start
二、配置swat服務(wù)
vim /etc/xinetd.d/swat
disable = no
only_from= 172.18.0.0/16  ---表示允許這個(gè)網(wǎng)段訪問
service xinetdre start
三、瀏覽器訪問管理
http://172.18.21.106:901 以root用戶和密碼登錄即可
這個(gè)功能只有在centos6中才有,centos7中已經(jīng)取消此功能
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容