文件共享: NFS、FTP(vsftpd)、samba、apache、nginx
文件共享要点: 1.Linux中的文件共享服务器软件有哪些?每种共享软件的应用场合和特点? 2.文件共享软件的安装、服务启动的方法,以及文件共享的基本方法? 3.如何实现基于用户(即需要用户名和密码验证)的访问控制? 4.如何实现基于IP(即允许哪些IP的客户机访问共享)的访问控制? 5.访问共享时的读写权限控制,权限要考虑2个要点:目录自身的权限、文件共享软件中设置的权限。 警告:用户访问ftp、samba共享的用户账号的登录shell建议设置成/sbin/nologin,这样的话安全性更高,即只让这些用户访问共享,而不能用ssh或本地登录到linux系统中。即useradd tom -s /sbin/nologin
解释:以下是一个for循环语句来批量创建用户并设置初始登录密码跟用户名相同,设i的取值为tom、lucy、lily,$i表示调用i的取值。 for i in tom lucy lily do useradd $i -s /sbin/nologin echo $i | passwd --stdin $i done
文件共享的软件: NFS:实现unix和linux系统之间的文件共享,通常用于局域网(LAN)中,采用NFS协议。属于sun公司开发的一套轻量级的文件共享软件。特点是能做基于IP的访问控制,能实现文件的在线编辑,但是无法实现基于用户的访问控制。
vsftpd:通常用于互联网(WAN广域网)远程做文件共享。可以实现跨系统平台做共享。跨系统平台是指服务器和客户机的操作系统都支持FTP协议。特点是支持基于IP、用户的访问控制策略。缺点是不能共享打印机,不支持文件的在线编辑(即离线编辑,要先下载到本地进行修改,再上传到服务器上)功能。
samba:实现的是在linux中用samba共享,windows中用网上邻居访问共享。采用的是SMB协议。特点是能做打印机共享,支持基于IP、用户的访问控制策略,且支持共享文件的在线编辑。
NFS的优点:安装和设置简单,轻量级的文件共享软件。可以实现linux和unix系统之间的文件共享。在win7/win10系统中也可以访问nfs共享。支持基于IP的访问控制。 缺点:不支持基于用户名的访问控制。即访问nfs共享时,无需输入用户名和密码。如果要解决此问题,可采用ftp、samba、apache、nginx共享。
网络环境拓扑: 客户机client 服务器server 192.168.11.1(win7/10) 192.168.11.11(centos) 192.168.11.12(centos)
NFS:网络文件系统(Network File System)。提供网络文件系统平台,需要借助RPC(远程过程调用)协议来发送文件传输的控制指令。 发布时间:1984年 公司:SUN公司。典型产品有JAVA。SUN公司被Oracle公司收购
NFS软件:
nfs-utils、rpcbind
说明:如果是安装了centos桌面环境,这两个软件包都已经安装好了。
如果是安装了centos最小环境,需要手动安装这两个软件包。
NFS的部署思路:(网络服务的部署通用思路) 0.关闭安全功能,并查状态: systemctl stop firewalld ; setenforce 0 systemctl status firewalld ; getenforce 1.查软件是否已安装,如果未安装就安装软件。 2.启动服务,并允许开机自动启动 3.设置共享目录,重新加载设置。 4.做本地(内测)访问测试,做异地(公测)访问测试。
环境准备: 关闭安全功能,并查状态: systemctl stop firewalld ; setenforce 0 systemctl status firewalld ; getenforce
NFS安装: 查是否已安装:rpm -q nfs-utils rpcbind 安装:yum install -y nfs-utils rpcbind 查软件的文件列表:rpm -ql nfs-utils 查配置文件列表:rpm -qc nfs-utils
NFS服务管理: 重启动服务:systemctl restart nfs rpcbind 允许开启自动启动:systemctl enable nfs rpcbind 查服务状态:systemctl status nfs rpcbind
共享需要的文件: 通过/etc/exports共享配置文件来实现。查man exports来了解配置文件的格式。 exports配置文件语法如下:man exports查帮助中的EXAMPLE例子 共享目录的绝对路径 1号客户主机名或IP(共享选项) n号客户主机名或IP(共享选项) /usr *(ro) 192.168.11.13(rw) /opt *(rw,no_root_squash) 192.168.11.0/24(rw)
客户主机名或IP: *号 表示任何IP的主机 主机名 可以指定客户机的主机名 192.168.11.0/24 表示允许192.168.11.0这个网段的所有主机访问共享
共享选项: ro (常用选项)可读ReadOnly rw (常用选项)可读可写read + write sync (常用选项)同步传输 async (常用选项)异步传输 no_root_squash (常用选项)不将root映射成nfsnobody匿名用户,即让root用自己的身份和权限访问共享 no_all_squash (默认启用)不将所有用户映射成nfsnobody匿名用户,即让所有用户用自己的身份和权限访问共享 root_squash 将root映射成nfsnobody匿名用户(默认启用) all_squash 将所有用户映射成nfsnobody匿名用户 anonuid 匿名用户的uid号 anongid 匿名用户的gid号
nfs的其他配置文件:(仅了解一下,无需修改) cat /var/lib/nfs/etab 记录nfs共享的完整设置选择,此文件的内容来源于/etc/exports文件。当重启nfs服务时,会自动更新etab文件内容。
例:通过nfs将/usr目录以只读方式共享,允许任何IP的主机来访问。
vim /etc/exports
/usr *(ro)
平滑重启(重加载)nfs服务:exportfs -rav 或 systemctl reload nfs
本地(内测)查共享资源列表:showmount -e 127.0.0.1
exportfs命令选项:man exportfs -r 重新共享所有目录 -a 打开或取消所有目录共享。 -v 输出详细信息。当共享或者取消共享时,显示在做什么。 -f 在“新”模式下,刷新内核共享表之外的任何东西。
在异地(公测)做挂在访问测试: 本地(内测)查共享资源列表:showmount -e 192.168.11.11 创建挂载点:mkdir -pv /mynfs 挂载:mount -t nfs 192.168.11.11:/usr /mynfs 查磁盘空间使用状态:df -hT
showmount选项:man showmount -a或--all 以 host:dir 这样的格式来显示客户主机名和挂载点目录。 -d或--directories 仅显示被客户挂载的目录名。 -e或--exports 显示NFS服务器的输出清单。
在Win7/10中访问NFS共享: 1.安装nfs客户端(client)程序。 运行Win+R-->control控制面板-->程序-->打开或关闭windows功能-->NFS服务-->勾选“NFS客户端”-->确定。 2.运行Win+R-->cmd-->输入如下命令。 查共享资源列表:showmount -e 192.168.11.11 挂载共享资源为K盘:mount 192.168.11.11:/usr k: 打开共享:win+E--->双击K盘图标
附加操作:卸载共享的k盘:右击K盘图标--->断开
练习:用nfs服务以可读可写(rw)方式共享/opt目录,允许任何IP的主机访问。做本地访问测试,将其挂载到/optnfs目录,在挂载点目录中touch a.txt文件,看是否有写入权限。
问题:让root用户在挂载点目录下touch a.txt文件时提示"无法创建/optnfs/a.txt权限不够"。怎么办? 问题分析: 首先,看exports共享中是否以rw可读可写方式共享了指定的目录。 其次,查看共享目录自身的权限,用ls -ld /opt查看权限结果。权限结果如下: drwxr-xr-x. 3 root root 16 1月 3 12:11 /opt 请回答权限的五个问题? 再次,root用户在访问nfs共享时,root是以匿名访问的,属于其他用户,而/opt目录自身对于other其他用户的权限是r-x,无w可写的权限。但是普通用户是以no_all_squash不以匿名用户身份,而是以自己真实访问共享。 权限解决方案:将/opt目录的other权限用chmod o+w /opt来设置之后,再用touch命令在挂载点目录做创建测试,发现可以写了。
附加操作:查看touch后的a.txt权限如下: -rw-r--r--. 1 nfsnobody nfsnobody 0 1月 21 10:49 a.txt 说明:a.txt的属主、属组均为nfsnobody匿名用户账号。
文件共享权限要考虑的2个要素: 1.用户对目录自身的访问权限。 2.目录做共享时设置的访问权限。 警告:用户访问共享时想可读可写,必须是以上两个权限都为可读可写。
克隆虚拟机(01-21-PM): 准备工作: 1.将linx系统设置成开机自动进入CLI命令行界面: cat /etc/inittab 查看inittab系统启动的运行等级配置文件 systemctl get-default 查看当前系统的启动运行等级 systemctl set-default multi-user.target 设置系统启动的运行等级为3,即多用户的CLI命令行界面
附注(不做这一步): systemctl set-default graphical.target 设置系统启动的运行等级为5,即GUI桌面图形界面
2.将node12c虚拟机开机,并执行如下操作。 cd /etc/sysconfig/network-scripts ls cp -v ifcfg-ens33{,.bak} vim ifcfg-ens33 修改网卡配置文件全文内容如下[删掉不需要的内容即可] TYPE=Ethernet BOOTPROTO=none DEFROUTE=yes DEVICE=ens33 ONBOOT=yes IPADDR=192.168.11.11 PREFIX=24 GATEWAY=192.168.11.2 DNS1=114.114.114.114 DNS2=8.8.8.8
3.重启网络服务: systemctl restart network ip a 或 ifconfig
4.将虚拟机用poweroff关机,编辑虚拟机硬件设置,将内存设置为512M,创建名称为"CLI-OK"的快照。
5.(选做)将"CLI-OK"快照克隆出一台虚拟机,虚拟名称为"node12c"。然后编辑node12c虚拟机的硬件设置中的网卡的mac地址(-->高级-->MAC地址-->生成-->看生成的新MAC地址是多少)。
6.将node12c虚拟机开机,执行如下操作。 cd /etc/sysconfig/network-scripts ls vim ifcfg-ens33 修改文件中的如下内容[其他内容保持不变] IPADDR=192.168.11.12
重启网络服务,并查看IP地址: systemctl restart network ip a 或 ifconfig 看ens33的IP是否变成了192.168.11.12这个IP地址
7.用poweroff命令关闭node12c虚拟机。关机后创建一个名称为"IP12"的快照。
8.参考nod12c虚拟机的克隆操作步骤,再克隆出一台名称为"node13c"的虚拟机。参考上面的6、6、7步骤来操作。
附录(作为参考):ifcfg-ens33原始配置文件内容如下: TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=none DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=ens33 UUID=cb9fa9a8-31ac-4a7c-b1ce-365595ebb466 DEVICE=ens33 ONBOOT=yes IPADDR=192.168.11.11 PREFIX=24 GATEWAY=192.168.11.2 DNS1=114.114.114.114 DNS2=8.8.8.8 IPV6_PRIVACY=no
vsftpd文件共享:
FTP:是文件传输协议的缩写。用来实现文件的上传(upload)和下载(download)。 FTP是工作在C/S架构模式下。 C/S架构:是客户端Client/服务器server访问模式。C/S的特点是客户机必须使用专用的客户端程序去访问服务器。 B/S架构:是浏览器Browser、服务器Server访问模式。B/S的特点是客户机只需用IE、Firefox等浏览器来访问服务器。B/S架构通常是用来开发基于web网站的应用程序。
vsftpd:是非常安全的ftp守护进程(Very secure ftp Daemon)。 进程:正在进行(运行running)的程序。 守护进程Daemon:网络服务类的程序都会有守护进程。守护进程是指实时监测服务访问状态的程序。通常都是在系统后台运行。
FTP的工作端口: 21 控制端口,用于在客户机和服务器之间建立连接。 20 数据端口。用于服务器给客户机主动进行数据连接。 网络服务端口号的作用:用来标示服务器上的不同业务(服务)。
服务器:提供服务的机器。
vsftpd的部署思路:(网络服务的部署通用思路) 0.关闭安全功能,并查状态: systemctl stop firewalld ; setenforce 0 systemctl status firewalld ; getenforce 1.查软件是否已安装,如果未安装就安装软件。 2.启动服务,并允许开机自动启动 3.设置共享目录,重新加载设置。 4.做本地(内测)访问测试,做异地(公测)访问测试。
环境准备: 关闭安全功能,并查状态: systemctl stop firewalld ; setenforce 0 systemctl status firewalld ; getenforce
vsftpd、ftp、lftp安装: 说明:vsftpd是服务器端程序 ftp、lftp是客户端程序
查是否已安装:rpm -q vsftpd ftp lftp 安装:yum install -y vsftpd ftp lftp 查软件的文件列表:rpm -ql vsftpd 查配置文件列表:rpm -qc vsftpd
vsftpd 服务管理: 重启动服务:systemctl restart vsftpd 允许开启自动启动:systemctl enable vsftpd 查服务状态:systemctl status vsftpd
共享需要的文件: vsftpd的默认共享目录: 匿名用户(ftp或anonymous)共享:/var/ftp目录 普通用户:访问的是普通用户自己的家目录,通常是"/home/用户名"文件夹 注意:root用户默认不能登录vsftpd服务器来访问共享,因为root账号在黑名单里。
vsftpd的配置文件:rpm -qc vsftpd /etc/logrotate.d/vsftpd 日志轮滚策略文件 /etc/pam.d/vsftpd pam认证文件(重点) /etc/vsftpd/ftpusers 黑名单文件(重点) /etc/vsftpd/user_list 用户访问列表文件(重点),默认是黑名单,但是可以设置成白名单 /etc/vsftpd/vsftpd.conf 服务的主配置文件(重点)
练习:将root用户从ftpusers黑名单文件中注释掉,重启vsftpd服务,用root账号访问共享资源。 第1步:编辑黑名单文件1。 vim /etc/vsftpd/ftpusers 编辑黑名单文件1 #root 在此行行首添加#号
第1步:编辑黑名单文件2。 vim /etc/vsftpd/user_list 编辑黑名单文件2 #root 在此行行首添加#号
第3步:重启服务。(修改黑名单文件是立即生效的,可以不重启服务)。 systemctl restart vsftpd
第四步,做共享访问测试。 win7/10访问vsftpd共享:win+E-->ftp://root:0@192.168.11.11
linux用root访问共享: ftp 192.168.11.11 回车---》用户名root回车--->密码0回车-->看到successful表示登录成功 lftp 192.168.11.11 -u root,0
练习:在centos系统中用useradd 创建tom用户,设置登录密码为tom。然后分别用win7/10和centos做共享访问测试。并在win7/10上传一个文件到用户的家目录中。
问题:什么时候让user_list文件变成白名单? 答:由于当user_list为白名单时,仅允许白名单中的用户访问vsftpd共享。所以当系统中有1万个用户账号时,我只让3个人能访问vsftpd文件共享服务,那么就得用白名单。
练习:在系统中创建3个用户tom、lucy、lily,给他们设置登录密码为0。用windows做ftp访问共享测试,分别上传一个文件到用户的家目录中。 useradd tom useradd lucy useradd lily echo 0 | passwd --stdin tom echo 0 | passwd --stdin lucy echo 0 | passwd --stdin lily
win7/10访问共享: Win+E--> ftp://192.168.11.11回车--->右键菜单-->登录-->用户名和密码-->上传文件。
练习:采用user_list白名单功能,仅允许tom用户访问vsftpd共享。 第一步,将tom用户加入到user_list文件中。 vim /etc/vsftpd/user_list 在文件最后添加如下内容 tom
第二步,将user_list设置成白名单文件。 vim /etc/vsftpd/vsftpd.conf userlist_deny=NO 找到此行,如果没有就在最后添加此行
第三步,重启vsftpd服务. systemctl restart vsftpd
第四步,分别用tom、lucy、lily访问共享,看是否只有tom能访问。 win7/10访问共享: Win+R-->cmd--> ftp 192.168.11.11回车--->用户名和密码-->看登录是否成功( successful)
小结:vsftpd的用户名单监测流程如下: 先监测user_list文件(是黑还是白)----》再监测ftpusers黑名单中是否有这个用户。
练习:将tom用户从ftpusers和user_list文件中删除或用#号注释掉。将/etc/vsftpd/vsftpd.conf主配置文件的userlist_deny=NO这行用#号注释掉,并重启vsftpd服务,最后用tom、lucy、lily做ftp的命令行访问测试,确保这3个用户都能访问共享。
到此:ftpusers和user_list名单文件功能介绍完毕。
vsftpd.conf主配置文件: 功能:对vsftpd软件的功能进行设置,可以设置限速、匿名和普通用户访问权限、chroot等功能。
专家建议:修改主配置文件之前,最好备份一下配置文件。备份文件的后缀通常为.bak或.org。
cd /etc/vsftpd ; ls
cp -av vsftpd.conf{,.bak}
说明:-a 是复制时包括源文件的所有(all)的权限和属性、selinux属性都复制给目标文件。而-p选项时复制时不包含selinux属性的。
练习:查看并熟悉vsftpd.conf主配置文件中的默认设置。查看时不包含#开头(^#)的、空白行(^$),要求显示行号。 grep -nEv '^#|^$' /etc/vsftpd/vsftpd.conf 内容如下(共13行) 12:anonymous_enable=YES 允许匿名访问共享 16:local_enable=YES 允许本地普通用户(是指用useradd创建的用户)访问共享 19:write_enable=YES 允许写操作,即可写权限 23:local_umask=022 本地用户的umask值 37:dirmessage_enable=YES 允许显示目录信息 40:xferlog_enable=YES 允许xferlog日志,xferlog文件路径是/var/log/xferlog文件,仅记录文件的上传和下载日志 43:connect_from_port_20=YES 启用20号端口的连接(data数据端口) 57:xferlog_std_format=YES 启用xferlog标准(std是standard)格式的日志 115:listen=NO 不启用ipv4监听 124:listen_ipv6=YES 启用IPV6监听,会向下兼容ipv4 126:pam_service_name=vsftpd vsftpd的pam用户认证服务文件,是/etc/pam.d/vsftpd文件 127:userlist_enable=YES 启用user_list用户列表文件 128:tcp_wrappers=YES 启用tcp_wrappers防火墙功能,用来做基于IP的TCP访问控制
vsftpd.conf默认设置的功能: 1.允许匿名用访问共享,访问的是/var/ftp目录,且只能下载文件,不能上传文件。 2.允许普通用访问共享,访问的是用户自己的家目录,既能下载文件,也能上传文件。 3.普通用户用ftp命令登录到vsftpd服务器之后,能chroot到服务器的其他目录路径下,此功能不安全,建议关掉。
练习:设置vsftpd.conf配置文件中不允许anonymous匿名用户访问vsftpd共享,重启服务后,做访问测试。测试完毕后,将设置还原,并重启服务。
xferlog是一个上传下载日志。只是记录上传下载。如果要看更加具体的登录的一些日志,需要vsftpd.log日志文件。 例:/var/log/xferog日志文件内容如下。 Tue Jan 22 11:53:35 2019,1 ,::ffff:192.168.11.1 , 2061, /home/tom/qr.png ,b _ i r tom ftp 0 * c 发生时间,传输所花时间,客户端IP,文件大小byte,文件名路径,文件传输格式,文件特殊处理标记,i上传或o下载,r真实用户登录,tom用户,ftp服务器名,认证方式为0,认证用户ID为*,传输完成状态为c已完成。
下面解释一下xferlog日志文件中每一列的含义。 列号 列功能 说明 示例 1 发生时间 记录发生的时间 例:SunJun1612:23:532013 2 文件传输时间 传输该文件使用的时间 例:1 3 客户端 客户端主机的IP或主机名 例:192.168.1.100 4 文件大小 单位:字节 例:12 5 文件名 上传或下载的文件名称 例:/pub/dd 6 文件传输类型 a表示ASCII(文本),b(二进制) 例:b 7 包括四种文件特殊处理标记,“_”表不做任何处理,C表示文件时压缩格式,U表示文件是非压缩格式,T表示是tar格式 8 文件传输方向 o表示从服务器到客户端,i相反 例:i 9 用户登录方式 a表示匿名登录,g表示虚拟用户登录,r表示真实用户登录。 例:a 10 用户名称 用户名称 ?(匿名用户) 11 服务器名 一般为FTp ftp 12 认证方式 0表示无,1表示RFC931认证 例:0 13 认证的用户ID 表示无法获得用户ID 例: 14 传输完成状态 c表示完成,i表示没完成 例:i
以上基本上就是我们的xferlog日志记录内容。
vsftpd的chroot牢笼功能:vim /etc/vsftpd/vsftpd.conf 找到如下内容 #chroot牢笼功能:锁定用户在自己的家目录中,即不允许用户访问自己家目录以外的目录。 #chroot_local_user=YES 允许本地用户chroot牢笼功能(change root),默认为NO不启用 #chroot_list_enable=YES 启用chroot_list文件功能,默认NO不启用此功能
(default follows)
#chroot_list_file=/etc/vsftpd/chroot_list 指定chroot_list文件及其路径,默认无此文,需要用户自己创建
chroot牢笼四种情况: 1.全部不锁(默认情况) 2.全部加锁(用两行代码) 3.少数不加锁(用四行代码) 4.少数加锁(用三行代码)
情况1.关闭所有普通用户的牢笼功能(即不锁,默认情况)。设置如下 #chroot_local_user=YES 允许本地用户chroot牢笼功能(change root),默认为NO不启用 #chroot_list_enable=YES 启用chroot_list文件功能,默认NO不启用此功能
(default follows)
#chroot_list_file=/etc/vsftpd/chroot_list
情况2.启用所有普通用户的牢笼功能(即对所有人加锁)。设置如下 chroot_local_user=YES 启用本地用户chroot牢笼功能(change root),默认为NO不启用 allow_writeable_chroot=YES 允许chroot牢笼功能下执行写操作(centos7中必加此行)
测试练习:将vsftpd.conf文件中的chroot_local_user=YES功能启用,重启服务,用tom、lucy用访问共享,执行ls /usr看命令结果。
情况3.给指定的少数普通用户不启用牢笼功能(即少数人不加锁,白名单)。设置如下 chroot_local_user=YES 启用本地用户chroot牢笼功能(change root),默认为NO不启用 allow_writeable_chroot=YES 允许chroot牢笼功能下执行写操作(centos7中必加此行) chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list 指定chroot_list文件及其路径
测试练习:将vsftpd.conf文件中的chroot_list做如下白名单设置,重启服务,用tom、lucy用访问共享,执行pwd看命令结果。 第1步,编辑vsftpd.conf文件。 vim /etc/vsftpd/vsftpd.conf 启用如下chroot的4行代码 chroot_local_user=YES allow_writeable_chroot=YES chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list
第2,修改chroot_list名单文件。(此文件中的用户不启用牢笼功能) vim /etc/vsftpd/chroot_list 添加如下内容 lucy lily
第3步,重启服务,分别在ftp命令行用tom、lucy、lily做访问测试,执行pwd命令看显示的工作路径。 测试结果:tom启用了牢笼功能,lucy、lily是不启用牢笼功能的。
情况4.给指定的少数普通用户启用牢笼功能(即少数人加锁,黑名单)。设置如下 #chroot_local_user=YES 启用本地用户chroot牢笼功能(change root),默认为NO不启用 allow_writeable_chroot=YES 允许chroot牢笼功能下执行写操作(centos7中必加此行) chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list 指定chroot_list文件及其路径
测试练习:将vsftpd.conf文件中的chroot功能做如下chroot_list黑名单设置,重启服务,用tom、lucy用访问共享,执行pwd看命令结果。 第1步,编辑vsftpd.conf文件。 vim /etc/vsftpd/vsftpd.conf 启用如下chroot的4行代码 #chroot_local_user=YES allow_writeable_chroot=YES chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list
第2,修改chroot_list名单文件。(此文件中的用户不启用牢笼功能) vim /etc/vsftpd/chroot_list 添加如下内容 lucy lily
第3步,重启服务,分别在ftp命令行用tom、lucy、lily做访问测试,执行pwd命令看显示的工作路径。 测试结果:lucy、lily启用了牢笼功能,tom是不启用牢笼功能的。
练习:将vsftpd.conf配置文件中的chroot功能的配置选项代码全部注释掉。再继续研究新的功能。
需求:实现允许anonymous匿名用户既能下载又能上传文件文件。 需求分析:匿名用户要想对共享目录有rw可读可写的权限,必须满足以下2个条件: 1.文件共享软件必须允许这个用户有可读可写的权限。 2.用户对共享目录自身要有可读可写的权限。 3.匿名用户仅允许上传文件到/var/ftp中的子目录中。如/var/ftp/upload,且ftp匿名用户对upload目录要有可读可写权限。
警告:/var/ftp目录的属主、属组不允许修改,且other权限不允许有w可写权限,否则用ftp匿名用户访问共享时会提示下面这个500错误: 500 OOPS: vsftpd: refusing to run with writable root inside chroot() Login failed. 421 Service not available, remote server has closed connection
实施参考: 第1步,在vsftpd.conf配置文件中允许anonymous匿名用户有可读可写的权限。 vim /etc/vsftpd/vsftpd.conf 找到如下代码,去掉29、33行的#号 12 anonymous_enable=YES 29 #anon_upload_enable=YES 允许匿名用户上传 33 #anon_mkdir_write_enable=YES 允许匿名用户用mkdir创建目录 anon_other_write_enable=YES 允许匿名用户执行rm删除等操作(添加此行) anon_world_readable_only=NO 关闭匿名用户只读的限制(为YES时会无法下载)
第2步,用root用户创建/var/ftp/upload目录,权限为777或属主和属组均为ftp,重启vsftpd服务,在win7/10中用ftp匿名用户访问共享ftp://192.168.11.11,上传一个文件到upload共享目录,看是否能传上去。结果是可以匿名用户上传文件到upload目录中。 mkdir -v /var/ftp/upload chown -v ftp:ftp /var/ftp/upload 或 chmod -v 777 /var/ftp/upload systemctl restart vsftpd
vsftpd.conf的其他配置选项:man vsftpd.conf
48 #chown_uploads=YES 允许修改上传后的文件的属主和属组
49 #chown_username=whoever 文件的属主、属组修改成当前访问共享的用户
53 #xferlog_file=/var/log/xferlog 指定xferlog日志文件名及其路径,当xferlog_enable为YES时,此项默认为启用
60 #idle_session_timeout=600 (重点)空闲会话超时为600秒(即10分钟),默认开启了,时间是300秒
idle空闲会话超时时间是指用户登录到ftp服务后,n秒都没执行操作,服务器自动将此用户断开连接。(防止客户机占用服务器网络资源)
63 #data_connection_timeout=120 (重点)数据连接超时时间为120秒,默认开启了,时间是300秒
data_connection超时时间是指当客户端下载或上传文件时,由于网络不稳定,当数据掉线时间超过120秒,文件就下载或上传失败。(防止客户机占用服务器网络资源)
67 #nopriv_user=ftpsecure
72 #async_abor_enable=YES 允许异步方式传输数据
83 #ascii_upload_enable=YES 允许以ascii编码方式上传文件,默认为NO,是以binary二进制方式上传
84 #ascii_download_enable=YES 允许以ascii编码方式下载文件,默认为NO,是以binary二进制方式下载
87 #ftpd_banner=Welcome to blah FTP service. (重点)自定义banner欢迎提示语(标语)(用于打广告)
banner_file=/etc/vsftpd/banner.txt (重点)自定义banner标语文件(用于打广告)
91 #deny_email_enable=YES
93 #banned_email_file=/etc/vsftpd/banned_emails
local_max_rate=0 本地用户(普通用户)最大传输速度,0是不限速。单位是byte字节 anon_max_rate=0 匿名用户最大传输速度,0是不限速。单位是byte字节 anon_other_write_enable=YES 允许匿名用户执行除了新建和上传外的其他权限,如删除、改名。
listen_port=21 监听21号端口(默认开启) pasv_enable=YES 启用pasv被动模式 pasv_min_port=5000 指定pasv被动模式的最小端口号 pasv_max_port=6000 指定pasv被动模式的最大端口号 dual_log_enable=YES 启用/var/log/xferlog 和 /var/log/vsftpd.log 双日志文件(默认关闭) max_per_ip=数字 单个IP的最大并发量(即单个客户端IP能同时登录的数量),同时下载几个文件 max_clients=数字 最大客户端数量(即并发量),即允许有多少个IP的客户端同时访问服务器
user_config_dir=/etc/vsftpd/userconf 定义用户个人配置文件所在目录。定义了这句之后,就要在userconf目录中创建以用户名命名的文件,这就是这个用户的配置文件。其中加入一条local_root=/home/ftp为指定用户登录目录。 setproctitle_enable=YES 将所有连接以不同的进程体现出来
练习:要求在vsftpd.conf中对每个用户限制不同的文件传输速度,并且设置不同的登录“标示语”。 第1步,在vsftpd.conf配置文件中添加如下功能选项。 vim /etc/vsftpd.conf 添加如下内容 user_config_dir=/etc/vsftpd/userconf 指定用户个性化配置文件的主目录
第2步,创建/etc/vsftpd/userconf目录,给tom限制上传和下载速度为2MB/s(约2000000字节)。 mkdir -v /etc/vsftpd/userconf vim /etc/vsftpd/userconf/tom 添加如下设置内容 local_max_rate=2000000
第3步,参考lucy的限速设置方法,给lucy设置成限制上传和下载速度为8M/s(约2000000字节)。 vim /etc/vsftpd/userconf/tom 添加如下设置内容 local_max_rate=8000000
vsftpd的tcp_wrapers防火墙设置 查网络服务对应的端口手册文件:more /etc/services tcp_wrapers的功能:是一个迷你的TCP防火墙,可以用来做基于TCP协议的应用程序的IP安全访问控制。 配置文件: 白名单:/etc/hosts.allow 黑名单:/etc/hosts.deny
技巧:让少数人为白户,那么先在hosts.deny中做拒绝所有(all)黑名单,然后在hosts.allow中做少数IP的放行白名单。
配置文件格式:man hosts.allow 格式说明: 守护进程名称:主机名或IP地址 守护进程名称可以是:vsftpd、sshd、httpd、in.tftpd等。 主机名或IP地址可以是:all所有主机、主机名、域名(网址)、IP地址、网络地址、IP地址范围。
设置举例: vim /etc/hosts.deny 黑名单 vsftpd:192.168.11.1 拒绝192.168.11.1这台主机访问vsftpd共享 sshd:192.168.11.1 拒绝192.168.11.1这台主机访问sshd共享
注意:做完hosts.deny黑名单测试后,请将hosts.deny文件中的设置注释掉或删掉。然后再做下面的vsftpd虚拟用户项目。
vsftpd虚拟用户 虚拟用户:即非useradd创建的用户账号(非/etc/passwd中的账号),而是用vim创建的属于vsftpd的独立用户账号。 虚拟用户的优势:可以避免系统中的用户账号过多,让vsftpd文件共享软件独立管理自己的用户账号。
虚拟用户账号文件格式: 文件中的奇数行是用户账号,偶数行是用户的密码。
vsftpd的虚拟用户方案思路: 0.准备工作:确保vsftpd文件共享服务已安装,并已启动vsftpd服务,且关闭了selinux和firewalld安全功能。 1.创建虚拟用户账号文件。 2.将虚拟用户账号用db_load转换成加密的数据库格式文件。 3.在vsftpd的pam认证文件中添加虚拟用户账号文件的认证关系。 4.用useradd创建一个普通用户账号vftper。 5.在vsftpd.conf配置文件中启用guest来宾(即虚拟用户)功能,设置一个真实用户账号,并将真实用户账号vftper和虚拟用户账号文件关联起来。 6.给每个虚拟用户账号设置独立的共享访问速度和访问目录。 7.重启vsftpd服务,并分别用虚拟用户账号访问共享。
vsftpd虚拟用户实施思路: 0.准备工作:确保关闭了selinux和firewalld安全功能。且vsftpd文件共享服务已安装,并已启动vsftpd服务。 setenforce 0 getenfroce systemctl stop firewalld systemctl status firewalld
1.创建虚拟用户账号文件。 cat > /etc/vsftpd/vuser.txt <<EOF f1 passf1 f2 passf2 f3 passf3 EOF
2.将虚拟用户账号转换成加密的数据库格式文件。 yum provides db_load yum install -y libdb-utils cd /etc/vsftpd ls db_load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuserdb.db chmod -v 600 /etc/vsftpd/vuserdb.db
db_load选项: -T 是translation转换文件格式 -t hash 指定格式转换的算法为hash算法 -f 是指定要转换格式的文件 /etc/vsftpd/vuser.txt 是要转换格式的文件 /et/vsftpd/vuserdb.db 是转换格式之后的文件
3.在vsftpd的pam认证文件中添加虚拟用户账号文件的认证关系。 cp -av /etc/pam.d/vsftpd{,.bak} vim /etc/pam.d/vsftpd 做如下修改 #%PAM-1.0 #以下两行的功能:仅能实现虚拟用户访问共享,普通用户不能访问共享。(不建议使用) #required 意思是必须的 sufficient 意思是满足的、备选的 #auth required pam_userdb.so db=/etc/vsftpd/vuserdb #account required pam_userdb.so db=/etc/vsftpd/vuserdb #以下功能选项的功能:既能让虚拟用户访问共享,也能让普通用户访问共享。(推荐使用) auth sufficient pam_userdb.so db=/etc/vsftpd/vuserdb account sufficient pam_userdb.so db=/etc/vsftpd/vuserdb #以下几行功能选项是vsftpd的默认pam认证文件内容。(无需修改) session optional pam_keyinit.so force revoke auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed auth required pam_shells.so auth include password-auth account include password-auth session required pam_loginuid.so session include password-auth
4.用useradd创建一个普通用户账号vftper。 useradd vftper -s /sbin/nologin id vftper ls -ld /home/vftper
5.在vsftpd.conf配置文件中设置一个真实用户账号,并将真实用户账号vftper和虚拟用户账号文件关联起来。 cd /etc/vsftpd cp -av vsftpd.conf{,.bak} cat /etc/vsftpd/vsftpd.conf vim vsftpd.conf 在文件最后添加如下内容 guest_enable=YES 允许来宾用户访问共享,即虚拟用户 guest_username=vftper 指定来宾用户名为vftper用户(即第4步新建的用户) user_config_dir=/etc/vsftpd/vuser_conf 指定用户配置文件目录 allow_writeable_chroot=YES 允许chroot功能下执行写操作(必须加此行,否则会登录失败) #user_sub_token=$USER 使用用户子令牌(通常不用)
6.给每个虚拟用户账号设置独立的共享访问速度和访问目录。 cd /etc/vsftpd mkdir -v vuser_conf cd vuser_conf #创建f1、f2虚拟用户的会员个性化设置文件,允许f1这个虚拟用户在自己的家目录中可读可写。 touch f1 f2 mkdir -v /home/vftper/{f1,f2,f3} chmod -v 777 /home/vftper/{f1,f2,f3} cat > f1 <<EOF write_enable=YES anon_world_readable_only=NO anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES local_root=/home/vftper/f1 EOF
#允许f2这个用户在自己的家目录中可读,但不可写。 cat > f2 <<EOF #添加local_root这行即可,其余内容可以不添加。 local_root=/home/vftper/f2 write_enable=NO anon_world_readable_only=NO anon_upload_enable=NO anon_mkdir_write_enable=NO anon_other_write_enable=NO
EOF
7.重启vsftpd服务,并分别用虚拟用户账号访问共享。 systemctl restart vsftpd ftp 192.168.11.11 -->用f1、f2虚拟用户分别访问共享,测试文件的上传。
到此,vsftpd的虚拟用户项目试验完毕。
使用ssl登入 cd /etc/pki/tls/certs openssl req -new -x509 -nodes -out vsftpd.pem -keyout vsftp.crt
vim /etc/vsftpd/vsftpd.conf. 创建vsftpd的ssl认证配置文件 ssl_enable=YES ssl_sslv2=YES ssl_sslv3=YES ssl_sslv1=YES rsa_cert_file=/etc/pki/tls/certs/vsftpd.crt
重启vsftpd服务后,就可用客户端来尝试SSL加密连接了。
ftp和lftp客户端程序的操作功能:
ftp命令: 用法:ftp [选项] 主机名或IP地址
练习:用tom用户登录到ftp 192.168.11.11服务器上,执行如下的ftp内部命令。
ftp的内部操作命令: help或? 显示命令帮助 pwd 显示远程工作目录路径 ls 显示远程文件名列表 !本地命令 执行客户机本地的操作命令,如!date 、 !ls lcd 切换或查询本地(local)路径,如 lcd /etc 、 lcd /opt cd 切换远程网络资源路径 put 上传单个本地当前目录下的文件到远程服务器的的当前工作目录下.如put group mput 上传多个本地当前目录下的文件到(同上),如 mput hosts* get 下载单个文件到当前的本地工作目录下,如 get group mget 下载多(multi)个文件到当前的本地工作目录下,如 mget host* 注意:put、mput、get、mget操作只用对本地当前工作目录中的文件操作。 prompt 关闭或开启交互式模式,即是否提示yes、no verbose 开启或关闭执行过程进度 delete 删除服务器上的单个文件 mdelete 删除服务器上的多个文件,如 mdelete hosts* mkdir 在共享目录中新建目录,如 mkdir haha rmdir 在共享目录中删除目录,如 rmdir haha passive 关闭或开启ftp的被动数据传输模式 user 切换用户登录账号 rename 修改共享目录中的文件名
lftp命令: 用法:ftp [选项] 主机名或IP地址 例:lftp 192.168.11.11 -u tom,0 说明:-u 是指定用户名和密码,两者间用逗号分隔
练习:用tom用户登录到ftp 192.168.11.11服务器上,执行如下的ftp内部命令。 lftp 192.168.11.11 -u tom,0
lftp的内部操作命令: help或? 显示命令帮助 pwd 显示远程工作目录路径 ls 显示远程文件名列表 !本地命令 执行客户机本地的操作命令,如!date 、 !ls lcd 切换或查询本地(local)路径,如 lcd /etc 、 lcd /opt cd 切换远程网络资源路径 put 上传单个本地当前目录下的文件到远程服务器的的当前工作目录下.如put /etc/group mput 上传多个本地当前目录下的文件到(同上),如 mput /etc/host* get 下载单个文件到当前的本地工作目录下,如 get group mget 下载多(multi)个文件到当前的本地工作目录下,如 mget host* mirror 下载共享目录中当前的所有文件到本地的当前目录下 mrm 删除共享目录中的多个文件,mrm删目录需要用-r选项,如 mrm host* 注意:put、mput、get、mget操作可用绝对路径。
win7/10下的ftp客户端软件: ftp、资源管理器(Win+E)、flashFXP
flashFXP客户端软件:优点是支持断点续传功能。 断点续传:是指客户机重启系统后可以继续下载未完成文件内容。
ftp的工作模式:主动port、被动passive模式
ftp主动(port)模式工作过程: 1.客户机和服务器建立连接关系(登录): 客户机(>1024的随机端口号) <----> 服务器 21号port 2.双方建立数据连接关系,传输数据:客户机(>1024的随机port) <----> 服务器 20号port
ftp被动(pasv)模式工作过程: 1.客户机和服务器建立连接关系(登录): 客户机(>1024的随机端口号) <----> 服务器 21号port 2.双方建立数据连接关系,传输数据:客户机(>1024的随机port) <----> 服务器(>1024的随机port) 说明:当ftp服务器上有防火墙时,通常客户机是以被动模式去访问ftp服务器的。在ftp服务器的vsftpd.conf和防火墙上要指定放行的被动模式端口范围的最小值和最大值。 vsftpd.conf 的被动模式端口范围: pasv_min_port=5000 pasv_max_port=6000
vsftpd共享小结: 1.ftp是什么?实现什么功能?2个工作端口? 2.vsftpd的查、安装、启动、允许开机自启动、查状态、查配置文件? 3.vsftpd黑、白名单。ftpusers、user_list。 4.vsftpd.conf主配置文件的功能选项。如限速、并发量、banner标示语等设置。 5.vsftpd的chroot牢笼功能。熟悉四行chroot的代码。 6.ftp、lftp是客户端程序的命令使用:通过命令做文件的上传、下载。 7.vsftpd的虚拟用户(guest来宾用户)功能。 8.vsftpd的匿名用户上传功能的实现。 9.ftp服务的主、被动模式工作过程。主、被动模式的区别?
到此,vsftpd文件共享的技术点告一段落.
samba文件共享 功能:采用smb和netbios协议实现linux和windows之间的文件共享。windows的网上邻居和文件夹共享就是采用的smb和netbios协议开发的软件。
smb:是服务器消息块(server message block)的缩写。 netbios:是网络基本输入输出系统(net basic input output system)的缩写。此协议是采用计算机主机名来实现主机间的互访。目前被直接捆绑在IP协议簇中。
smb协议的开发者:SMB最初是IBM的贝瑞·费根鲍姆(Barry Feigenbaum)研制的,其目的是将DOS操作系统中的本地文件接口“中断13”改造为网络文件系统。
samba共享服务的端口号:445(data share) 139(netbios主机名解析)
环境准备: 关闭安全功能,并查状态: systemctl stop firewalld ; setenforce 0 systemctl status firewalld ; getenforce
samba软件的安装: 说明:samba是服务器端软件 samba-client是端客户软件 samba-common 是samba的公用程序文件
查是否已安装:rpm -qa | grep samba 或 rpm -q samba samba-common samba-client 安装:yum install -y samba samba-common samba-client 查软件的文件列表:rpm -ql samba 查配置文件列表:rpm -qc samba samba-common
samba服务管理: 重启动服务:systemctl restart smb 允许开启自动启动:systemctl enable smb 查服务状态:systemctl status smb 查samba的服务端口:netstat -atunlp | grep smb 或 lsof -i:445 netstat选项:是查看网络进程状态(net stat)的命令。 -a 即all,显示所有网络进程 -t 即tcp,显示TCP协议的网络进程 -u 即udp,显示UDP协议的网络进程 -n 即number,以数字方式显示协议的端口号,例 ftp 21、http 80、ssh 22、vnc 5900等 -l 即listen,只显示状态为listen监听的网络进程 -p 即PID进程号,显示网络进程的PID号 网络进程状态(用man netstat可查):listen监听 ESTABLISHED已连接 CLOSE_WAIT等待关闭
共享需要的文件: samba的默认共享目录: 普通用户:访问的是普通用户自己的家目录,通常是"/home/用户名"文件夹 自定义共享目录:需要在/etc/samba/smb.conf主配置文件中设置共享参数
samba-common、samba的配置文件:rpm -qc samba-common samba /etc/logrotate.d/samba 日志轮滚策略文件 /etc/samba/lmhosts 本地主机配置文件 /etc/samba/smb.conf (重点)samba的主配置文件,用于实现samba的环境设置和自定义共享目录 /etc/sysconfig/samba samba的系统配置文件
/etc/openldap/schema/samba.schema samba的openldap认证配置文件 /etc/pam.d/samba samba的pam认证文件
练习:在系统中创建用户s1、s2、s3,用pdbedit将3个用户分别设置成samba用户并指定密码,用pdbedit显示samba用户账号列表,用win7/10访问samba共享。 useradd s1 新建s1普通用户 useradd s2 useradd s3 pdbedit -L 显示samba用户名列表 pdbedit -a s1 将s1用户设置成samba用户 pdbedit -a s2 pdbedit -a s3 pdbedit -L pdbedit -Lv s1 显示s1用户的详细信息
win7/10访问samba共享:Win+R---> \192.168.11.11\s1回车---> 输入s1用户名和密码--->上传1个文件。
linux中查samba共享资源:smbclient -L 192.168.11.11 在输入密码提示是,直接回车即可。
linux中登录到samba服务器:smbclient //192.168.11.11/s1 -U s1%0
smbclient软件的内部命令:
help或? 显示命令帮助
ls 显示共享目录的文件名列表
!命令 执行客户端本地的shell命令。如 !date 、 !ls 、!pwd
lcd 切换本地(local)的工作目录路径。如 lcd /etc
pwd 显示共享目录的工作路径
prompt 关闭或开启交互式操作模式,即是否提示Yes/No
mkdir 在共享目录中新建目录,如 mkdir ak
mput 上传多个本地当前目录下的文件到远程服务器的的当前工作目录下
如mput host*
mget 从共享目录中下载多个文件到本地当前目录下。如 mget hosts
rm 删除文件
rmdir 删除目录
exit 退出smbclient软件
samba的自定义共享设置:man smb.conf
练习:要求用samba共享/opt目录,共享名称为optsmb,允许任何人对此目录可读可写。 第1步,用vim编辑/etc/samba/smb.conf配置文件。 vim /etc/samba/smb.conf 在文件最后添加如下内容 [optsmb] 共享名称(商标) comment=opt dir share 描述信息(内容随意打,自己看着办) path=/opt 共享目录路径 writable=yes 开启可写权限 browseable=yes 允许在网上邻居中显示(浏览) public=yes 或 guest ok=yes 允许匿名访问共享 #valid users=s1 只允许s1用户有效访问共享的(即白名单) #invalid users=s3 只禁止s3用户访问共享(即黑名单)
第2步,检测smb.conf配置文件语法,重启smb服务,用s2用户做共享访问测试。
testparm 检测smb.conf配置文件语法
systemctl restart smb
smbclient //192.168.11.11/optsmb -U s2%0
ls
lcd /etc
put hosts 提示“无权限” 按下方操作步骤来解决
exit
第3步,查看/opt目录的权限,将他的other权限改为rwx。 ls -ld /opt chmod -v o+rwx /opt (不安全的做法)将/opt目录的other权限设置为rwx可读可写可执行
安全的权限设置方法: chmod -v o-w /opt getfacl /opt 查/opt目录的FACL权限 setfacl -m u:s3:rwx /opt 在/opt目录上设置FACL权限,允许s3用户可读可写可执行
第4步,再次执行第2步中的smbclient的相关操作。分别用s2、s3用户访问共享,做文件上传操作,看哪个用户上传文件时提示错误“NT_STATUS_ACCESS_DENIED opening remote file”。
第5步,用win7/10访问samba共享的optsmb名称所对应的名称的目录。分别用s2、s3用户访问共享。 win7/10查samba共享资源:Win+R---> cmd ---> new view 192.168.11.11
访问方法一:Win+R---> \192.168.11.11\optsmb回车---> 输入s3用户名和密码--->上传1个文件。 访问方法二:鼠标右击“计算机图标”---> 映射网络驱动器--->输入 \192.168.11.11\optsmb--->不勾选“登录时重新连接”,勾选“使用其他凭据连接”--->确定--->输入s3用户名和密码--->确定即可。 访问方法三:Win+R--->cmd--->net use k: \192.168.11.11\optsmb 密码 /user:tom
断开映射的网络驱动器:net use * /del
win7/10系统中访问samba文件共享的缓存记录的清除: 首先,关闭访问共享的窗口。 然后,Win+R--->cmd---> net use * /del /y 清除共享访问记录 ---> gpupdate /force 强制刷新组策略
samba的虚拟用户: samba的虚拟用户是指给一个真实的samba用户定义多个别名(即绰号)。他们只是用户名不同,但是共用samba真实用户的密码。
Samba虚拟用户的实现方法: 练习:采用samba虚拟用户功能,给s3用户分别设置tom、lucy这2个别名,给s2用户分别设置ak、bk这2个别名。分别在smbclient命中用s2、s3的别名访问共享。
第1步, 新建用户别名名单文件(即虚拟用户名单文件)。 vim /etc/samba/vuser s2 = ak bk s3 = tom lucy
第2步,修改smb.conf主配置文件,在文件中指定虚拟用户名单文件路径。 vim /etc/samba/smb.conf [global] (全局环境设置)找到此行 username map=/etc/samba/vuser (添加此行)指定虚拟用户名单文件路径
第3步,执行testparm命令,再重启smb服务,分别在smbclient中用tom、ak用户做访问测试。验证看到的共享文件是什么?看谁有权限执行mkdir haha? testparm systemctl restart smb smbclient //192.168.11.11/optsmb -U tom%0 执行操作:ls mkdir haha 能正常创建目录 rmdir haha 能正常删除目录
smbclient //192.168.11.11/optsmb -U ak%0 执行操作:ls mkdir haha 提示错误(无权限)"NT_STATUS_ACCESS_DENIED……"
练习:在192.168.11.12客户机上,将192.168.11.11的optsmb共享名称所对应的目录挂载到/mnt/smbgua目录中。查看挂载状态,查看挂载点目录的文件名列表。 smbclient -L 192.168.11.11 查指定服务器上的samba共享资源 mkdir -v /mnt/smbgua mount -t cifs //192.168.11.11/optsmb /mnt/smbgua -o username=tom,password=0 df -hT ls -l /mnt/smbgua
smb.conf主配置文件的其他功能选项:man smb.conf smb.conf配置文件内容由global全局环境设置、共享目录设置两部分组成。
smb.conf的默认设置选项:
[global] 全局环境设置
printcap name = cups 跟打印机有关的选项
security = USER 安全等级设置为USER用户级,即需要用户名和密码验证。还可以是什么呢,请查man手册。
username map = /etc/samba/vuser (自己添加的)虚拟用户账号文件
workgroup = SAMBA 计算机所在的局域网的工作组名
idmap config * : backend = tdb samba的用户账号数据库文件
cups options = raw 跟打印机有关的选项
[homes] 用户家目录的共享设置 browseable = No 不显示在网上邻居中 comment = Home Directories 注释说明信息 inherit acls = Yes 允许继承ACL权限 read only = No 禁止只读操作,即可读可写,等同于writable=Yes valid users = %S %D%w%S 有效用户账号。%S是samba服务中的用户账号,%D当前域或当前工作组中的用户账号,
smb.conf中基于用户访问控制的选项: browseable=yes 允许在网上邻居中显示共享名称 public=yes 或 guest ok=yes 允许匿名用户访问 writable=yes 或 readonly=no 允许写操作,即可写权限 #valid users=用户1,用户n,@组名 指定允许访问共享的用户账号(即白名单) #invalid users=s3,@组名 只禁止s3用户访问共享(即黑名单) 技巧:只允许少数人能访问共享时用白名单。只禁止少数人能访问共享时用黑名单。
write list=用户1,用户n,@组名 指定有可写权限的用户账号(即白名单)
smb.conf中基于IP访问控制的选项:man smb.conf 进入后执行/150就可以查到例子
hosts allow = 192.168. EXCEPT 192.168.11.1 允许192.168.*.的所有主机访问共享,除了192.168.11.1之外
hosts deny = 192.168. EXCEPT 192.168.11.1 不允许192.168..*的所有主机访问共享,除了192.168.11.1之外
说明:hosts allow设置可以放在[global]全局环境设置中(限制访问所有共享目录),也可以放在自定义共享目录的设置中(仅限制访问此目录)。