文件服務
文件服務:
應用層:ftp
內核級網絡文件系統:nfs
會話層的協議
跨平台的網絡文件系統:cifs(samba)
網絡存儲:
NAS:網絡附加存儲,文件系統級別的接口,共享存儲的解決方案
SAN:存儲取余網絡,磁盤級別的塊設備(要先分區)iscsi基於Internet的scsi
在專業級別的存儲設備上提供遠程服務
rpc遠程過程調用
ftp:文件傳輸協議,基於tcp協議,21端口
奇葩
c/s架構協議 c <--> s 通過socket 三次握手四次揮手
命令連接
數據連接:客戶端的命令通過一個tcp連接傳輸過去,服務端收到命令,將結果,打開另一個連接回話發送回去
數據連接不止一個
數據連接與命令連接有狀態關系
有關聯關系:related,一個連接與另一個連接有說不清道不明的關系
數據傳輸模式:
文本格式: ssh
二進制格式: https
xml擴展語言,重量級語言 多30%的網絡和存儲開銷
數據連接:
主動模式:服務端主動連接客戶端,通過20號端口連接客戶端命令用的端口號+1,如果被占用,繼續往下搜索知道知道一個
問題:有防火牆,防火牆在客戶端可以讓請求出去,相應的響應進來,但是外來的請求是被拒絕的
於是出來了被動模式
被動模式:客戶端使用隨機端口連接服務端某隨機端口,客戶端發送請求後,服務端通過命令連接發送一個響應報文給客戶端,包括了兩個號112,123 意思是前邊的數值112*256+123=端口號 前邊的號要小於256(應為端口號1-65535,256*256)
又有問題,服務器的防火牆呢,服務器的防火牆,開放自己的服務,把一直的提供服務的端口開放,別的全都封閉,類似白名單
協議安全:明文;認證時傳輸的賬號密碼是明文
ftps:ftp over ssl
sftp:ftp over ssh
端起碗來吃肉,放下筷子罵娘
世事洞明皆學問人情練達即文章
S:serv-U(Windows)
C:
CLI:ftp lftp curl
GUI:filezilla flashfxp cute gftp
S:開源解決方案
vsftpd:
主程序:vsftpd
配置文件:/etc/vsftp.conf
/usr/lib/systemd/system/vsftp.service
.target
路徑映射:默認的根目錄/var/ftp
配置文件vsftpd:
用戶三類:
匿名用戶:ftp 家目錄:/var/ftp
系統用戶:
虛擬用戶:類似httpd basic的用戶
用戶通過ftp協議服務訪問到的根路徑時用戶自己的家目錄,默認可以在自己有權限的地方切換,禁锢用戶於其家目錄中
配置文件:/etc/vsftpd/vsftpd.conf
directory value
注意:directory一定一定要頂格,前面不能有任何字符,包括空格
匿名用戶
匿名用戶上傳,想改配置文件upload,在改目標目錄的權限,訪問控制列表也行,但是記得千萬不要改/var/ftp的權限,還有布爾值,開放上傳後,不能刪除,應為不是同一個權限,也不能創建目錄,想開放的話要去配置文件把注釋掉的mkdir更改,想刪除要在下邊加一個,把mkdir改成other
系統用戶
系統用戶:local_enable本地用戶,默認允許上傳,創建,刪除
不能讓root連接ftp,因為是明文的,需要額外的法則協同實現配置文件ftpusers,所有添加進這個文件的都不能訪問ftp
限制全部用戶
chroot-local-users =yes 將本地用戶禁锢在家目錄中;需要事先取出用戶對家目錄的寫權限
禁锢列表裡的用戶,同樣要去寫權限
chroot-list-file=yes
chroot-file-list=/etc/vsftpd/chroot_list
在裡邊加上用戶名
傳輸日志
xferlog_enable=yes 默認啟用,但是沒有文件的話還是不行
xferlog_file=/path/to/file 指明日志文件是哪個
最好還是不要啟用傳輸日志,會非常大,除非做了日志滾動
更改匿名用戶上傳文件的默認屬組屬主
chown_uploads=yse
chown_username=whoever
超時時長
idle_connection_timeout=#
data_..................=#
listen=NO,啟用後將作為獨立守護進程監聽在ipv4的端口上
pam_service_name=vsftpd 文件名/etc/pam.d目錄下
是不是啟用用戶列表:pam實現的
userlist_enable=yes 啟用user―list文件控制登錄
userlist_deny=no|yes 控制userlist是白名單還是黑名單,默認是黑名單
tcp_wrapper=yes iptables時候說
虛擬用戶:除了系統用戶之外的字符串,作為用戶登錄登錄時候用戶名和密碼
虛擬用戶要映射一個系統用戶
首先啟用來賓賬號
guest_enable=yes
制定映射用戶
guest_username=vusers
用戶賬號存儲
文件,mysql等能存數據的地方都可以
認證功能托管給pam,要想讓vsftp使用虛擬用戶,要看pam支不支持虛擬用戶
基於何種服務存儲用戶信息,對存儲服務的適配靠pam實現
pam_mysql:pam-mysql c7要編譯安裝
mariadb-server,mariadb-devel,pam-devel
pam模塊地址/usr/lib64/security下
make && make install
創建數據庫授權用戶,創建賬號和文秘
首先是創建數據庫,然後創建授權用戶,創建相關的表
在pam.d下創建文件 vsftpd.vhost(一個賬戶有兩行,上下都一樣,只是開頭的auth和account不一樣,有幾個用戶就寫幾*2行)
auth required /usr/lib64/security/pam_mysql.so user=vsftpd passwd=mageedu host=127.0.1 db==vsftp table=users usercolumn=name passwdcolumn=passwd crypt=0
account required /usr/lib64/security/pam_mysql.so user=vsftpd passwd=mageedu host=127.0.1 db==vsftp table=users usercolumn=name passwdcolumn=passwd crypt=0
日志文件/var/log/secure
配置vsftpd,添加或修改以下選項pam_server,guest的兩個
pam_service_name=vsftpd.vhost
guest_enable=YES
guest_username=mgmg
虛擬用戶的寫權限要要通過匿名用戶一樣的指令來定義,要是想要不同的權限怎麼辦,編輯配置文件vsftpd.conf,加一行
user_config_fir=目錄
然後到裡邊編輯兩個文件,anon_upload_enable
anon_mkdir_write_enable=yes
anon_other_write_enable
=yes
7月19號上午最後30分鐘
nfs
監聽在tcp 2049端口
只能基於來源主機的IP地址做驗證
用於監聽端口的服務來實現驗證
nis
網絡信息服務,主要提供認證功能,但是傳輸是不加密的,不安全
ldap
輕量級目錄訪問服務,協議,功能與nis相似,讀性能高很多,但是寫性能差,仍然是明文
ldaps
ldap over ssl/tls 取代nis的原因,可以加密
異步模型:一件事做著,突然調用別的數據,調用後不管調用結不結束對方在不在,自己該干什麼接著干什麼干什麼
輔助類:rpc,portmapper
rpc.mounted 認證
rpc.locked 加鎖
rpc.stated 狀態追蹤
如何構建一台nfs-server y以c7為例
yum -y install nfs-utils
systemctl start nfs 啟動
編輯配置文件/etc/exports 或者編輯/etc/exports.d/* 定義共享
是個路徑 /PATH/TO/SOMADIR client客戶端地址clients1_export_options [cilients(export_options)。。]多個空格隔開
建議導出的是本地的文件系統,獨立的某個分區,但是,是目錄也無所謂
知名客戶端地址的方式
單主機 single host ipv4 ipv6 FQDN
網絡地址 address/netmask
知己名統配 *.magedu.com
域內的主機組 @groupname
匿名 anonymous 使用*匹配所有組
通用選項
ro:只讀
rw:讀寫權限訪問允許
sync/async:同步/異步
no subtree check :不檢查子樹
用戶id映射
root_squash:壓縮root用戶,一般只講root映射為nfsbody,默認的
no_root_squash:不壓縮
all_squash:全部壓縮
anonuid and anongid:將壓縮的用戶映射為此處指定的用戶,將uid和gid改成想要的
exportfs -ar 將所有目錄重新導出
-au 將所有的導出目錄關閉
-v 詳細信息
-o 重新定義導出選項
事例:
mkdir /data/shared
vim /etc/exports
/data/shared 172.16.7.7
exportfs -ar
mount -t nfs/mount.nfs servername:/path/to/share /path/to/mount_point
mount.nfs 172.16.100.67:/data/shared /mydata
showmount 顯示nfs怪哉信息
-e IP地址 查看制定主機上游那些文件系統可以掛載可以被多個客戶端掛載使用
7月19下午 第一節課最後
博客作業
實踐作業:
1.使用nfs server 導出/data/application在目錄中提供wordpress
2.nfs client 掛載此導出的文件系統至/var/www/html
3.客戶端(lamp)部署wordpress,並讓其正常訪問,確保能正常發文件上傳照片
4.客戶端2(lamp),掛載nfs server 導出的問價系統只/var/www/html;驗證其wordpress是否可被訪問,要確保能正常發文章
實踐作業:
1.nfs server 導出/data/目錄
2.nfs client 掛載/data/至本地的mysqld或mariadb服務的數據設置為/mydata,要求服務能正常啟動
samba:跨平台共享文件系統 linux--Windows
功能:文件系統共享
打印機共享
netBIOS協議:網絡基本輸出系統
點到點 peer/peer (workgroup model)
domain model
安裝使用samba
服務端
yum -y install samba(服務端)
與Windows samba-dc
客戶端 samba-client
主程序 smbd
nmbd :netBIOS
主配置文件 /etc/samba/smb.conf samba-common提供
Unit file smb.service
nmb.service
監聽端口:137/udp 138/udp
139/tcp 445/tcp
啟動服務的時候連個都要啟動
客戶端
smbclient:類似於lftp,交互模式下put,get文件
mount.cifs:掛載cifs文件系統的專用命令
samba配置
smb.conf ini風格
兩類配置端
全局配置
1.網絡相關:
workgroup:加入的網絡組
netBIOS name:定義本地的netBIOS名字
interfaces=lo eht0|ip/netmask監聽的地址,eth0上所有地址
hosts allow=:白名單
2.日志相關
log file :日志文件
max log size :日志回滾大小
3.獨立運行服務器standalone
security = user :安全級別,控制安全的嚴格程度
user:任何人來了必須提供賬號密碼,samba的用戶必須是系統用戶,密碼不是shadow的密碼samba自我獨立管理的密碼
share:匿名共享
server:讓第三方服務器認證
domain:使用DC認證;基於kerberos協議進行
passdb backend=tdbsam :定義上邊的密碼文件的格式
4.printing options 打印相關 了解
load printers:是不是加載打印機
cups options:一般使用raw格式,一般不用修改
共享文件系統配置 三類
homes:為每個samba用戶(本地用戶)定義其是否能夠訪問通過samba服務訪問自己的家目錄
printers:定義打印服務
shared file system:共享服務定義
指令:
comment:共享的注釋信息
browseable:是不是可以浏覽,是否可被用戶查看(ls可見)
path:定義當前共享所映射的文件路徑
guest ok:是否允許來賓匿名賬號訪問
public:是不是公開給所有的用戶
wirtable:是不是可寫
write list:擁有寫權限的列表
wirte list= user1 user2
用戶名
@組名
+組名 組內成員都有寫權限
自己如何定義一個共享,以及定義的的共享是不是可以使用
[developers]--------------要用[]括起來
comment=develop tools
path=/data/tools
browseable=yes
guest ok=yes
writable=yes
samba自帶的測試工具
顯示目標有哪些共享
smbclient -L 172.16.100.68 -U name(省略即匿名)
samba用戶的管理
smbpasswd [options] username
-a:添加
-x:刪除
-e:啟用
-d:禁用
-h:幫助
pdbedit
-h:幫助
-L:列出samba中的所有用戶和id號
-a:添加
-u username 一起用 -a -u username
-x:刪除
-u username
-t:--passwd-from-stdin,從標准輸入接受密碼,類似passwd --stdin
smbclient //samba_server/share_name -U username
權限即要有共享權限也要有文件權限
smbstatus smb信息 用戶啊之類的
-b:簡要格式信息
-v:更加詳細的信息
mount.cifs //172.16.100.68/developers /tools -o username=centos,passwd=magedu
將遠程共享文件掛載到本機
但是要注意用戶權限的問題,root什麼都干不了,同名的也是,但是同id的什麼都能干
注意:掛載訪問的時候,你的當前用戶無論是什麼,都會被samba識別成你所掛載的用戶,比如我拿root掛載developers的時候,-o的選項的用戶是centos,所以即便我是拿root掛載,但是samba識別的我的身份呢還是centos
本文出自 “博客作業初版” 博客,謝絕轉載!