linux上的文件服务
vsftp、Samba、NFS对比
服务器名称 |
用户客户端平台 |
使用范围 |
服务端口 |
VSFTP |
Windows/linux/unix/macOS等 |
发布网站,文件共享 |
Tcp/21 |
Samba |
Windows |
文件共享(网上邻居) |
Tcp/445,tcp/139 |
NFS |
Linux/unix |
网站发布,文件共享,可挂载(mount) |
Tcp/2049 |
ftp搭建
用vsftpd搭建FTP服务:
简介:
安全性是编写VSFTP的初衷,除了这与生俱来的安全特性以外,高速与高稳定性也是VSFTP的两个重要特点。
是SentOS或者redhat上自带的ftp软件,默认不安装,一般执行yum安装
vsftp安装配置
首先检查是否安装vsftp包 # rpm –qa | grep vsftpd
yum安装:yum install -y vsftpd db4-utils //这里db4-utils用来生成密码文件
建立账号:
vsftp支持系统账号登陆,出于安全考虑我们使用虚拟账号登陆
#useradd -virftp -s /sbin/nologin
创建虚拟账号的配置文件:
#vim /etc/vsftpd/vsftpd_login
test1 test2
abcdef
#该文件存储用户和密码,奇数行为用户名,偶数行为密码
安全起见设置权限
#chmod 600 /etc/vsftpd/vsftpd_login
vsftpd使用的密码不是明文,现在使用“用户&密码”文件生成对应库文件:
#db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db
最后建立与虚拟账号相关的目录及配置文件,如下所示:
#mkdir /etc/vsftpd/user_conf //此文路径要和全局配置文件中的用户配置目录设置一致
创建和用户对应的配置文件
每一个用户都有一个对应的配置文件,文件名和用户名一致,用来自定义用户配置
切换到上面创建的user_conf下
#vim test1
local_root=/home/virftp/test1
anonymous_enable=NO
write_enable=YES
local_umask=
anon_upload_enable=NO
anon_mkdir_write_enable=NO
idle_session_timeout=
data_connection_timeout=
max_clients=
max_per_ip=
local_max_rate=50000
根据字面意思应该不难理解各参数意义
#mkdir /home/virftp/test1; touch test.txt
#chown -R virftp.virftp /home/virftp
#vim /etc/pam.d/vsftpd //在最开头添加
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
CentOS为64位,所以库文件路径为/lib64/security/pam_userdb.so(32位的为/lib/security/pam_userdb.so)
修改全局配置文件/etc/vsftpd/vsftpd.conf
除了修改我们的用户配置文件外,我们还需要修改一些全局配置文件
vim /etc/vsftpd/vsftpd.conf
修改
anonymous_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO 增加
chroot_local_user=YES
guest_enable=YES
guest_username=virftp
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/user_conf
allow_writeable_chroot=YES
启动:
#service vsftpd start
测试:安装客户端工具lftp
#yum install lftp
#lftp test1@127.0.0.1
Password:
lftp test1@127.0.0.1:~> ls
-rw-r--r-- 1 503 504 11 Dec 02 13:37 text.txt
NFS共享存储配置
简介
NFS(Network File System)即网络文件系统的缩写,由Sun公司研发,其目的是为了解决网络文件共享的问题。用户可以实现像挂载本地文件系统一样挂载NFS服务器的共享目录;其具有配置简单、使用高效的特点,但只能在Linux系统使用,不能跨平台使用。
要设定好 NFS 服务器我们必须要有两个软件才行,分别是:
- RPC 主程序:rpcbind他是一个RPC(远程过程调用协议)服务,主要是在nfs共享时候负责通知客户端,服务器的nfs端口号的。简单理解rpc就是一个中介服务。
- NFS 主程序
安装配置
NFS服务端配置
安装
#确认是否安装
[oracle@jydb1 ~]$ rpm -qa | grep nfs
nfs-utils-lib-1.1.-.el6.x86_64
nfs4-acl-tools-0.3.-.el6.x86_64
nfs-utils-1.2.-.el6.x86_64
[oracle@jydb1 ~]$ rpm -qa | grep rpcbind
rpcbind-0.2.-.el6.x86_64 未安装则yum安装yum install -y nfs-utils rpcbind
主配置文件:
- /etc/exports:需要我们在服务安装好后手动创建
# cat /etc/exports
/data 192.168.13.0/(rw,sync)
常见参数有
常见的参数则有: 参数值 内容说明
rw ro 该目录分享的权限是可擦写 (read-write) 或只读 (read-only),但最终能不能读写,还是与文件系统的 rwx 及身份有关。 sync async sync 代表数据会同步写入到内存与硬盘中,async 则代表数据会先暂存于内存当中,而非直接写入硬盘! no_root_squash root_squash 客户端使用 NFS 文件系统的账号若为 root 时,系统该如何判断这个账号的身份?预设的情况下,客户端 root 的身份会由 root_squash 的设定压缩成 nfsnobody, 如此对服务器的系统会较有保障。但如果你想要开放客户端使用 root 身份来操作服务器的文件系统,那么这里就得要开 no_root_squash 才行! all_squash 不论登入 NFS 的使用者身份为何, 他的身份都会被压缩成为匿名用户,通常也就是 nobody(nfsnobody) anonuid anongid anon 意指 anonymous (匿名者) 前面关于 *_squash 提到的匿名用户的 UID 设定值,通常为 nobody(nfsnobody),但是你可以自行设定这个 UID 的值!当然,这个 UID 必需要存在于你的 /etc/passwd 当中! anonuid 指的是 UID 而 anongid 则是群组的 GID 。
NFS文件访问权限
NFS服务本身没有身份验证的功能,权限是遵循共享目录在NFS服务器上的权限设置,而且只识别UID和GID。假如现在有一个共享的目录share其属主、属组及权限信息如下:
用户和组为mysql,但当客户端访问此目录时,NFS是判定访问者的uid是否为400,如果uid相符,那么访问者就有可能拥有与mysql用户相同的权限,这还要取决于/share设置共享时所分配的权限;如果访问者的uid对应了NFS服务器上的另一个用户,则访问者就对应拥有other权限,但是否能够完全对应用other权限也要取决于\share的共享权限;如果访问者的uid恰好在NFS服务器上不存在,则服务器用自动将其压缩成为匿名用户,其uid为65534,而CentOS将其显示为nfsnobody。
由于在绝大部分Linux系统中root用户的uid为0,也就是说客户端可以轻易的获得NFS的root权限来访问共享目录,这样是极不安全的,所以NFS默认会将root的身份压缩成匿名用户。
配置生效
# exportfs -r
启动rpcbind、nfs服务
# service rpcbind start
# service nfs start
Starting NFS services: [ OK ]
Starting NFS quotas: [ OK ]
Starting NFS mountd: [ OK ]
Starting NFS daemon: [ OK ]
Starting RPC idmapd: [ OK ]
查看RPC的注册状况
# rpcinfo -p localhost
program vers proto port service
tcp portmapper
tcp portmapper
tcp portmapper
udp portmapper
udp portmapper
udp portmapper
udp status
tcp status
udp rquotad
udp rquotad
tcp rquotad
tcp rquotad
udp mountd
tcp mountd
udp mountd
tcp mountd
udp mountd
tcp mountd
tcp nfs
tcp nfs
tcp nfs
tcp nfs_acl
tcp nfs_acl
udp nfs
udp nfs
udp nfs
udp nfs_acl
udp nfs_acl
udp nlockmgr
udp nlockmgr
udp nlockmgr
tcp nlockmgr
tcp nlockmgr
tcp nlockmgr
# rpcinfo -p localhost
选项与参数:
-p :针对某 IP (未写则预设为本机) 显示出所有的 port 与 porgram 的信息;
-t :针对某主机的某支程序检查其 TCP 封包所在的软件版本;
-u :针对某主机的某支程序检查其 UDP 封包所在的软件版本;
secver端测试
# showmount -e localhost
Export list for localhost:
/data 192.168.13.0/ 选项与参数:
-a :显示目前主机与客户端的 NFS 联机分享的状态;
-e :显示某部主机的 /etc/exports 所分享的目录数据。
客户端配置
安装nfs-utils客户端
# yum -y install nfs-utils
创建挂载目录
# mkdir /data
查看服务器抛出的共享目录信息
[root@bogon ~]# showmount -e 192.168.12.111
Export list for 192.168.12.111:
/data 192.168.12.111/24
为了提高NFS的稳定性,使用TCP协议挂载,NFS默认用UDP协议
# mount -t nfs 192.168.12.111:/data /data -o proto=tcp -o nolock
nfs参考:https://www.cnblogs.com/liuyisai/p/5992511.html
linux上的文件服务的更多相关文章
- Linux上读取文件
Linux上读取文件的方法: #!/bin/bash # This is a script for test exec CONFIG_FILE=$ #该脚本传一个文件名为参数 FILE_NO= ech ...
- linux上hosts文件如何配置
linux上hosts文件如何配置 一.什么是host Hosts是一个没有扩展名的系统文件,其基本作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,当用户在浏览器中输入一个需要登 ...
- windows上用putty从linux上下载文件
我之前使用putty都是直接从网上下的putty.exe,其实如果想下载windows的mis二进制文件,系统安装的话会包含,pscp.psftp.puttygen等一系列的文件. 今天下从服务器上, ...
- 从Windows想Linux上传文件 Linux(CentOS) 上安装vsftpd
今天想在Linux上搭建个LAMP环境,以前用的Linux都安装了图形界面,但是这次用的阿里云服务器是纯命令模式,用起来有点不大适应. 最大的不适应就是获取apache等软件了,以前直接登录相应网站, ...
- Linux上搭建SVN服务
环境:centos7 一.搭建svn服务 1. 安装svn yum -y install subversion 2. 创建一个目录作为svn服务的地址(svn://192.168.0.2:3690 访 ...
- linux上传文件的命令——rz
下面来看一下有关上传下载的说明. 1.rz.sz命令的安装方法 第一种方法:安装系统时选包包含rz.sz命令的包组 第二种方法:安装系统后通过执行yum install lrzsz -y 或 yum ...
- 在Linux上安装Oracle服务的操作步骤
如题,将我在云服务器上安装Oracle服务的惨痛经历分享出来,期间查找的资料踩过的坑无数,希望对大家能有帮助 闲话少叙,直接开始 首先,由于服务器比较差,需要先设置swap 查看是否设置swap虚拟内 ...
- 记在Linux上定位后台服务偶发崩溃的问题
问题描述 在最近的后台服务中,新增将某个指令的请求数据落盘保存的功能.在具体实现时,采用成员变量来保存请求消息代理头,在接收响应以及消息管理类释放时进行销毁.测试反馈,该服务偶发崩溃. 问题分析 测试 ...
- Linux云计算-07_Linux文件服务器之vsftpd服务器
本章向读者介绍企业vsftpd服务器实战.匿名用户访问.系统用户访问及虚拟用户实战等. 1 vsftpd服务器企业实战 文件传输协议(File Transfer Protocol,FTP),基于该协议 ...
随机推荐
- python 格式化字符串"%s"%
%s 字符串 (采用str()的显示) %r 字符串 (采用repr()的显示) %c 单个字符 %b 二进制整数 %d 十进制整数 %i 十进制整数 %o ...
- iOS UI进阶-4.0 地图与定位
在移动互联网时代,移动app能解决用户的很多生活琐事,比如 导航:去任意陌生的地方 周边:找餐馆.找酒店.找银行.找电影院 在上述应用中,都用到了地图和定位功能,在iOS开发中,要想加入这2大功能 ...
- talend openstudio 在OracleInput组件中guess Schema 出现Database connection is failed 的错误
错误描述: talend openstudio 在OracleInput组件中guess Schema 出现Database connection is failed 的错误. 查看错误详情,发现错误 ...
- Oracle与MySQL的比较[内容来自网络]
支持的特性方面的比较: https://www.quora.com/Whats-the-difference-between-Oracle-and-MySQL oracle和mysql在 安全,数据类 ...
- [2]传奇3服务器源码分析一 LoginServer
留存 服务端下载地址: 点击这里
- Day11 多进程与多线程编程
一.进程与线程 1.什么是进程(process)? An executing instance of a program is called a process. Each process provi ...
- EXTENDED LIGHTS OUT (高斯消元)
In an extended version of the game Lights Out, is a puzzle with 5 rows of 6 buttons each (the actual ...
- vim 命令学习(基础篇)
[1]三种模式 vi的三种模式:命令模式.末行模式.编辑模式. 三种模式相互切换逻辑与命令图: 1.命令模式是vi的默认模式(即每打开一个文件时的初始模式). 2.命令模式切换至末行模式,末行模式切换 ...
- python 数据序列化(json、pickle、shelve)
本来要查一下json系列化自定义对象的一个问题,然后发现这篇博客(https://www.cnblogs.com/yyds/p/6563608.html)很全面,感谢作者,关于python序列化的知识 ...
- numpy文件操作
import numpy as np print '读取csv文件做为数组' arr = np.loadtxt('array_ex.txt', delimiter = ',') print arr i ...