Linuxネットワークファイル共有サービス
1. ストレージタイプ
1.1 ストレージタイプの分類
- 直接接続ストレージ: DAS
DAS ストレージ デバイスとサーバー ホスト間の接続チャネルは、通常、SCSI 接続を使用します。DAS ストレージ デバイスは、主にディスク アレイ (RAID:)、ディスク クラスター (JBOD) などです。 - ネットワーク接続ストレージ: NAS は、
DAS や SAN とは異なり、ファイル レベルのストレージ方式です。NAS を使用する最も一般的な機能はファイル共有です。NAS ストレージは、一般に接続ストレージとも呼ばれます。 - ストレージ エリア ネットワーク: SAN
ストレージ エリア ネットワーク。ファイバー チャネルまたはイーサネット スイッチを介してストレージ アレイとサーバー ホストを接続し、最終的には専用のストレージ ネットワークになります。
1.2 3 つのストレージ アーキテクチャのアプリケーション シナリオ
- DAS は比較的古いものですが、データ量が少なく、高いディスク アクセス速度を必要とする中小企業には依然として非常に適しています。
- NAS は主にファイル サーバーに適しており、非構造化データの保存に使用されます。イーサネットの速度によって制限されますが、柔軟な導入が可能で、低コストです。
- SAN は大規模なアプリケーションやデータベース システムに適していますが、コストが高く複雑であるという欠点があります。
2. FTP ファイル転送プロトコル
2.1 ファイル転送プロトコル
C/S 構造に基づく、FTP の 3 つの初期アプリケーション レベル プロトコルの 1 つ
データ送信形式: バイナリ (デフォルト) およびテキスト
デュアルチャネル プロトコル: コマンドおよびデータ接続 21 コマンド ポート (認可、認証) 20 データ ポート
2.2 2 つのモード
- アクティブ (PORT スタイル): サーバーはアクティブにクライアントに接続します
コマンド (制御): クライアント: ランダム ポート —> サーバー: 21/tcp
データ: クライアント: ランダム ポート <—サーバー: 20/tcp
- パッシブ (PASV スタイル): サーバーはクライアントの接続を受動的に待ちます
コマンド (制御): クライアント: ランダム ポート —> サーバー: 21/tcp
データ: クライアント: ランダム ポート —> サーバー: ランダム ポート /tcp
2.3 ユーザーの種類
- 匿名ユーザー: ftp、匿名、Linux ユーザー ftp に対応
- システムユーザー: Linux ユーザー、user/etc/passwd、パスワード/etc/shadow
- 仮想ユーザー: 特定のサービス専用のユーザー、個別のユーザー/パスワード ファイル
2.4 一般的な FTP 関連ソフトウェア
FTPサーバーソフト
- Wu-ftpd、Proftpd、Pureftpd、Filezilla サーバー、Serv-U、Wing FTP サーバー、IIS
- vsftpd: 非常に安全な FTP デーモン、CentOS のデフォルト FTP サーバー、
高速、安定、ダウンロード速度は WU-FTP の 2 倍 - ftp.redhat.com データ: 1 台のマシンで最大 15,000 の同時実行をサポートできます。
- vsftpd 公式ウェブサイト: https://security.appspot.com/vsftpd.html
2.3 vsftpd ソフトウェアの概要
由 vsftpd 包提供,不再由xinetd管理
用户认证配置文件:/etc/pam.d/vsftpd
ユーザーとその共有ディレクトリ
- 匿名ユーザー (システム ユーザー FTP にマッピング) 共有ファイルの場所: /var/ftp
- システムユーザー共有ファイルの場所: ユーザーのホームディレクトリ
- 仮想ユーザーの共有ファイルの場所: マップされているシステム ユーザーのホーム ディレクトリ
2.3.1基本操作
安装ftp软件 yum install vsftpd -y
开启服务 systemctl start vsftpd
服务端同样安装vsftpd,并进入配置文件,修改其默认的端口号vim /etc/vsftpd/vsftpd.conf
当服务端口号修改完成后,客户端连接不加端口号时,服务端会拒绝访问
主动模式端口
connect_from_port_20=YES 主动模式端口为20
ftp_data_port=20 (默认) 指定主动模式的端口
被动模式端口
pasv_min_port=6000 0为随机分配,端口范围会影响客户端的并发数
pasv_max_port=6010
-使用当地时间
use_localtime=YES 使用当地时间(默认为NO,使用GMT)
-匿名用户登录
anonymous_enable=YES 支持匿名用户,CentOS8 默认不允许匿名
no_anon_password=YES 匿名用户略过口令检查 , 默认NO
-匿名用户上传
anon_upload_enable=YES 匿名上传,注意:文件系统权限
anon_mkdir_write_enable=YES 匿名建目录
chmod 777 /var/ftp/pub
2.3.2 匿名ユーザーがファイルをアップロードおよびダウンロードする
サーバー側の設定
进入配置文件进行修改
允许匿名用户上传文件。默认已注释,需取消注释
允许匿名用户创建(上传)目录。默认已注释,需取消注释
允许删除、重命名、覆盖等操作。需添加
クライアントクライアントがサーバー
上のファイルを削除する
2.3.3 制御システムのユーザーおよびその他の情報
[root@node2 pub]#vim /etc/vsftpd/vsftpd.conf
#最后加入 复制注意空格
guest_enable=YES
guest_username=ftp
#local_root=/ftproot 可以注释此行,默认所有用户都在 ftp用户的家目录
让每个用户拥有独有配置
[root@node2 pub]#vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/conf.d/
#可以自由指定
针对 zhangsan lisi 用户
[root@node2 data]#mkdir -p /etc/vsftpd/conf.d
#先建立好配置文件夹
#编写子配置文件
[root@node2 data]#vim /etc/vsftpd/conf.d/lisi
local_root=/data/lisi
[root@node2 data]#vim /etc/vsftpd/conf.d/zhangsan
local_root=/data/zhangsan
2.4 システム利用者の投獄
2.4.1 ホームディレクトリ内のすべてのシステムユーザーをロックする
chroot_local_user=YES #禁锢系统用户,默认NO,即不禁锢
2.4.2 ユーザーによるホワイトリストとブラックリストの有効化の禁止
chroot_list_enable=YES #默认是NO
chroot_list_file=/etc/vsftpd/chroot_list #默认值
当chroot_local_user=YES和chroot_list_enable=YES时,则chroot_list中用户不禁锢,即白名单
当chroot_local_user=NO和chroot_list_enable=YES时, 则chroot_list中用户禁锢,即黑名单
ブラックリストによりユーザーのログインが制限される
打开黑名单
vim /etc/vsftpd/vsftpd.conf
ホワイトリストログイン
服务端配置 vim /etc/vsftpd/vsftpd.conf
vim user_list 将user从列表中移除
客户端连接服务端 ftp 192.168.190.200
FTP はクリア テキスト送信であるため、パスワードを取得するためのデフォルトでは、root ユーザーのログインは許可されません。
进入ftbusers删除root,user_list里也加入root(现在是白名单)
可以实现root登录
3、NFS
3.1 コンセプト
网络上共享文件系统的协议,运行多个服务器之间通过网络共享文件和目录
- サーバー: 指定されたディレクトリを共有ディレクトリとしてマークします。サービス セグメントにはアクセス権があり、共有ディレクトリには完全な権限が与えられます。
- クライアント: nfs プロトコルを介してサーバーにリクエストを送信し、共有ディレクトリの操作権限を取得します。
3.2 NFS の動作原理
1. 客户端请求:NFS 的客户端向 NFS 服务器发送文件访问请求。这可以是读取文件、写入文件或执行其他文件操作。
2. 访问协议:客户端使用 RPC(Remote Procedure Call)协议与服务器通信。客户端会发送特定的 RPC 调用来请求文件操作,如打开文件、读取文件或关闭文件。
3. NFS 服务端:NFS 服务器收到来自客户端的请求,并解析这些请求。服务器根据客户端请求的内容,在本地文件系统上执行相应的操作。
4. 文件传输:当服务器执行文件操作时,它会读取或写入相应的文件或目录。数据通过网络传输,从服务器发送到客户端或从客户端发送到服务器。
5. 返回结果:服务器完成请求后,会将执行结果返回给客户端。这可能包括成功的确认、文件内容、错误信息等。
3.3 NFS の利点
1. 共有、ディレクトリを共有できる
2. 透過的、アクセスできる限り、基盤となるアクセス ネットワークの詳細を気にしない
3. パフォーマンス、高い読み取りおよび書き込みパフォーマンス、高速なアクセス速度
4. 信頼性、一貫性、サーバーとクライアントの動作は同期されます。
3.4 NFS ソフトウェアの紹介
ソフトウェア パッケージ: nfs-utils (サーバーおよびクライアント関連ツールを含む。CentOS8 の最小インストール中にデフォルトではインストールされない)
関連ソフトウェア パッケージ: rpcbind (必須)、tcp_wrappers
カーネル サポート: nfs.ko
ポート: 2049 (nfsd)、その他のポートはportmap(111) によって提供され、
NFS サービスのメインプロセスを割り当てます。
- rpc.nfsd は最も重要な NFS プロセスであり、クライアントがログインできるかどうかを管理します。
- rpc.mountd は、権限管理を含む NFS ファイル システムをマウントおよびアンマウントします。
- rpc.lockd は必要ありません。同時書き込みエラーを避けるためにファイル ロックを管理します。
- rpc.statd は必要ありません。ファイルの整合性を確認し、ファイルを修復して
ください。注: CentOS 6 はポートマップ プロセスを開始し、rpcbind に置き換えます。
ログ: /var/lib/nfs/
NFS配置文件:
/etc/exports
/etc/exports.d/*.exports
3.5NFS 共有設定ファイルの形式
/dir 主机1(opt1,opt2) 主机2(opt1,opt2)...
vim /etc/exports
...
共享文件夹 允许访问的主机[权限] #添加的内容
...
:wq
#例如
/data * #允许所有访问共享目录/data
3.6 NFS ツール
3.6.1 エクスポートファイル
exportfs:可用于管理NFS导出的文件系统
常见选项
-v #查看本机所有NFS共享
-r #重读配置文件,并共享目录
-a #输出本机所有共享
-au #停止本机所有共享
#exports配置常用参数
#ro 只读
#rw 读写
#root_squash
当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户
#no_root_squash
当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员
#all_squash
无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户
#sync
同时将数据写入到内存与硬盘中,保证不丢失数据
#async
优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据
3.6.2ショーマウント
常见用法:
showmount -a #显示所有共享的目录
showmount -e <服务器主机名或IP地址> #显示特定 NFS 服务器上的共享目录
showmount -l #仅显示挂载点的主机名或IP地址
[root@centos7 ~]#showmount -e 10.0.0.8
Export list for 10.0.0.8:
/data/wordpress *
3.6.3mount.nfs
客户端NFS挂载
NFS相关的挂载选项:man 5 nfs
fg #(默认)前台挂载
bg #后台挂载
hard #(默认)持续请求
soft #非持续请求
intr #和hard配合,请求可中断
rsize #和wsize 一次读和写数据最大字节数,rsize=32768
_netdev #无网络连接不挂载
vers #指定版本,客户端centos8默认4.2 ,centos7默认4.1 centos6默认4.0
3.7 NFS の実装をシミュレートする
サーバー構成
#关闭防火墙和selinux
systemctl stop firewalld
setenforce 0
#安装nfs-utils和rpcbind软件包
yum install nfs-utils rpcbind -y
#新しい共有ディレクトリを作成し、そのディレクトリ内にファイル
mkdir /test
touch /test/t1を作成します
#给共享文件夹增加权限
chmod 777 /test/
vim /etc/exports编辑配置文件
#重新启动程序
systemctl restart rpcbind
systemctl restart nfs
#查看本机所有的NFS共享
exportfs -v
サーバー構成
安装rpcbind和nfs
yum install nfs-utils rpcbind -y
关闭防火墙
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0
启动程序
[root@localhost ~]# systemctl restart rpcbind
[root@localhost ~]# systemctl restart nfs
#查看共享文件夹
showmount -e 192.168.190.254
サーバ
在共享文件夹下重新创建一个新的文件
touch fsj.txt
クライアント
查看挂载点有没有刚才新建的文件