码迷,mamicode.com
首页 > 其他好文 > 详细

文件服务vsftpd,nfs,samba

时间:2016-07-29 15:49:17      阅读:345      评论:0      收藏:0      [点我收藏+]

标签:linux

文件服务


文件服务:


应用层: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






































本文出自 “博客作业初版” 博客,谢绝转载!

文件服务vsftpd,nfs,samba

标签:linux

原文地址:http://11602120.blog.51cto.com/11592120/1831577

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!