Samba和FTP服务器以及NFS网络文件服务和SSH

来源:互联网 发布:vs2015怎么编译c语言 编辑:程序博客网 时间:2024/06/08 14:20

1 Windows与Linux文件共享--Samba

Windows与Windows之间,共享文件需要网上邻居;Windows与Linux之间共享文件可以使用Samba。
Samba是在Linux和UNIX系统上实现服务器消息块(SMB)协议的一个免费软件,由服务器及客户端程序构成。
SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。
通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。

1.1 Samba简介

安装:【yum install samba】
启动服务:【/etc/rc.d/init.d/smb start】 或 【service smb start】
Samba有两个守护进程:smbd和nmbd

  • smbd监听139TCP端口;
  • nmbd监听137和138UDP端口;
  • smbd进程的作用是处理SMB请求包,负责用户验证和文件共享;
  • nmbd进程的作用是处理浏览共享和计算机名称解析;

1.2 Samba配置

Samba配置文件应存放在:【/etc/samba/smb.conf】

包括四个设置段:

【global】设置全局环境选项

【homes】设置用户宿主目录共享

【printers】设置打印机共享

【sharefiles】设置文件共享

注意:行前有分号【;】或英镑符号【#】表示注释

1.2.1 global段选项设置


security:制定安全模式

①share  无权限验证,任何用户均可访问

②user  缺省模式,由Linux Samba服务器验证

③server  第三方主机验证

④domain  第三方主机验证(第三方必须是windows域控制器)

hosts allow:指定主机访问    或   hosts deny:指定主机进制         一般不同时使用,hosts allow优先

1.2.2 homes段选项设置

comment=Home Directories  描述信息

browseable=no   无权限共享的目录隐藏不可见

writable=yes    no只读、yes可写

valid users:指定有效用户   %s匹配每一个用户   MYDOMAIN%s匹配域名和用户

1.3 应用示例

查看系统中某个服务的设置:【getsebool -a | grep samba】

对服务进行设置:【setsebool -P samba_enable_home_dirs on】

1.3.1 示例1

允许用户通过Windows客户端访问自己的宿主目录。

①安装Samba,不需要配置文件做修改,即可实现此功能

如果安装了启用了SELinux,需要先执行:【setsebool -P samba_enable_home_dirs on】

关闭防火墙设置:

Netfilter/IPtables    【iptables -F】

SELinux 【setsebool -P samba_enable_home_dirs on】  或更改 【/etc/selinux/config】 SELINUX=disabled

②用户必须是系统用户,设置用户Samba验证密码

【smbpasswd -a 用户名】

③启动Samba服务

【/etc/rc.d/init.d/smb  start】

[root@Jiaozl-PC xiaoming]# smbpasswd -a xiaomingNew SMB password:Retype new SMB password:Added user xiaoming.[root@Jiaozl-PC xiaoming]# service smb restart关闭 SMB 服务:                                            [确定]启动 SMB 服务:                                            [确定][root@Jiaozl-PC xiaoming]# ps -le | grep smb5 S     0   4209      1  0  80   0 - 53337 poll_s ?        00:00:00 smbd1 S     0   4211   4209  0  80   0 - 53468 poll_s ?        00:00:00 smbd[root@Jiaozl-PC xiaoming]# pgrep smb42094211[root@Jiaozl-PC xiaoming]# 
④Windows客户端访问Samba服务器共享资源

“开始”---“运行”,输入\\Samba服务器地址

⑤Samba服务器端查看访问的客户端信息

【smbstatus】

[root@Jiaozl-PC xiaoming]# smbstatusSamba version 3.6.23-43.el6_9PID     Username      Group         Machine                        -------------------------------------------------------------------4372      xiaoming      xiaoming      jiaozl-pc    (192.168.246.1)Service      pid     machine       Connected at-------------------------------------------------------xiaoming     4372   jiaozl-pc     Sat Jun  3 15:00:21 2017No locked files[root@Jiaozl-PC xiaoming]# 

【ls  /var/log/samba/】查看日志信息

⑥Windows端取消远程连接

【net   use * /delete /y】命令      【net  use】显示已经建立的连接

⑦连接上后,可以映射网络驱动器


1.3.2 示例2

设置Samba共享目录/software,允许用户jack与mary可以通过Windows客户端访问,并且具有读写权限。

①创建目录/software,添加用户jack与mary

②如果安装了SELinux,执行命令启动用户可访问系统目录:【chcon -t samba_share_t  共享目录】

③在Samba配置文件/etc/samba/smb.conf末尾添加:

[共享名]path=共享目录valid users=指定访问用户   可以多个,以空格分开writable=权限   yes or  no

编写完后,使用【testparm】命令检测语法错误
④给用户samba验证密码

【smbpasswd  -a  用户名】

⑤重启服务 

⑥同时要设置,用户对/software的w权限

将两个用户都加到一个组;将目录的所属组改为这个组;更改目录所属组权限;

[root@Jiaozl-PC /]# ls -dl softwaredrwxr-xr-x. 2 root root 4096 6月   3 15:18 software[root@Jiaozl-PC /]# groupadd softadmin[root@Jiaozl-PC /]# gpasswd -a testuser1 softadminAdding user testuser1 to group softadmin[root@Jiaozl-PC /]# gpasswd -a testuser2 softadminAdding user testuser2 to group softadmin[root@Jiaozl-PC /]# grep softadmin /etc/groupsoftadmin:x:1010:testuser1,testuser2[root@Jiaozl-PC /]# chgrp softadmin /software[root@Jiaozl-PC /]# ls -dl softwaredrwxr-xr-x. 2 root softadmin 4096 6月   3 15:18 software[root@Jiaozl-PC /]# chmod g+w /software/[root@Jiaozl-PC /]# ls -dl softwaredrwxrwxr-x. 2 root softadmin 4096 6月   3 15:18 software[root@Jiaozl-PC /]# 

1.3.3 示例3

建立一个公共的只读目录/public,所有人都可以浏览目录的内容,用于内部共享资料。


1.3.4 示例4

建立部门资料共享目录/hr,部门每个人都能读写,但不能删除别人的文件。


1.4 Samba额外篇

1.4.1 查看是否已经安装了samba(http://www.cnblogs.com/whiteyun/archive/2011/05/27/2059670.html)

【rpm -q samba】
如果有,则卸载它【rpm -e samba】或【rpm -e --nodeps samba】
也可以通过在控制台输入【setup】,然后进入【system services】,查看系统中安装的所有服务(其中【】中有*的表示默认启动)。

1.4.2 安装samba

【rpm -ivh samba-common-3.0.33-3.29.el5_6.2.i386.rpm】

【rpm -ivh samba-client-3.0.33-3.29.el5_6.2.i386.rpm】

【rpm -ivh samba-3.0.33-3.29.el5_6.2.i386.rpm】

1.4.3 安装完毕,设置密码文件

添加一个用户,并设置密码:
【useradd youyou】
【passwd youyou】

将/etc/passwd中的用户都加到smbpasswd中
【cat /etc/passwd | mksmbpasswd.sh > /etc/samba/smbpasswd】

设置用户youyou的samba密码
【smbpasswd youyou】

1.4.4 启动samba服务

【service smb start】 启动
【service smb stop】 停止
【service smb restart】 重启

1.4.5 samba配置



2 FTP应用---vsftpd

2.1 几种FTP软件

Wu-FTP:古老、配置复杂。

Proftp:功能强大。

vsftp:安全、高速、稳定。  系统默认FTP软件

2.2 vsftpd

如果没安装,需先安装:【yum install vsftpd】

启动:【/etc/rc.d/init.d/vsftpd  start】

默认启动后即支持用户宿主目录访问及匿名访问

配置文件:【/etc/vsftpd/vsftpd.conf】

2.3 相关配置

2.3.1匿名访问配置

匿名FTP用户名:ftp    anonymous

ftp伪用户目录:/var/ftp       通过【grep  ftp  /etc/passwd】查看

anonymous_enable=YES   允许匿名登录,默认访问为ftp用户宿主目录

匿名FTP默认支持下载,但不支持上传;也可以在配置文件【/etc/vsftpd/vsftpd.conf】中,关闭匿名FTP或开启上传功能。

xferlog_enable=YES
xferlog_std_format=YES
xferlog_file=/var/log/xferlog     激活上传和下载日志
ftp_banner=Welcom to vsftp      设置欢迎信息
anon_max_rate=100000            设置匿名用户最大传输速率为100KB/s

2.3.2 用户访问配置


使用系统用户登录,输入用户名、密码,默认可以上传下载;
C:\Users\Jiaozl\Desktop>ftp 192.168.246.142连接到 192.168.246.142。220 Welcome to blah FTP service. ---by jiaozl200 Always in UTF8 mode.用户(192.168.246.142:(none)): xiaoming331 Please specify the password.密码:230 Login successful.ftp> ls200 PORT command successful. Consider using PASV.150 Here comes the directory listing.shelltestshelltest_2017-06-02.txt桌面226 Directory send OK.ftp: 收到 125 字节,用时 0.01秒 17.86千字节/秒。ftp> put C:\Users\Jiaozl\Desktop\Desktop.rar200 PORT command successful. Consider using PASV.150 Ok to send data.226 Transfer complete.ftp: 发送 1568322 字节,用时 0.01秒 130693.50千字节/秒。ftp> ls200 PORT command successful. Consider using PASV.150 Here comes the directory listing.Desktop.rarshelltestshelltest_2017-06-02.txt桌面226 Directory send OK.ftp: 收到 138 字节,用时 0.01秒 19.71千字节/秒。ftp>

2.3.3 用户访问控制


文件编写规则:每个用户占用一行
[root@Jiaozl-PC xiaoming]# cat /etc/vsftpd.user_listtestuser2testuser3[root@Jiaozl-PC xiaoming]# service vsftpd restart关闭 vsftpd:                                              [确定]为 vsftpd 启动 vsftpd:                                    [确定][root@Jiaozl-PC xiaoming]# 
使用情况:
C:\Users\Jiaozl\Desktop>ftp 192.168.246.142连接到 192.168.246.142。220 Welcome to blah FTP service. ---by jiaozl200 Always in UTF8 mode.用户(192.168.246.142:(none)): xiaoming530 Permission denied.登录失败。ftp> user testuser2331 Please specify the password.密码:530 Login incorrect.登录失败。ftp> user testuser2331 Please specify the password.密码:230 Login successful.ftp>

2.3.4 登录用户可以查看其他目录的限制

①改变目录的权限【chmod   700    /a】
② chroot 使ftp用户把宿主目录当作 / 目录,并且不能切换到宿主目录之外的目录
也可以使用列表管理此权限:

2.3.5 其他设置选项


通过【nmap   IP地址】扫描到开启了哪些TCP服务;使用另一台主机【telnet  IP地址】就可以得到远程主机SSH版本号,很容易受到攻击;
可以指定非标准端口方式,屏蔽这种nmap扫描;FTP默认端口号:21
但是,此时访问FTP需要加端口号访问:【ftp 192.168.246.142  10011】
此时通过nmap:【nmap -p1-65535  IP地址】指定端口号范围扫描,依然可以扫描到端口,但是不能获取service名称;

2.4 相关命令

  
连接【ftp  FTP地址】
查看目录下文件【ls】
切换目录【cd】
二进制传输【bin】
指定下载目录(本地,默认为cmd当前目录)【lcd】
下载文件【get】或【mget】下载多个文件
上传文件【put】或【mput】
关闭交互模式【prompt】
退出【bye】
连接FTP服务器【open】
输入FTP服务器用户名和密码【user】

2.4.0 操作命令报错

最近在公司做的项目是需要在客户端录制视频,然后通过ftp传到服务器端。客户端是windows,服务器端Linux。今天用新的电脑配置好项目之后,测试数据传输时出现了“200 port command successful. consider using pasv 425 failed to establish connection”的错误。
项目中的ftp连接和传输都是使用的bat批处理脚本完成的,所以我尝试直接用命令行连接ftp并传输,完全没问题。。。
百度,谷姐……有人说,客户端的ftp要设置成主动; 有人说,服务器端ftp配置要修改允许的端口号; 有人说是linux的防火墙~~~ ;有人说是Selinux在捣鬼。。。。
最后试了两个小时,寡人发现是windows这边客户端的防火墙问题。最简单的方法,直接关掉。

2.4.1 示例:自动化下载脚本编写

在使用ftp命令执行脚本之前,需要先安装ftp【yum install  ftp】
[root@Jiaozl-PC ftp]# ls auto.ftp  eeee.txt  test.txt[root@Jiaozl-PC ftp]# cat auto.ftp open 192.168.246.142user ftp Jiaozl-PC.combinpromptlcd /ftp.bakmget *bye[root@Jiaozl-PC ftp]# ftp -n < auto.ftp Interactive mode off.Local directory now /ftp.bak[root@Jiaozl-PC ftp]# ls /ftp.bak/auto.ftp  eeee.txt  test.txt[root@Jiaozl-PC ftp]# 

3 NFS网络文件服务

NFS-Network File System:用于UNIX/Linux系统之间通过网络进行文件共享,用户可以把网络中NFS服务器提供的共享目录挂载到本地文件目录中,可以像对本地系统一样操作NFS文件系统中的内容。
系统启动级别中:2和3的区别就在于是否启动NFS服务。

3.1 安装和启动NFS服务



安装portmap:【yum install portmap】   portmap端口111

NFS启动时,并没有特定的端口;由于连接服务需要通过端口;所以可以通过portmap实现对NFS端口动态分配;

3.2 检查RPC程序是否启动

由于NFS是通过RPC(Remote Procedure Call,远程过程调用)协议来使用远程计算机上的文件,因此系统中的RPC服务必须启动。


3.3 设置NFS共享目录


[root@Jiaozl-PC xiaoming]# cat /etc/exports /home/xiaoming/public/home/xiaoming/website 192.168.1.107(ro)/home/xiaoming/website 192.168.246.0[root@Jiaozl-PC xiaoming]# 

3.4 NFS客户端设置


[root@Jiaozl-PC xiaoming]# cat /etc/exports /public/test 192.168.1.107(ro)/website 192.168.246.142[root@Jiaozl-PC xiaoming]# showmount -e 192.168.246.142Export list for 192.168.246.142:/public  */website 192.168.246.142/test    192.168.1.107[root@Jiaozl-PC xiaoming]# mount 192.168.246.142:/website /mnt/website/[root@Jiaozl-PC xiaoming]# ls /mnt/website/[root@Jiaozl-PC xiaoming]# ls /mnt/website/test.txtYou have new mail in /var/spool/mail/root[root@Jiaozl-PC xiaoming]# mkdir /mnt/public[root@Jiaozl-PC xiaoming]# mount 192.168.246.142:/public /mnt/public/[root@Jiaozl-PC xiaoming]# ls /mnt/public/public.txt[root@Jiaozl-PC xiaoming]# df -hFilesystem            Size  Used Avail Use% Mounted on/dev/mapper/vg_nikikiy-lv_root                       50G  9.9G   37G  22% /tmpfs                 112M     0  112M   0% /dev/shm/dev/sda1             477M   42M  410M  10% /boot/dev/mapper/vg_nikikiy-lv_home                       45G   56M   43G   1% /home/dev/sdb1             5.0G  139M  4.6G   3% /web192.168.246.142:/website                       50G  9.9G   37G  22% /mnt/website192.168.246.142:/public                       50G  9.9G   37G  22% /mnt/public[root@Jiaozl-PC xiaoming]# 

3.5 开机自动挂载NFS共享


4 SSH

SSH三个组件:①ssh远程登录;②sftp文件共享(类FTP);③scp文件共享(类cp)

4.1 ssh远程登录

(一般设置)空密码用户禁止登录;root禁止登录;



4.2 远程sftp连接

[root@Jiaozl-PC ~]# sftp xiaoming@92.168.246.142Connecting to 92.168.246.142...^C[root@Jiaozl-PC ~]# sftp xiaoming@192.168.246.142Connecting to 192.168.246.142...xiaoming@192.168.246.142's password: sftp> lspublic                       shelltest                    shelltest_2017-06-02.txt     website                      下载                       公共的                    图片                       文档                       桌面                       模板                       视频                       音乐                       sftp> exit[root@Jiaozl-PC ~]#

4.3 scp使用


[root@Jiaozl-PC ~]# scp /etc/inittab xiaoming@192.168.246.142:/home/xiaomingxiaoming@192.168.246.142's password: inittab                                               100%  884     0.9KB/s   00:00    [root@Jiaozl-PC ~]#

4.4 示例:实现自动化远程备份

4.4.1 采用非对称加密使主机之间信任,而不需要输入密码


本机:
[root@Jiaozl-PC ~]# ssh-keygen -t rsaGenerating public/private rsa key pair.Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa.Your public key has been saved in /root/.ssh/id_rsa.pub.The key fingerprint is:46:1f:f5:8b:6f:03:f7:33:a5:f6:9a:d4:8d:78:b0:52 root@Jiaozl-PC.comThe key's randomart image is:+--[ RSA 2048]----+|            .    ||           . .   ||        . .   .  ||       . . . . . ||        S . E o .||       .   . B =o||          . o Xo+||           . = +o||              o..|+-----------------+[root@Jiaozl-PC ~]# scp /root/.ssh/id_rsa.pub xiaoming@192.168.246.142:/home/xiaomingxiaoming@192.168.246.142's password: id_rsa.pub                                            100%  400     0.4KB/s   00:00    [root@Jiaozl-PC ~]# 

远程主机:
[xiaoming@Jiaozl-PC ~]$ ls -a.              .dbus            .gvfs            .pulse-cookie             视频..             .esd_auth        .ICEauthority    shelltest                 图片.abrt          .gconf           id_rsa.pub       shelltest_2017-06-02.txt  文档.bash_history  .gconfd          .imsettings.log  .ssh                      下载.bash_logout   .gnome2          .local           .viminfo                  音乐.bash_profile  .gnote           .mozilla         website                   桌面.bashrc        .gnupg           .nautilus        .xsession-errors.cache         .gstreamer-0.10  public           公共的.config        .gtk-bookmarks   .pulse           模板[xiaoming@Jiaozl-PC ~]$ cat id_rsa.pub >> .ssh/authorized_keys[xiaoming@Jiaozl-PC ~]$ ls .sshauthorized_keys[xiaoming@Jiaozl-PC ~]$ ls -l | grep .ssh[xiaoming@Jiaozl-PC ~]$ ls -dl .sshdrwx------. 2 xiaoming xiaoming 4096 6月   3 21:48 .ssh[xiaoming@Jiaozl-PC ~]$ ls -l .ssh/authorized_keys -rw-rw-r-- 1 xiaoming xiaoming 400 6月   3 21:48 .ssh/authorized_keys[xiaoming@Jiaozl-PC ~]$ chmod 600 .ssh/authorized_keys [xiaoming@Jiaozl-PC ~]$ chmod 700 .ssh/[xiaoming@Jiaozl-PC ~]$ chmod 600 .ssh/authorized_keys [xiaoming@Jiaozl-PC ~]$ ls -l .ssh/authorized_keys -rw------- 1 xiaoming xiaoming 400 6月   3 21:48 .ssh/authorized_keys[xiaoming@Jiaozl-PC ~]$ ls -dl .sshdrwx------. 2 xiaoming xiaoming 4096 6月   3 21:48 .ssh[xiaoming@Jiaozl-PC ~]$ 
此时:【ssh  xiaoming@192.168.246.142】直接登录,不再需要密码

4.4.2 自动化备份脚本

crontab -e0 2 * * 0 /usr/bin/scp -rp xiaoming@192.168.246.142:/website /backup/website_$(date +%F)crontab -e0 2 * * 1-6 /usr/bin/rsync -arHz --progress --delete -e ssh xiaoming@192.168.246.142:/website /backup

4.5 rsync应用

  

4.5.1 rsync示例

     

5 加密解密

5.1 对称秘钥加密

加密与解密使用同一秘钥
优势:速度快
缺点:秘钥本身需要交换

5.2 非对称加密


用公钥加密,私钥解密 ---- 加密文件
用私钥加密,用公钥解密 --- 数字签名(验证密码)