-
I/O:網絡、存儲
-
存儲:
-
DAS:Direct Attached Storage
接口類型:“block”;只有塊設備才能夠進行分區格式化
設備:SATA,SAS;IDE,SCSI;USB; -
NAS:Network Attached Storage(網絡附加存儲)
接口類型:”file”
協議:CIFS(samba), NFS(Network File System)
RPC: Remote Procedure Call -
SAN:Storage Area Network(存儲區域網絡)
接口類型:”block”,
協議:iSCSI(IP-SAN), FCSAN, FCoE,
-
DAS:Direct Attached Storage
-
存儲:
ftp
-
ftp:file transfer protocol,文件傳輸協議 ;
- 命令連接:傳輸命令(客戶端發給服務端的命令),服務端的21/tcp
-
數據連接:傳輸數據(傳輸數據時建立,數據傳輸完拆除)
-
主動模式:PORT
Server: 20/tcp連接客戶端的命令連接使用的端口向后的第一個可用端口; -
被動模式:PASV
Server:(當進行命令連接時,告訴客戶端,)服務端打開一個隨機端口,并等待客戶端連接
-
主動模式:PORT
-
PAM:Pluggable Authenticate Module(插入式認證模塊)
- pam中的模塊每一種提供一種認證功能或認證檢查功能;配置文件在/etc/pam.d/
- pam是一種認證框架,自己不需要認證功能,可以幫其他應用程序提供認證服務;為每一種應用程序提供庫文件;
- 高度模塊化;
- ftp默認是使用pam進行認證的;
-
ftp協議:C/S
-
Server:
- Windows: Serv-U, IIS, Filezilla
- 開源:wuftpd, proftpd, pureftpd, vsftpd(Very Secure FTP daemon),Filezilla, …
-
Client:
- Windows:ftp, Filezilla, CuteFTP, FlashFXP, …
-
開源:lftp, ftp, Filezilla, gftp, …
多數web瀏覽器同樣支持FTP
-
Server:
vsftpd
vsftpd is a Very Secure FTP daemon. It was written completely from scratch.
-
URL:
- SCHEME://username:password@HOST:PORT/PATH/TO/FILE
- 路徑映射:每個用戶的URL的/映射到當前用戶的家目錄 ;
-
vsftpd以ftp用戶的身份運行進程,默認認用戶即為ftp用戶,匿名用戶的默認路徑即ftp用戶的家目錄/var/ftp
- ftp,anonymous 也可以作為用戶名使用;默認匿名登錄只有下載、查看下載的權限,
-
示例:確定用戶對應的ftp的默認路徑為用戶家目錄
~]# lftp -u magedu 172.16.251.168 Password: lftp magedu@172.16.251.168:~> pwd ftp://magedu@172.16.251.168/%2Fhome/magedu ~]# finger magedu Login: magedu Name: magedu Directory: /home/magedu Shell: /bin/bash
-
共享服務的檢查:
- 遠程登錄的賬號有沒有本地文件系統的權限
- 共享權限:ftp在配置中可以配置是否擁有共享權限
注意:一個用戶通過文件共享服務訪問文件系統上的文件的生效權限為此二者的交集;
-
程序環境:
- 主程序:/usr/sbin/vsftpd
- 主配置文件:/etc/vsftpd/vsftpd.conf
- 數據根目錄:/var/ftp
-
Systemd Unit File: /usr/lib/systemd/system/vsftpd.service
-
/usr/lib/systemd/system/vsftpd.service 作為獨立守護來運行
/usr/lib/systemd/system/vsftpd.target 作為托管到systemd上的時候運行
配置vsftpd:
-
用戶類別:
- 匿名用戶:anonymous –> 用戶:ftp, 家目錄映射為:/var/ftp
-
系統用戶: 至少禁止系統用戶訪問ftp服務,/etc/vsftpd/ftpusers,PAM(/etc/pam.d/vsftpd);
/etc/pam.d/vsftpd –> /etc/pam.d/password-auth –> pam_unix.so(此模塊說明是根據/etc/passwd、/etc/shadow來完成認證的) -
虛擬用戶:非系統用戶,用戶賬號非為可登錄操作系統的用戶賬號(非/etc/passwd);
-
用戶通過vsftpd服務訪問到的默認路徑,是用戶自己的家目錄;默認可以自己有權限訪問的所有路徑間切換;
禁錮用戶于其家目錄中;
-
配置文件:/etc/vsftpd/vsftpd.conf
-
語法格式:
directive value
指令的種類:布爾型參數、數值型參數、字符型參數
注意:directive之前不能有多余字符,頂格寫;
-
語法格式:
-
匿名用戶:
anonymous_enable=YES 是否支持匿名登錄 anon_upload_enable=YES 上傳文件 anon_mkdir_write_enable=YES 創建目錄 anon_other_write_enable=YES 定義除了創建文件、創建目錄以外的權限 anon_umask=077
-
示例:
-
擁有文件系統權限:
~]# mkdir /var/ftp/upload ~]# chown ftp.ftp /var/ftp/upload/ drwxr-xr-x. 2 ftp ftp 6 Jun 5 21:50 upload
-
擁有共享上傳權限:
vi /etc/vsftpd/vsftpd.conf 啟用:anon_upload_enable=YES ~]# systemctl restart vsftpd.service
-
上傳文件:
~]# ll /var/ftp/upload/ -rw-------. 1 ftp ftp 23 Jun 5 22:06 issue
默認上傳的文件的權限是600,可以修改;
文件的屬主、屬組,默認是用戶本身;修改:chown_uploads
注意:關閉iptables、selinux
-
擁有文件系統權限:
-
示例:
系統用戶:
local_enable=YES 啟用本地用戶 write_enable=YES 是否本地用戶擁有寫權限,寫權限包括:upload,mkidr,other local_umask=022
-
輔助配置文件/etc/vsftpd/ftpusers;
~]# cat /etc/pam.d/vsftpd auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed 列在此文件中的用戶 均禁止使用ftp服務;
-
chroot_local_user=YES
禁錮所有本地用戶于其家目錄;需要事先去除用戶對家目錄的寫權限; -
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list;此文件默認不存在得事先創建禁錮列表中文件存在的用戶于其家目錄中;需要事先去除用戶對家目錄的寫權限;
-
傳輸日志:
xferlog_enable=YES
xferlog_file=/var/log/xferlog
xferlog_std_format=YES -
守護進程的類型:
- standalone:獨立守護進程;由服務進程自行監聽套按字,并接收用戶訪問請求;
-
transient:瞬時守護進程;由受托管方代為監聽套按字,服務進程沒有訪問請求時不啟動;當托管方收到訪問請求時,才啟動服務進程;
-
CentOS 6:xinetd獨立守護進程, /etc/xinetd.d/,
CentOS 7:由systemd代為監聽;
-
CentOS 6:xinetd獨立守護進程, /etc/xinetd.d/,
-
控制可登錄vsftpd服務的用戶列表:
-
userlist_enable=YES
啟用/etc/vsftpd/user_list文件來控制可登錄用戶; -
userlist_deny=
YES:意味著此為黑名單;默認
NO:白名單;
-
userlist_enable=YES
-
上傳下載速率:
-
anon_max_rate=0
local_max_rate=0
-
anon_max_rate=0
-
并發連接數限制:
-
max_clients=2000
max_per_ip=50
-
max_clients=2000
-
輔助配置文件/etc/vsftpd/ftpusers;
-
虛擬用戶:
-
用戶賬號存儲于何處?
文件、MySQL、Redis、… -
vsftpd:認證功能托管給pam;
基于何種存儲服務來存儲用戶信息,以及對存儲服務的驅動要靠pam實現; -
虛擬賬號同匿名賬號一樣也得映射成一個系統賬號
在mysql中啟用一個來賓賬號 -
使用mysql安裝配置vsftp的虛擬用戶:
1、# yum install -y mariadb-devel pam-devel 2、# yum groupinstall -y "Development Tools" "Server Platform Development" 真實需要的是:gcc ,為解決依賴關系安裝包組 3、pam_mysql: lftp 172.16.0.1:/pub/Sources/sources/pam> mget pam_mysql-0.7RC1.tar.gz tar xf pam_mysql-0.7RC1.tar.gz cd pam_mysql-0.7RC1 # ./configure --with-pam=/usr --with-mysql=/usr --with-pam-mods-dir=/usr/lib64/security # make && make install pam模塊存放路徑:/usr/lib64/security ;查看pam-mysql是否安裝成功 4、vim /etc/my.cnf.d/server.cnf [mysqld] skip_name_resolve=ON innodb_file_per_table=ON log_bin=mysql-bin 5、systemctl start mariadb.service 6、創建數據庫、授權用戶、創建賬號和密碼; 在mysql中創建一個用戶,為了安全只授予查詢權限 GRANT SELCET ON vsftpd.* TO vsftpd@'127.0.0.1' IDENTIFIED BY 'vsftpd'; FLUSH PRIVILEGES; 創建數據庫 CREATE DATABASE vsftpd; 創建表 CREATE TABLE users(id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,name VARCHAR(100) NOT NULL,password CHAR(48) NOT NULL,UNIQUE KEY(name)); 查看確認 插入用戶 INSERT INTO users(name,password) VALUES ('tom',PASSWORD('magedu')),('jerry',PASSWORD('jerry')); SELECT * FROM users; 7、添加用戶 mkdir /ftproot/ useradd -d /ftproot/vuser vuser 將/ftproot/vuser當作vuser用戶登錄ftp后的根目錄 chmod a-w /ftproot/vuser/ mkdir /ftproot/vuser/pub 8、配置vsftpd,添加或修改以下選項:編輯/etc/vsftpd/vsftpd.conf pam_service_name=vsftpd.vusers #與/etc/pam.d/vsftpd.vusers文件相對應就行 guest_enable=YES guest_username=vuser # 映射虛擬賬號,此賬號為映射后的本地系統賬號 9、創建配置文件:/etc/pam.d/vsftpd.vusers # README中有編輯格式,注意:用戶信息屬于mysql用戶 auth required /usr/lib64/security/pam_mysql.so user=vsftpd passwd=vsftpd host=127.0.0.1 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2 account required /usr/lib64/security/pam_mysql.so user=vsftpd passwd=vsftpd host=127.0.0.1 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2 10、重啟vsftpd.service 11、其他系統登錄驗證是否可以訪問ftp 12、虛擬用戶的寫權限,通過匿名一樣的指令進行定義;還能實現不同的用戶有不同的權限; vim /etc/vsftpd/vsftpd.conf user_config_dir=/etc/vsftpd/vusers_config/ mkdir /etc/vsftpd/vusers_config/ 每個用戶創建相對應的配置文件,實現特定的權限 vim /etc/vsftpd/vusers_config/tom anon_upload_enable=YES vim /etc/vsftpd/vusers_config/jerry anon_upload_enable=YES anon_mkdir_write_enable=YES
-
nfs
-
nfs: Network File System
-
nis:Network Information Service;
ldap:lightweight directory access protocol; ldap over ssl/tls;
-
nis:Network Information Service;
- nfsd: 2049/tcp
-
nfs服務器將本地磁盤的API改變成能夠通過套接字遠程調用的API;
-
rpc: remote procedure call
輔助類的服務:rpc, portmapper rpc:遠程過程調用,-
rpc.mountd:認證;
因為rpc端口是半隨機的,客戶端先連接rpc server,得到rpc mountd的所在端口后;再去連接rpc mountd,得到令牌后再去連接nfs; -
rpc.lockd:加鎖;
避免同時讀寫時發生沖突 -
rpc.statd:狀態;
狀態通知
-
rpc.mountd:認證;
-
NFS Server:
- nfs-utils
-
/etc/exports或/etc/exports.d/*
在這些文件中定義共享,把哪些目錄共享給哪些客戶端以哪些權限來訪問-
/PATH/TO/SOME_DIR clients1(export_options, …) clients2(export_options, …)
-
clients:
single host:ipv4, ipv6, FQDN; network:address/netmask, 支持長短格式的掩碼; wildcards:主機名通配,例如:*.magedu.com; netgroups:NIS域內的主機組;@group_name; anonymous:使用*通配所有主機;
-
Options:
General Options: ro:只讀 rw:讀寫; sync:同步; async:異步; secure:客戶端端口小于1024,否則就要使用insecure選項; User ID Mapping: root_squash:壓縮root用戶,一般指將其映射為nfsnobody; no_root_squash:不壓縮root用戶; all_squash:壓縮所有用戶; anonuid and anongid:將壓縮的用戶映射為此處指定的用戶;
-
clients:
-
/PATH/TO/SOME_DIR clients1(export_options, …) clients2(export_options, …)
-
NFS Client:
mount -t nfs servername:/path/to/share /path/to/mount_point [-rvVwfnsh ] [-o options]
-
showmount – show mount information for an NFS server
showmount -e NFS_SERVER_IP: 查看指定的nfs server上導出的所有文件系統; showmount -a:在nfs server上查看nfs服務的所有客戶端列表;
-
exportfs
-r:重新導出;
-a:所有文件系統;
-v:詳細信息;
-u:取消導出文件系統;# exportfs -ar # exportfs -au
samba:
smb: Service message block
cifs: common internet filesystem
-
samba:Andrew Tridgell;
-
功能:
文件系統共享;
打印機共享;
NetBIOS協議;
-
功能:
-
程序環境:
-
服務端程序包:samba,samba-common, samba-libs
Server and Client software to interoperate with Windows machines. - 主配置文件:/etc/samba/smb.conf, 由samba-common包提供;
-
主程序:
- nmbd:NetBIOS name server
- smbd:SMB/CIFS services
-
Unit File:
- smb.service
- nmb.service
-
監聽的端口:
- 137/udp, 138/udp
- 139/tcp, 445/tcp
-
服務端程序包:samba,samba-common, samba-libs
-
主配置文件的配置段:
-
~ ]# grep -E -i “#(====| —)” /etc/samba/smb.conf
#======================= Global Settings ===================================== # ----------------------- Network-Related Options ------------------------- # --------------------------- Logging Options ----------------------------- # ----------------------- Standalone Server Options ------------------------ # ----------------------- Domain Members Options ------------------------ # ----------------------- Domain Controller Options ------------------------ # ----------------------- Browser Control Options ---------------------------- # --------------------------- Printing Options ----------------------------- # --------------------------- File System Options --------------------------- #============================ Share Definitions ==============================
-
~ ]# grep -E -i “#(====| —)” /etc/samba/smb.conf
-
windows
d:\data\tools:共享,共享名(software)
servicename://172.18.0.70/software -
客戶端程序:
- smbclient:交互式命令行客戶端,類似于lftp;
- mount.cifs:掛載cifs文件系統的專用命令;
-
samba的配置:
/etc/samba/smb.conf-
兩類配置段:
-
全局配置
[global] Network-Related Options workgroup = server string = interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24 hosts allow = 127. 192.168.12. 192.168.13. Logging Options log file = /var/log/samba/log.%m max log size = 50 Standalone Server Options security = user 設定安全級別:取值有四個; share:匿名共享; user:使用samba服務自我管理的賬號和密碼進行用戶認證;用戶必須是系統用戶,但密碼非為/etc/shadow中的密碼,而由samba自行管理的文件,其密碼文件的格式由passdb backend進行定義; server:由第三方服務進行統一認證; domain:使用DC進行認證;基于kerberos協議進行; passdb backend = tdbsam Printing Options load printers = yes cups options = raw
-
共享文件系統配置
-
[SHARED_NAME]
-
[homes]:為每個samba用戶定義其是否能夠通過samba服務訪問自己的家目錄;
[homes] comment = Home Directories browseable = no 不同的用戶在客戶端是看不見彼此的家目錄,默認為no writable = yes ; valid users = %S ; valid users = MYDOMAIN\%S
- [printers]:定義打印服務;
- [shared_fs]:定義共享的文件系統; 括號里的為共享名稱
-
[homes]:為每個samba用戶定義其是否能夠通過samba服務訪問自己的家目錄;
-
常用指令:
comment:注釋信息; path:當前共享所映射的文件系統路徑; browseable:是否可瀏覽,指是否可被用戶查看; guest ok:是否允許來賓賬號訪問; public:是否公開所有用戶; writable:是否可寫; read only:是否為只讀; write list:擁有寫權限的用戶列表; 用戶名 @組名 +組名
-
-
-
samba用戶管理:
-
smbpasswd [options] USERNAME
-a:添加
-x:刪除
-d:禁用
-e:啟用 -
pdbedit
-L:列出samba服務中的所有用戶;
-a, –create:添加用戶為samba用戶;
-u, –user=USER:要管理的用戶;
-x, –delete:刪除用戶;
-t, –password-from-stdin:從標準輸出接收字符串作為用戶密碼;使用空提示符,而后將密碼輸入兩次;
-
smbpasswd [options] USERNAME
-
查看服務器端的共享:
smbclient -L SMB_SERVER [-U USERNAME]
-
交互式文件訪問:
smbclient //SMB_SERVER/SHARE_NAME [-U USERNAME]
-
掛載訪問:
mount -t cifs //SMB_SERVER/SAHRE_NAME -o username=USERNAME,password=PASSWORD
注意:掛載操作的用戶,與-o選項中指定用戶直接產生映射關系;
此時,訪問掛載點,是以-o選項中的username指定的用戶身份進行;本地用戶對指定的路徑訪問,首先得擁有對應的本地文件系統權限;
-
smbstatus命令:
顯示samba服務的相關共享的訪問狀態信息;
-b:顯示簡要格式信息;
-v:顯示詳細格式信息;
原創文章,作者:s,如若轉載,請注明出處:http://www.www58058.com/77995