1、NFS服務介紹
- NFS:Network File System 網絡文件系統(tǒng)舷夺,基于內核的文件系統(tǒng)猖辫。Sun公司開發(fā),通過使用NFS伍宦,用戶和程序可以像訪問本地文件一樣訪問遠端系統(tǒng)上的文件芽死,基于RPC(Remote Procedure Call Protocol遠程過程調用)實現,rpc就是客戶端在執(zhí)行某個程序的時候次洼,執(zhí)行中途會調用遠程服務器上的一個程序关贵,然后再返回原程序繼續(xù)執(zhí)行的過程。
- NFS優(yōu)勢:節(jié)省本地存儲空間卖毁,將常用的數據如:home目錄,存放在一臺NFS服務器上且可以通過網絡訪問揖曾,那么本地終端將可以減少自身存儲空間的使用。
- NFS是一個文件系統(tǒng)亥啦,遠程主機可以掛載nfs服務器上共享的這個nfs文件系統(tǒng)的文件
- 軟件包:nfs-utils
Kernel支持:nfs.ko - 端口:2049(nfsd), 其它端口由rpcbind(111)分配
- 配置文件:/etc/exports,/etc/exports.d/*.exports
CentOS7不支持同一目錄同時用nfs和samba共享炭剪,因為使用鎖機制不同 - 相關軟件包:rpcbind(必須),tcp_wrappers
CentOS6開始portmap進程由rpcbind代替翔脱,rpcbind服務用于管理nfs服務的端口奴拦,它可以給nfs各服務分配端口并記錄下來,客戶端不是直接去訪問nfs届吁,因為nfs服務由很多服務組成错妖,并且各個服務的端口不是固定的绿鸣,所以客戶端首先去訪問rpcbind服務的111端口,通過rpcbind服務找到nfs服務的各個端口暂氯,所以安裝nfs服務的同時要安裝rpcbind服務才可以潮模,centos6上要把rpcbind服務也要設置成開機啟動,不然啟動了nfs服務也沒用株旷,客戶端找不到端口再登,centos7中可以不設置成開機啟動,因為centos7中有獨特的功能晾剖,在開啟nfs服務的同時會把依賴的服務rpcbind服務同時開啟锉矢。 - NFS服務主要進程:
NFS服務由很多進程組成,在開啟主進程的時候會把相應的進程也開啟
rpc.nfsd最主要的NFS進程齿尽,管理客戶端是否可登錄
rpc.mountd掛載和卸載NFS文件系統(tǒng)沽损,包括權限管理
rpc.lockd非必要,管理文件鎖循头,避免同時寫出錯
rpc.statd非必要绵估,檢查文件一致性,可修復文件 - 日志:/var/lib/nfs/
-開啟nfs服務
centos6中啟動服務
service rpcbind start
chkconfig rpcbind on
service nfs start
chkconfig nfs on
centos7中啟動服務
systemctl start nfs-server
systemctl enable nfs-server
rpcinfo -p ---查看nfs服務打開的端口號卡骂,除了nfs的主服務端口為2049外国裳,其他端口都是由rpcbind服務隨機分配
[root@centos7 app]#rpcinfo -p
program vers proto port service
100000 4 tcp 111 portmapper ---雖然這里的服務寫的是portmapper,但實際上是由rpcbind服務提供的全跨,服務名沒有改過來缝左,還是保留古老的名字,你可以把它當成是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服務
配置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個端口,111是rpcbind服務的端口挪钓,2049是nfs主服務的端口
3是越、NFS配置文件
vim /etc/exports,/etc/exports.d/*.exports ---注意如果使用副配置文件要以.exports結尾
/dir 主機1(opt1,opt2) 主機2(opt1,opt2)...
主機格式:
單個主機:ipv4,ipv6碌上,FQDN
IP networks:兩種掩碼格式均支持
172.18.0.0/255.255.0.0
172.18.0.0/16
wildcards:主機名通配倚评,例如*.magedu.com,IP不可以
netgroups:NIS域的主機組馏予,@group_name
*:表示所有遠程客戶端都可以訪問這個共享目錄
選項:
默認選項:(ro,sync,root_squash,no_all_squash)
ro,rw 只讀和讀寫
async異步蔓纠,數據變化后不立即寫磁盤,性能高
sync(1.0.0后為默認)同步吗蚌,數據在請求時立即寫入共享
no_all_squash (默認)保留共享文件的UID和GID
all_squash 所有遠程用戶(包括root)都變成nfsnobody腿倚,有了這一項,no_root_squash 就失效了
root_squash (默認)遠程root映射為nfsnobody,UID為65534蚯妇,早期版本是4294967294 (nfsnobody)
no_root_squash 遠程root映射成root用戶敷燎,也就是不壓榨root暂筝,本機的root在遠程共享的文件夾也是管理員。
anonuid和anongid 指明匿名用戶映射為特定用戶UID和組GID硬贯,而非nfsnobody,可配合all_squash使用焕襟,可以設置成壓榨為apache用戶去訪問共享資源,這樣將來可以用于web服務用的共享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
這個文件中規(guī)定了共享的目錄饭豹,以及哪些遠程主機可以連接這個共享目錄鸵赖,并指定權限等。
nfs服務拄衰,當客戶端以root身份去訪問nfs共享時它褪,默認是壓榨(squash)為nfsnobody的身份去訪問共享資源,也就是在服務器端會看到客戶端上傳的文件的所有者和所屬組都是nfsnobody翘悉,權限降低了茫打,但以普通用戶身份去訪問nfs共享時垛贤,普通用戶在服務器端被映射成為id相同的用戶差凹,如果服務器端沒有和客戶端id相同的用戶,則客戶端上傳的文件不顯示屬主和屬組枉氮,只顯示id號制市。
4抬旺、NFS工具
rpcinfo
rpcinfo -p 172.18.21.107 ---查看nfs服務的端口號,后面加上IP地址可以查看遠程主機的nfs服務的端口號祥楣,不加也可以指的是查詢本機的
rpcinfo –s hostname 查看RPC注冊程序
exportfs开财,服務器端工具
–v 查看本機所有NFS共享
–r 重讀配置文件,讓配置文件生效荣堰,不用重啟服務
–a 輸出本機所有共享床未,也就是下面的選項停止后-a選項可以恢復共享
–au 停止本機所有共享
showmount -e 172.18.21.107 ---客戶端工具竭翠,可以查看遠程主機有哪些目錄被共享
mount.nfs 掛載工具NFSv4支持通過掛載NFS服務器的共享“根”振坚,從而瀏覽NFS服務器上的共享目錄列表
mount nfsserver:/ /mnt/nfs
5、客戶端NFS掛載
基于安全考慮斋扰,建議使用nosuid,nodev,noexec掛載選項
NFS相關的掛載選項:
fg(默認)前臺掛載渡八,bg后臺掛載
hard(默認)持續(xù)請求,soft 非持續(xù)請求
intr和hard配合传货,請求可中斷
rsize和wsize一次讀和寫數據最大字節(jié)數屎鳍,rsize=32768
_netdev無網絡不掛載
示例:
mount -o rw,nosuid,fg,hard,intr 172.18.0.1:/testdir /mnt/nfs/
開機自動掛載
vim /etc/fstab
172.16.0.1:/public /mnt/nfs nfs defaults 0 0
mount -a ---修改這個文件后執(zhí)行立即自動掛載
指定nfs版本掛載
mount -o vers=3 172.18.0.1:/testdir /mnt/nfs/
6、自動掛載
可使用autofs按需要掛載NFS共享问裕,在空閑時自動卸載
由autofs包提供
系統(tǒng)管理器指定由/etc/auto.master自動掛載器守護進程控制的掛載點逮壁,自動掛載監(jiān)視器訪問這些目錄并按要求掛載文件系統(tǒng),文件系統(tǒng)在失活的指定間隔5分鐘后會自動卸載粮宛,比如神奇的目錄/misc/cd
參看幫助:man 5 autofs
支持含通配符的目錄名
示例
* server:/export/& ---指將后面遠程主機的目錄自動掛載到前面的目錄中窥淆,遠程主機共享目錄的basename和本機要掛載的目錄的basename相同
cat /etc/auto.master
/net -hosts ---因為有這一項設置所以在cd /net時會發(fā)現自動進入遠程主機共享的目錄卖宠,不用掛載。
[root@centos6 app]#showmount -e 172.18.21.107
Export list for 172.18.21.107:
/app/homedir/zhanghome *
[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ā)現不用掛載直接就可以進入遠程主機共享的目錄忧饭,也就是你在客戶端輸入 cd /net/172.18.21.107即可
7扛伍、實現zhang的家目錄nfs共享并自動掛載
目的是實現zhang用戶登錄時進入的家目錄不是在本機的磁盤,而是通過nfs共享的一個目錄词裤,步驟如下
在nfs服務器上的操作
systemctl start nfs-server
rpcinfo -p ---查看端口是否打開
mkdir /app/homedir/zhanghome -pv ---創(chuàng)建一個目錄做為共享目錄給遠程主機的zhang用戶做為家目錄使用
vim /etc/exports ---修改配置文件刺洒,并將這個目錄共享出來
/app/homedir/zhanghome *(rw)
exportfs -r ---讓配置文件生效
cd /app/homedir/zhanghome/
touch f1
cp -r /etc/skel/.[^.]* . ---因為這個目錄要做為家目錄使用,所以要將家目錄模板文件夾中的內容拷貝過來吼砂,注意第一個是.第二個是非.逆航,因為如果第二個是點的話可能把上一級目錄也拷貝過來了
setfacl -R -m u:zhang:rwx /app/homedir/zhanghome/ ---授權zhang用戶對這個目錄具有絕對控制權限,因為授權的是本機的zhang用戶帅刊,并沒有授權遠程主機的zhang用戶纸泡,nfs服務是通過id判斷身份的,所以要將本機的zhang用戶和遠程主機的zhang用戶的id和gid修改為相同的赖瞒,這樣授權本機的zhang用戶就相當于授權遠程的zhang用戶了
id zhang ---查看一下本機的zhang用戶的uid和gid為1000
在遠程主機客戶端的操作
showmount -e 172.18.21.107 ---查看一下遠程nfs服務共享的目錄
usermod -u 1000 zhang
groupmod -g 1000 zhang
id zhang ---修改本機的zhang用戶的uid和gid為1000女揭,這樣本機的zhang用戶才有權限
mount 172.18.21.107:/app/homedir/zhanghome /home/zhang
su - zhang --切換到zhang用戶
pwd ---發(fā)現有f1文件,說明共享成功栏饮。
實現自動掛載
在遠程客戶端的操作
rpm -q autofs ---查看是否安裝此軟件包
vim /etc/auto.master
/- /etc/test ---表示自動掛載的目錄由后面的文件決定
vim /etc/test --創(chuàng)建一個配置文件吧兔,指明將后面目錄自動掛載到前面的目錄下
/home/zhang -fstype=nfs,rw,nosuid,nodev 172.18.21.107:/app/homedir/zhanghome
service autofs restart
[root@centos6 home]#cd /home/zhang ---就可以像進入/misc/cd 一樣,只要訪問這個目錄就會掛載
[root@centos6 zhang]#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/zhanghome
52403200 33024 52370176 1% /home/zhang
8袍嬉、實現nfs偽根
NFSv4支持通過掛載NFS服務器的共享“根”境蔼,從而瀏覽NFS服務器上的共享目錄列表
在nfs服務器上的操作
[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
在遠程客戶端的操作
[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 ---在客戶端掛載的時候只需要掛載根就可以看到遠程服務器上的共享目錄
[root@centos6 dir1]#cd /mnt
[root@centos6 mnt]#ls
dir1 dir2
實現偽根的作用是可以把nfs服務器上所有共享的目錄一次性的掛載到遠程客戶端的一個目錄下,不必每個目錄單獨掛載伺通,只需要掛載根即可箍土。
9、NFS相關SELinux設置
CentOS7默認SELinux 的布爾值nfs_export_all_ro和nfs_export_all_rw都啟用. 這允許NFS服務可以讀寫任意文件罐监,基于安全考慮可關閉.
對于只讀的NFS目錄SELinux安全上下文件應設為public_content_t或nfs_t.
對于讀寫的NFS目錄SELinux安全上下文件應設為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服務簡介
- SMB:Server Message Block服務器消息塊沟堡,IBM發(fā)布,最早是DOS網絡文件共享協(xié)議
- Cifs:common internet file system矢空,微軟基于SMB發(fā)布
- SAMBA:1991年Andrew Tridgell,實現windows和UNIX相通航罗,也就是windows上的共享可以用linux登錄連接,linux上的共享可以用windows登錄連接屁药。
- SAMBA的功能:
共享文件和打印粥血,實現在線編輯
實現登錄SAMBA用戶的身份認證
可以進行NetBIOS名稱解析,NetBIOS名是windows的計算機名,比如你在windows運行下輸入\jack,需要進行解析成ip地址后才能進入此共享复亏,也可以額直接輸入ip地址\172.0.0.1\c
外圍設備共享 - 計算機網絡管理模式:
工作組WORKGROUP:計算機對等關系绢彤,帳號信息各自管理
域DOMAIN:C/S結構,帳號信息集中管理蜓耻,DC,AD - 相關包:
Samba 提供smb服務
Samba-client 客戶端軟件
samba-common 通用軟件
cifs-utils smb客戶端工具
samba-winbind和AD相關 - 相關服務進程:
smbd:提供smb(cifs)服務TCP:139,445
nmbd:提供NetBIOS名稱解析UDP:137,138茫舶,可以將windows的計算機名解析成ip地址,如果不用名字刹淌,用ip訪問饶氏,可以不啟動這個服務
主配置文件:/etc/samba/smb.conf ---來自于samba-common包
幫助參看:man smb.conf
語法檢查:testparm[-v] [/etc/samba/smb.conf]
客戶端工具:smbclient,mount.cifs
UNC(通用命名規(guī)范)路徑:在windows的運行處輸入\127.0.0.1\test
URL路徑:http://172.18.21.107/test
11、SAMBA服務器配置
vim /etc/samba/smb.conf
smb.conf繼承了.ini文件的格式有勾,用[ ] 分成不同的部分
全局設置:
[global] 服務器通用或全局設置的部分
特定共享設置:
[homes] 用戶的家目錄共享
[printers] 定義打印機資源和服務
[sharename] 自定義的共享目錄配置
其中:#和;開頭的語句為注釋疹启,大小寫不敏感
宏定義:
%m 客戶端主機的NetBIOS名 %M 客戶端主機的FQDN
%H 當前用戶家目錄路徑 %U 當前用戶用戶名
%g 當前用戶所屬組 %h samba服務器的主機名
%L samba服務器的NetBIOS名 %I 客戶端主機的IP
%T 當前日期和時間 %S 可登錄的用戶名
workgroup 指定工作組名稱
server string 主機注釋信息
netbiosname 指定NetBIOS名
nterfaces 指定服務偵聽接口和IP
hosts allow 可用“,” ,空格蔼卡,或tab分隔喊崖,默認允許所有主機訪問,也可在每個共享獨立配置雇逞,如在[global]設置荤懂,將應用并覆蓋所有共享設置
IPv4 network/prefix: 172.25.0.0/24 IPv4前綴: 172.25.0.
注意要有后面的點
IPv4 network/netmask: 172.25.0.0/255.255.255.0
主機名: desktop.example.com
以example.com后綴的主機名: .example.com
示例:
hosts allow = 172.25.
hosts allow = 172.25. .example.com
hosts deny 拒絕指定主機訪問
config file = /etc/samba/conf.d/%U 設置成每個用戶有獨立的配置文件
log file = /var/log/samba/log.%m不同客戶機采用不同日志
log level = 2 設置日志的詳細程度,默認是0
max log size = 50 日志文件達到50K塘砸,將輪循rotate,單位KB
security三種認證方式:
share:匿名(CentOS7不再支持)
user:samba用戶(采有l(wèi)inux用戶节仿,samba的獨立口令)
domain:使用DC(DOMAINCONTROLLER)認證
passdb backend = tdbsam密碼數據庫格式
12、將windows的共享掛載到linux中
在windows中操作
創(chuàng)建一個共享目錄如下圖
在windows的命令行輸入以下命令可以看到共享的目錄
在linux中的操作
systemctl start smb
smbclient -L 172.18.254.200 -U zhangdazhi%123456---此工具為客戶端工具掉蔬,可以查看windows共享和linuxsamba共享廊宪,其中zhangdazhi為windows開機的用戶名,123456為開機密碼,172.18.254.200為windows的ip地址
mkdir /mnt/winshare
mount -o username=zhangdazhi,password=123456 //172.18.254.200/testzhang /mnt/winshare ---掛載windows目錄到linux一個目錄下
13女轿、實現samba用戶
包:samba-common-tools ----在安裝samba包的時候會因依賴關系隨著一起安裝
工具:smbpasswd pdbedit
samba用戶須是Linux用戶箭启,建議使用/sbin/nologin
添加samba用戶
smbpasswd -a <sysuser>
pdbedit -a -u <sysuser> ---這兩個命令都可以將系統(tǒng)用戶添加為samba用戶,后面的<sysuser> 為系統(tǒng)用戶
修改samba用戶密碼
smbpasswd <smbuser>
刪除用戶和密碼:
smbpasswd –x <smbuser>
pdbedit –x –u <smbuser> --以上兩個命令都可以
查看samba用戶列表:
/var/lib/samba/private/passdb.tdb
pdbedit –L –v ---用-L就可以蛉迹,加上-v顯示的詳細一些傅寡,是小寫的v
查看samba服務器狀態(tài)
smbstatus
示例:創(chuàng)建一個samba用戶,用windows和linux登錄
在samba服務器端操作
[root@centos7 samba]#systemctl start smb
[root@centos7 samba]#useradd -s /sbin/nologin smb1---創(chuàng)建一個系統(tǒng)賬號
[root@centos7 samba]#smbpasswd -a smb1---添加這個系統(tǒng)賬號為samba用戶婿禽,并設置密碼
[root@centos7 samba]#pdbedit -L
No builtin backend found, trying to load plugin
Module 'tdbsam' loaded
smb1:1004: ---可以看到這個用戶
[root@centos7 samba]#cd /var/lib/samba/private/
[root@centos7 private]#ls
msg.sock passdb.tdb secrets.tdb
[root@centos7 private]#file passdb.tdb ---這個用戶名和密碼被保存到這個數據庫文件中赏僧,因為是二進制的大猛,所以看不了
passdb.tdb: TDB database version 6, little-endian hash size 131 bytes
在另外一臺遠程主機客戶端的操作
[root@centos6 ~]#smbclient -L 172.18.21.107 -U smb1%1 ---可以查看一下遠程samba服務器器又哪些共享目錄扭倾,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ā)現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 ---可以登錄到這個遠程的samba共享,發(fā)現和登錄到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 ---上傳一個文件膛壹,也可以輸入?,查看支持的命令
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
總結:ftp不屬于文件系統(tǒng)模聋,nfs和samba服務都會提供文件系統(tǒng)肩民,nfs服務為nfs文件系統(tǒng),samba服務為cifs文件系統(tǒng)链方,都可以掛載持痰,使用起來比較方便,ftp不可以掛載祟蚀,samba服務默認是把家目錄共享的工窍,創(chuàng)建一個samba用戶后登陸上去,在客戶端用smbclient命令會看到和用戶名同名的家目錄共享出來了前酿。
14患雏、配置目錄共享
每個共享目錄應該有獨立的[ ]部分
[共享名稱] 遠程網絡看到的共享名稱,不是文件夾名稱罢维。
comment 注釋信息
path 所共享的目錄路徑
public 匿名用戶能否訪問共享淹仑,默認no
browsable是否允許所有用戶瀏覽此共享,默認為yes,no為隱藏,改為no后可以設置隱藏共享肺孵,客戶端用smbclient命令時看不到的匀借。
writable=yes 可以被所有用戶讀寫,默認為no
read only=no 和writable=yes等價平窘,如與以上設置沖突怀吻,放在后面的設置生效,默認只讀
write list 三種形式:用戶初婆,@組名蓬坡,+組名,用,分隔
如writable=no磅叛,列表中用戶或組可讀寫屑咳,不在列表中用戶只讀
valid users 特定用戶才能訪問該共享,如為空弊琴,將允許所有用戶兆龙,用戶名之間用空格分隔
示例
服務器端操作
[root@centos7 etc]#mkdir /app/smbshare ---創(chuàng)建一個共享目錄
[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 ----表示用戶在客戶端登錄后上傳文件的權限是0644
writable = no ----不可以寫
write list = @smbusers ---只有在這個組里的用戶才可以寫
[root@centos7 share2]#testparm ---用來檢查主配置文件的語法
[root@centos7 smbshare]#chomod 777 /app/smbshare/ ---設置目錄文件系統(tǒng)的權限
[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)建三個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 ---登錄到這個共享,可以上傳文件敲董,注意這里是UNC路徑
[root@centos6 ~]#smbclient //172.18.21.107/share -U smb3%123 ---smb3不可以上傳紫皇,因為不在組里
centos7中在主配置文件中修改配置不需要重啟服務也可以生效。
15腋寨、實現客戶端不同的samba用戶登錄時訪問的共享目錄不同聪铺,但共享目錄的名字是相同的
創(chuàng)建好samba用戶smb2和smb3
vim /etc/samba/smb.conf
[global]
config file = /etc/samba/conf.d/%U ---設置成每個用戶有單獨配置文件,%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ā)現每個smb2和smb3訪問的目錄不同
16铃剔、掛載CIFS文件系統(tǒng)
smbclient -L 172.18.21.107 ---掛載之前先看一下有哪些共享
掛載的時候需要安裝mount.cifs工具撒桨,來自cifs-utils包
mount -t cifs -o username=smb1,password=123 //172.18.21.107/share /mnt
開機自動掛載
vim /etc/fstab
//172.18.21.107/share /mnt cifs credentials=/etc/smb.txt 0 0
vim /etc/smb.txt ---創(chuàng)建一個這樣的文件避免賬號和密碼泄露
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
在服務器端
[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服務和nfs服務一樣,也是通過id號識別身份的
17键兜、CentOS7中實現多用戶掛載
SAMBA共享默認只支持同時用一個samba用戶掛載SMB共享凤类,并且默認情況下以哪個samba用戶掛載,訪問共享的權限由samba用戶的權限決定普气,不論登錄的是哪個系統(tǒng)賬號谜疤,權限都由samba用戶權限決定的,CentOS7中可啟用多用戶掛載功能现诀,客戶端掛載samba共享目錄后茎截,在客戶端登錄的不同系統(tǒng)用戶訪問同一個samba的掛載點,可獲得不同權限
一赶盔、samba服務器配置
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可以寫企锌,其他用戶都是只讀的權限
在服務器端創(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)建三個系統(tǒng)賬號和samba賬號同名
vim /etc/fstab
//172.18.21.107/share /mnt/ cifs credentials=/etc/smb.txt,multuser 0 0
vim /etc/smb.txt ---表示自動掛載的時候以smb3的身份掛載
username=smb3
password=123
chmod 600 /etc/smb.txt
mount -a ---以smb3身份掛載后應該對這個共享目錄只有讀權限
[root@redhat7 ~]#cd /mnt
[root@redhat7 mnt]#ls
f1 f2 f3 f4 f6 ff mbr
[root@redhat7 mnt]#touch f7 ---發(fā)現root用戶只能讀,和samba用戶smb3相同烘浦,因為就是以smb3的身份掛載的
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這個系統(tǒng)用戶后連看的權限都沒有了
ls: reading directory .: Permission denied
[smb1@redhat7 mnt]$cifscreds add 172.18.21.107 ---執(zhí)行這個命令會把系統(tǒng)賬號添加為samba賬號smb1
Password:
[smb1@redhat7 mnt]$ls
f1 f2 f3 f4 f6 ff mbr
[smb1@redhat7 mnt]$touch fff ---因為服務器端設置的是samba賬號smb1有寫權限抖坪,所以可以寫
[smb1@redhat7 mnt]$ls
f1 f2 f3 f4 f6 ff fff mbr
[smb1@redhat7 mnt]$exit
logout
[root@redhat7 mnt]#su - smb2 ---切換為smb2這個系統(tǒng)賬號
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對這個目錄只有讀權限,所以只能讀闷叉,不能寫
touch: cannot touch ‘ffff’: Permission denied
通過上面的設置可以實現不同的系統(tǒng)用戶對于samba共享目錄具有不同的權限擦俐,而不是受掛載的samba用戶的權限的影響。
18握侧、samba的相關SELinux配置
SMB共享目錄應設為samba_share_t安全上下文
semanage fcontext -a -t samba_share_t '/sharedpath(/.*)?'
restorecon -vvFR /sharedpath
SMB共享目錄安全上下文也可設public_content_t(只讀)和public_content_rw_t(讀寫).
要支持讀寫蚯瞧,SElinux布爾值smbd_anon_write必須啟用
如用SMB網絡共享samba服務器上的用戶家目錄,需在samba服務器上啟用布爾值samba_enable_home_dirs
如需掛載遠程SMB目錄做為本地用戶家目錄品擎,需在SMB客戶機上啟用布爾值use_samba_home_dirs
19埋合、實驗:實現圖形化管理
一、在CentOS6(第二張光盤)上安裝包
yum install samba-swat samba
service samba start
二萄传、配置swat服務
vim /etc/xinetd.d/swat
disable = no
only_from= 172.18.0.0/16 ---表示允許這個網段訪問
service xinetdre start
三甚颂、瀏覽器訪問管理
http://172.18.21.106:901 以root用戶和密碼登錄即可
這個功能只有在centos6中才有,centos7中已經取消此