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è)共享目錄如下圖

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

在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)取消此功能