搭建服务FTP&samba
第1章 FTP服务部署
在Linux下,我们应用最广泛的FTP服务程序是 vsftpd (Very Secure FTP Daemon),从名字我们也可以看出,其提供了非常安全的FTP服务。vsftpd 是一个UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux, BSD, Solaris, HP-UX 以及 IRIX 上面。它支持很多其他的 FTP 服务器不支持的特征。例如:
① 非常高的安全性需求
②带宽限制
③创建虚拟用户的可能性
④高速
...
可以说 vsftpd 给我们提供了一个快速的、稳定的且相当安全的FTP服务
1.1 服务端配置
1.1.1 第一个里程碑: 检查是否有这个软件,(没有则安装软件)
[root@test ~]# rpm -qa vsftpd # 在CentOS下默认没有安装 vsftpd 这个FTP程序
我们通过 yum install vsfptd 来进行安装
[root@test ~]# yum install vsftpd
说明:
服务的启动配置文件
/etc/rc.d/init.d/vsftpd
安装完之后在/etc/vsftpd/路径下会存在三个配置文件
/etc/vsftpd/vsftpd.conf 主配置文件 /etc/vsftpd/ftpusers 指定哪些用户不能访问FTP服务器,这里的用户包括root在内的用户。 /etc/vsftpd/user_list 指定的用户是否可以访问ftp服务器。 通过vsftpd.conf文件中的userlist_deny的配置来决定配置中的用户是否可以访问, userlist_enable=YES ,userlist_deny=YES ,userlist_file=/etc/vsftpd/user_list 这三个配置允许文件中的用户访问FTP。
1.1.2 第二个里程碑: 编写配置文件
ftp服务有默认的配置文件,将原配置文件备份,重新编写配置文件
[root@test ftp]# mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak [root@test ~]# cat /etc/vsftpd/vsftpd.conf #20171014 #HZS anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES listen=YES pam_service_name=vsftpd userlist_enable=YES tcp_wrappers=YES
默认配置文件说明:
参数 |
说明 |
anonymous_enable=YES |
允许匿名用户 |
local_enable=YES |
允许使用本地用户账号登陆 |
write_enable=YES |
允许ftp用户写数据 |
connect_from_port_20=YES |
通过20端口传输数据 |
#anon_mkdir_write_enable=YES |
是否允许匿名账户在FTP服务器中创建目录 |
xferlog_enable=YES |
启用上传和下载日志功能 |
#ascii_download_enable=YES |
是否允许使用ASCII格式来上传和下载文件 |
pam_service_name=vsftpd |
/设置PAM认证服务的配置文件名称,该文件存放在/etc/pam.d/目录下. |
userlist_enable=YES |
用户列表中的用户是否允许登录FTP服务器,默认是不允许 |
tcp_wrappers=YES |
/使用tcp_wrqppers作为主机访问控制方式 |
其他的配置参数说明:
ftpd_banner=welcome to ftp service :设置连接服务器后的欢迎信息 idle_session_timeout=60 :限制远程的客户机连接后,所建立的控制连接,在多长时间没有做任何的操作就会中断(秒) data_connection_timeout=120 :设置客户机在进行数据传输时,设置空闲的数据中断时间 accept_timeout=60 设置在多长时间后自动建立连接 connect_timeout=60 设置数据连接的最大激活时间,多长时间断开,为别人所使用; max_clients=200 指明服务器总的客户并发连接数为200 max_per_ip=3 指明每个客户机的最大连接数为3 local_max_rate=50000(50kbytes/sec) 本地用户最大传输速率限制 anon_max_rate=30000匿名用户的最大传输速率限制 pasv_min_port=端口 pasv-max-prot=端口号 定义最大与最小端口,为0表示任意端口;为客户端连接指明端口; listen_address=IP地址 设置ftp服务来监听的地址,客户端可以用哪个地址来连接; listen_port=端口号 设置FTP工作的端口号,默认的为21 local_root=path 无论哪个用户都能登录的用户,定义登录帐号的主目录, 若没有指定,则每一个用户则进入到个人用户主目录; chroot_local_user=yes/no 是否锁定本地系统帐号用户主目录(所有);锁定后,用户只能访问用户的主目录/home/user; chroot_list_enable=yes/no 启用不锁定用户在主目录的名单 chroot_list_file=/etc/vsftpd/chroot_list指定列表文件 userlist_enable=YES/NO 是否加载用户列表文件; userlist_deny=YES 表示上面所加载的用户允许登录; userlist_file=/etc/vsftpd/user_list 指定列表文件
注意:
在这里要禁止匿名登陆anonymous_enable=NO
1.1.3 第三个里程碑:创建用于FTP连接用户,设置密码
[root@test ~]# useradd ftpuser -s /sbin/nologin -M [root@test ~]# echo "ftpuser" |passwd --stdin ftpuser Changing password for user ftpuser. passwd: all authentication tokens updated successfully
1.1.4 第四个里程碑: 创建ftp共享目录,将目录所有者属于ftpuser,将 ftpuser用户家目录修改为共享目录。
[root@test ~]# mkdir /ftpshare [root@test ~]# chown ftpuser.ftpuser /ftpshare [root@test ~]# usermod ftpuser -d /ftpshare
检查配置是否正确:
[root@test ~]# ll /ftpshare/ -d drwxr-xr-x 2 ftpuser ftpuser 4096 Oct 14 10:48 /ftpshare/ [root@test ~]# tail -1 /etc/passwd ftpuser:x:501:501::/ftpshare:/sbin/nologin
1.1.5 第五个里程碑: 启动vsftpd 服务,并设置开机自启动
[root@test ~]# /etc/init.d/vsftpd start Starting vsftpd for vsftpd: [ OK ] [root@test bin]# chkconfig vsftpd on [root@test bin]# chkconfig |grep vsftpd vsftpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
1.2 客户端链接测试
第一步:打开windows上资源管理器
在地址栏中是输入服务器地址,注意ftp格式
ftp://10.0.0.250
确定,输入用户名,和密码进行登陆。
1.2.1 下载文件测试
1.2.2 上传文件测试
1.2.3 服务端检查
[root@test ftpshare]# ll total 7072 -rw-r--r-- 1 ftpuser ftpuser 7234678 Oct 14 11:13 cwRsync.zip -rw-r--r-- 1 root root 60 Oct 14 11:05 访问正常.txt
1.3 linux系统挂载ftp测试
[root@test ~]# mount -t nfs -o rw 10.0.0.250:/ftpshare/ /opt/ [root@test ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 19G 1.7G 17G 10% / tmpfs 238M 0 238M 0% /dev/shm /dev/sda1 190M 40M 141M 22% /boot 10.0.0.250:/ftpshare/ 19G 1.7G 17G 10% /opt
第2章 samba服务配置
2.1 samba服务简介
Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件,而SMB是Server Message Block的缩写,即为服务器消息块,SMB主要是作为Microsoft的网络通讯协议,后来Samba将SMB通信协议应用到了Linux系统上,就形成了现在的Samba软件。后来微软又把 SMB 改名为 CIFS(Common Internet File System),即公共 Internet 文件系统,并且加入了许多新的功能,这样一来,使得Samba具有了更强大的功能。
Samba最大的功能就是可以用于Linux与windows系统直接的文件共享和打印共享,Samba既可以用于windows与Linux之间的文件共享,也可以用于Linux与Linux之间的资源共享,由于NFS(网络文件系统)可以很好的完成Linux与Linux之间的数据共享,因而 Samba较多的用在了Linux与windows之间的数据共享上面。
SMB是基于客户机/服务器型的协议,因而一台Samba服务器既可以充当文件共享服务器,也可以充当一个Samba的客户端,例如,一台在Linux 下已经架设好的Samba服务器,windows客户端就可以通过SMB协议共享Samba服务器上的资源文件,同时,Samba服务器也可以访问网络中 其它windows系统或者Linux系统共享出来的文件。
Samba在windows下使用的是NetBIOS协议,如果你要使用Linux下共享出来的文件,请确认你的windows系统下是否安装了NetBIOS协议。
组成Samba运行的有两个服务,一个是SMB,另一个是NMB;SMB是Samba 的核心启动服务,主要负责建立 Linux Samba服务器与Samba客户机之间的对话, 验证用户身份并提供对文件和打印系统的访问,只有SMB服务启动,才能实现文件的共享,监听139 TCP端口;而NMB服务是负责解析用的,类似与DNS实现的功能,NMB可以把Linux系统共享的工作组名称与其IP对应起来,如果NMB服务没有启动,就只能通过IP来访问共享文件,监听137和138 UDP端口。
例如,某台Samba服务器的IP地址为10.0.0.163,对应的工作组名称为davidsamba,那么在Windows的IE浏览器输入下面两条指令都可以访问共享文件。其实这就是Windows下查看Linux Samba服务器共享文件的方法。
\\10.0.0.163\共享目录名称
\\davidsamba\共享目录名称
Samba服务器可实现如下功能:WINS和DNS服务; 网络浏览服务; Linux和Windows域之间的认证和授权; UNICODE字符集和域名映射;满足CIFS协议的UNIX共享等。
2.2 samba服务端部署
2.2.1 第一个里程碑: 检查软件是否安装(安装samba软件)
[root@test ~]# rpm -qa samba
安装samba服务
[root@test ~]# yum install samba -y Dependency Installed: libtalloc.x86_64 0:2.1.5-1.el6_7 libtdb.x86_64 0:1.3.8-3.el6_8.2 libtevent.x86_64 0:0.9.26-2.el6_7 samba-common.x86_64 0:3.6.23-45.el6_9 samba-winbind.x86_64 0:3.6.23-45.el6_9 samba-winbind-clients.x86_64 0:3.6.23-45.el6_9
2.2.2 第二个里程碑: 编写配置文件
samba服务默认配置文件位置为/etc/samba/smb.conf 备份该文件,重新写配置文件
[root@test ~]# mv /etc/samba/smb.conf /etc/samba/smb.conf.bak
配置文件内容:
[root@test ~]# vim /etc/samba/smb.conf [global] workgroup = WORKGROUP netbios name = Test_samba server string = Linux Samba Server TestServer security = share [test] path = /share_samba writeable = yes browseable = yes guest ok = yes ~ "/etc/samba/smb.conf" 11L, 189C written
配置文件参数说明:
参数 |
说明 |
[global] |
这段是全局配置,是必段写的。 |
workgroup |
就是Windows中显示的工作组 |
netbios name |
就是在Windows中显示出来的计算机名 |
server string |
就是Samba服务器说明,可以自己来定义;这个不是什么重要的 |
security |
这是验证和登录方式,这里我们用了share 用share,就是不用设置用户和密码了 |
[test] |
这个在Windows中显示出来是共享的目录 |
path |
可以设置要共享的目录放在哪里 |
writeable |
是否可写,这里我设置为可写 |
browseable |
是否可以浏览,可以;可以浏览意味着,我们在工作组下能看到共享文件夹。如果您不想显示出来,那就设置为browseable=no |
guest ok |
匿名用户以guest身份是登录 |
2.2.3 第三个里程碑: 创建共享目录,修改权限
[root@test ~]# mkdir -p /share_samba [root@test ~]# id nobody uid=99(nobody) gid=99(nobody) groups=99(nobody) [root@test ~]# chown nobody.nobody /share_samba -R
说明:
关于授权nobody,我们先用id命令查看了nobody用户的信息,发现他的用户组也是nobody,我们要以这个为准。有些系统nobody用户组并非是nobody 。
2.2.4 第四个里程碑: 启动smb和nmb服务,加入开机启动
[root@test ~]# /etc/init.d/smb start Starting SMB services: [ OK ] [root@test ~]# chkconfig smb on [root@test ~]# chkconfig |grep smb smb 0:off 1:off 2:on 3:on 4:on 5:on 6:off
说明:
由于未涉及域名解析,所以不启动nmb服务也可以访问
2.3 windows客户端测试
2.3.1 windows上添加网络位置(samba共享的文件夹)
打开资源管理器,右键单击,选择“添加网络位置”
输入 samba服务器的地址
格式: \\samba服务器地址\共享目录名称
说明:共享目录名称 为设置的局部变量名,我设置的为[test]。
点击下一步,设置显示的名称【可以选择默认】
至此samba共享的文件夹在winndows上添加上了 。
2.3.2 对共享文件夹进行测试
上传测试
[root@test share_samba]# pwd /share_samba [root@test share_samba]# tree ├── test.zip └── samba sever.txt
下载文件测试
2.4 在cento 6.9上测试说明samba共享
安装samba客户端
[root@test ftp]# yum install samba-client
[root@test ~]# smbclient //172.16.1.250/test WARNING: The security=share option is deprecated Enter root's password: Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.6.23-45.el6_9] Server not using user level security and no password supplied. smb: \> ls . D 0 Sat Oct 14 14:38:47 2017 .. DR 0 Sat Oct 14 13:49:02 2017 samba sever.txt A 60 Sat Oct 14 03:05:00 2017 redhat-release 27 Sat Oct 14 14:49:16 2017 test.zip A 7234678 Sat Oct 14 11:08:50 2017 38152 blocks of size 524288. 32854 blocks available
挂载方式
[root@test ~]# mount.tmpfs //10.0.0.250/test/ /mnt/ [root@test ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 19G 1.7G 17G 10% / tmpfs 238M 0 238M 0% /dev/shm /dev/sda1 190M 40M 141M 22% /boot //10.0.0.250/test/ 238M 0 238M 0% /mnt
至此samba服务配置完成。
作者:惨绿少年
出处:http://clsn.io
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。