Day10 samba&NFS(Enginner04)
1.1 用途
為客戶機提供共享使用的文件夾
1.2 協議
1.2.1 SMB協議
SMB(Server Message Block)服務器消息塊
端口:139/tcp
1.2.2 CIFS協議
CIFS(Common Internet File System)通用網際文件系統
端口tcp/445
1.3 帳號體系
帳號體系與linux系統賬戶有很大的關聯
samba的共享帳號和linux系統帳號名字相同、但密碼不同
1.3.1 賬戶默認禁止本地登陸
useradd harry -s /sbin/nologin
1.4 搭建samba服務準備工作
1.4.1 yum -y install samba
安裝samba軟件包
1.4.2 useradd username -s /sbin/nologin
創建samba共享帳號
useradd harry -s /sbin/nologin
useradd kenji -s /sbin/nologin
useradd chihiro -s /sbin/nologin
1.4.3 pdbedit -a username
把系統賬戶添加到samba的賬戶數據庫,並且修改密碼
pdbedit -a harry
pdbedit -a kenji
pdbedit -a chihiro
1.4.4 pdbedit -L
列出所有有效的samba賬戶
1.4.5 /etc/samba/smb.conf
samba的主配置文件
字段解釋:
[global]
workgroup = 工作組名 #windows專用
[homes] #家目錄共享
[printer] #打印機共享
[共享名]
path = 要共享的文件夾絕對路徑
browseable = yes #no為隱藏共享
read only = yes #yes為只讀
write list = user #允許寫入的用戶
valid users = username #有效的用戶
1.5 搭建samba只讀共享
1.5.1 修改配置文件
89行,修改workgroup為STAFF
追加到配置文件的最後
[common]
path = /common
hosts allow = 172.25.0.0/24
1.5.2 重啟服務並設置開機自啟動
systemctl restart smb
systemctl enable smb
1.5.3 yum -y install samba-client
安裝smaba客戶端軟件
1.5.4 smbclient -L //172.25.0.11
列出172.25.0.11上共享的目錄
1.5.5 smbclient -U harry //172.25.0.11/common
這個包可裝可不裝。連接\172.25.0.11,進入交互式界面,對\172.25.0.11\common目錄的內容進行操作
1.5.6 getsebool -a
查看受SELinux管理的服務布爾值的開關狀態
1.5.7 setsebool -P samba_export_all_ro=on
設置SELinux管理的samba服務,它的samba_export_all_ro這個值為on的狀態。即對該項功能的開關,需要加-P選項才能永久生效
1.5.8 mount -o ro,user=harry,pass=123 //172.25.0.11/common /mnt/samba
臨時掛載服務器的共享文件夾到/mnt/samba
1.5.9 yum -y install cifs-utils
安裝cifs軟件包
1.5.10 echo "//172.25.0.11/common /mnt/samba cifs user=harry,pass=123,_netdev 0 0" >>/etc/fstab
_netdev這個參數很重要,它表示是一個網絡設備,必須等網絡服務啟動之後再掛載
永久掛載共享目錄
1.5.11 mount -a
測試掛載配置是否正確
1.5.12 df -hT
測試掛載是否正常
1.6 搭建samba讀寫的共享
客戶端訪問服務端不正常的排錯思路:
1.防火墻是否限制
2.服務本身的訪問控制
3.SELinux是否限制
4.服務端目錄是否有權限
1.6.1 修改配置文件
追加到文件最後
[devops]
path = /devops
write list = chihiro
1.6.2 創建目錄及測試文件
mkdir /devops
echo dev >/devops/te.txt
1.6.3 systemctl restart smb
重啟samba服務
1.6.4 setsebool samba_export_all_rw=on
設置samba的讀寫功能為開啟(on)
在共享目錄中嘗試創建文件,還是提示權限不足。原因是服務端本地目錄對chihiro用戶沒有寫的權限
1.6.5 setfacl -m u:chihiro:rwx /devops/
單獨為chihiro用戶添加/devops目錄的讀寫權限
1.7 samba多用戶訪問
管理員一次掛載,客戶端可以臨時切換身份對共享目錄做寫操作
1.7.1 echo ‘//172.25.0.11/devops /mnt/dev cifs user=kenji,pass=123,_netdev,multiuser,sec=ntlmssp 0 0‘ >>/etc/fstab
客戶端:
掛載mnt目錄。
修改user為kenji
增加multiuser,sec=ntlmssp參數
1.7.2 su - student
客戶端:
切換到普通用戶
1.7.3 cifscreds add -u chihiro 172.25.0.11
客戶端:
切換到chihiro的身份,訪問/mnt/dev,可以執行讀寫操作
1.8 排錯
故障現象:
mount -a
mount error(13): Permission denied
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
可能原因:
server沒有使用pdbedit添加samba用戶
故障現象:
掛載成功後無法創建文件
可能原因:
server samba共享的目錄沒用setfacl分配寫權限
server的setsebool沒打開samba_export_all_rw=on
二、配置NFS共享
2.1 概述
為客戶機提供共享使用的文件夾
2.2 協議
2.2.1 NFS協議
NFS(Network File System)網絡文件系統
端口:2049/TCP、2049/UDP
2.2.2 RPC協議
RPC(Remote Process Call)遠程進程調用
端口:111/TCP、111/UDP
2.3 所需軟件包
nfs-utils
2.4 服務名稱
nfs-server
2.5 搭建只讀NFS服務
2.5.1 /etc/exports
NFS的配置文件
echo "/public 172.25.0.0/24(ro)" >>/etc/exports
服務端設置共享目錄
2.5.2 systemctr restart nfs-server
重啟NFS服務
2.5.3 echo "172.25.0.11:/public /mnt/nfs nfs _netdev 0 0" >>/etc/fstab
添加nfs掛載
2.6 搭建讀寫NFS服務
2.6.1 echo "/protected 172.25.0.0/24(rw)" >>/etc/exports
服務端設置可讀寫的共享目錄
2.6.2 systemctl restart nfs-server
服務端重啟NFS服務
2.6.3 echo "172.25.0.11:/protected /mnt/protected nfs _netdev 0 0" >>/etc/fstab
客戶端添加NFS掛載配置文件
2.6.4 mount -a
掛載測試
2.6.5 讀寫測試
touch /mnt/protected/aaa.txt
2.6.6 no_root_squash參數
不壓榨root用戶權限,即允許root在nfs共享裏面創建的文件還是屬於root用戶,而不是屬於nfsnobody用戶
/abc 172.25.0.0/24(rw,no_root_squash)
2.6.7 普通用戶訪問NFS
當客戶端的普通用戶訪問服務端時,服務端會映射成本地相同uid的用戶,然後查找是否存在相同uid的用戶。如果有,那麽就以本地用戶的身份去訪問文件夾;如果沒有,直接拒絕
2.7 搭建安全的NFS共享
2.7.1 lab nfskrb5 setup
初始化服務端和客戶端的ldap環境
2.7.2 LDAP和kerberos
LDAP:網絡用戶,提供用戶名
Kerberos:密碼驗證。一次密碼認證,多次免密登陸
生產環境中會用LDAP驗證用戶名,再用kerberos驗證密碼。
用戶首次訪問時,找LDAP驗證用戶名,驗證通過後再找kerberos驗證密碼。全部驗證通過後,kerberos會給用戶頒發令牌(token)
當用戶再次訪問時,找LDAP驗證用戶名,驗證通過後。服務端發現有token,就不再去找kerberos,直接放行
2.7.3 下載kerberos的密鑰文件
服務端:
wget -O /etc/krb5.keytab http://172.25.254.254/pub/keytabs/server0.keytab
客戶端:
wget -O /etc/krb5.keytab http://172.25.254.254/pub/keytabs/desktop0.keytab
2.7.4 在/etc/exports增加sec=krb5p參數
服務端:
mkdir -p /protected/project
chown ldapuser0 /protected/project
ls -l /protected/project
echo "/protected 172.25.0.0/24(rw,sec=krb5p)" >>/etc/exports
2.7.5 systemctl restart nfs-secure-server nfs-server
服務端:重啟安全nfs服務及nfs服務
2.7.6 echo ‘172.25.0.11:/protected /mnt/nfssecure nfs sec=krb5p,_netdev 0 0‘ >>/etc/fstab
客戶端:
mkdir /mnt/nfssecure
ls -l /mnt/nfssecure
tail -1 /etc/fstab
2.7.7 systemctl restart nfs-secure
客戶端:重啟nfs-secure服務
2.7.8 mount -a
客戶端:掛載測試
2.7.9 df -hT
客戶端:查看掛載
2.7.10 ssh [email protected]
遠程登陸server0
touch /protected/project/ldfile.txt
2.8 排錯
2.8.1 客戶端沒啟動nfs-secure服務
mount -a
mount.nfs: an incorrect mount option was specified
2.8.2 客戶端沒有/etc/krb5.keytab密鑰文件
mount -a
mount.nfs: access denied by server while mounting 172.25.0.11:/protected
Day10 samba&NFS(Enginner04)