poetry

君应有语:渺万里层云,千山暮雪,只影向谁去?

1、FTP服务

FTP(File Transfer Protocol)文件传输协议,主要功能是在服务器与客户端之间进行文件的传输。FTP协议使用明码传输,为了使用更安全的FTP协议,可以采用vsftpd(Very Secure Ftp Daemon)。

image-20200115190549585.webp

协议摘要

两种工作模式

  1. 主动模式:FTP服务器主动向客户端发起请求
  2. 被动模式:FTP服务器等待客户端发起连接请求(FTP默认工作模式)

三种用户等级

  1. 匿名用户。是一种最不安全的认证模式,任何人都可以无需密码验证而直接登录到FTP服务器。匿名用户默认访问目录是:var/ftp
  2. 本地用户:使用Linux本地的账户密码进行认证,默认访问目录是/home/person
  3. 虚拟用户:是这三种模式中最安全的一种认证模式,它需要为FTP服务单独建立用户数据库文件,虚拟出用来进行口令验证的账户信息,而这些账户信息在服务器系统中实际上是不存在的,仅供FTP服务程序进行认证使用。这样,即使黑客破解了账户信息也无法登录服务器,从而有效降低了破坏范围和影响。

限制用户活动目录(change root,简称chroot):将使用者的工作范围限定在用户的家目录。

两个指定端口

​ 21端口用来建立连接,20端口用于传输数据

配置文件

​ FTP使用系统的syslogd来进行数据记录,记录了包括用户曾经下达过的命令与用户传输数据(传输时间,文件大小等)记录,记录文件在/var/log下。

主配置文件

​ VSftpd服务程序的主配置文件在/etc/vsftpd/vsftpd.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@localhost ~]# grep -Ev '^#' /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
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=NO
listen_ipv6=YES

pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
参数 作用
listen=[YES|NO] 是否以独立运行的方式监听服务
listen_address=IP地址 设置要监听的IP地址
listen_port=21 设置FTP服务的监听端口
download_enable=[YES|NO] 是否允许下载文件
userlist_enable=[YES|NO]userlist_deny=[YESNO] 设置用户列表为“允许”还是“禁止”操作
max_clients=0 最大客户端连接数,0为不限制
max_per_ip=0 同一IP地址的最大连接数,0为不限制
anonymous_enable=[YES|NO] 是否允许匿名用户访问
anon_upload_enable=[YES|NO] 是否允许匿名用户上传文件
anon_umask=022 匿名用户上传文件的umask值
anon_root=/var/ftp 匿名用户的FTP根目录
anon_mkdir_write_enable=[YES|NO] 是否允许匿名用户创建目录
anon_other_write_enable=[YES|NO] 是否开放匿名用户的其他写入权限(包括重命名、删除等操作权限)
anon_max_rate=0 匿名用户的最大传输速率(字节/秒),0为不限制
local_enable=[YES|NO] 是否允许本地用户登录FTP
local_umask=022 本地用户上传文件的umask值
local_root=/var/ftp 本地用户的FTP根目录
chroot_local_user=[YES|NO] 是否将用户权限禁锢在FTP目录,以确保安全
local_max_rate=0 本地用户最大传输速率(字节/秒),0为不限制

PAM配置

以下配置是PAM在FTP文件中的配置,写入/etc/vsftpd/vsftpd.conf

参数 作用
anonymous_enable=NO 禁止匿名开放模式
local_enable=YES 允许本地用户模式
guest_enable=YES 开启虚拟用户模式
guest_username=virtual 指定虚拟用户账户
pam_service_name=vsftpd.vu 指定 PAM 文件
allow_writeable_chroot=YES 允许对禁锢的FTP 根目录执行写入操作,而且不拒绝用户的登录请求

FTP用户禁止登录表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
[root@centos niki]# cat /etc/vsftpd/user_list
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody

[root@centos niki]# cat /etc/vsftpd/ftpusers
# Users that are not allowed to login via ftp
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody

FTP-SElinux

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[root@linuxprobe ~]# getsebool -a | grep ftp
ftp_home_dir --> off
ftpd_anon_write --> off
ftpd_connect_all_unreserved --> off
ftpd_connect_db --> off
ftpd_full_access --> off
ftpd_use_cifs --> off
ftpd_use_fusefs --> off
ftpd_use_nfs --> off
ftpd_use_passive_mode --> off
httpd_can_connect_ftp --> off
httpd_enable_ftp_server --> off
sftpd_anon_write --> off
sftpd_enable_homedirs --> off
sftpd_full_access --> off
sftpd_write_ssh_home --> off
tftp_anon_write --> off
tftp_home_dir --> off
[root@linuxprobe ~]# setsebool -P ftpd_full_access=on

安装FTP服务

1
2
3
4
5
6
7
8
9
10
11
12
yum -y install vsftpd

#清空Iptables,因为Iptables防火墙管理工具默认禁止FTP传输协议的端口号
iptables -F
#下一步是使用service iptables save保存防火墙规则,但这里没有,我们需要安装iptables-services
systemctl stop firewalld
yum install iptables-services -y
systemctl enable iptables
systemctl start iptables
service iptables save
#安装客户端工具
yum -y install ftp

1. 匿名登录模式

参数 作用
anonymous_enable=YES 允许匿名访问模式
anon_umask=022 匿名用户上传文件的umask值
anon_upload_enable=YES 允许匿名用户上传文件
anon_mkdir_write_enable=YES 允许匿名用户创建目录
anon_other_write_enable=YES 允许匿名用户修改目录名称或删除目录

什么是umask值?

     umask值用于设置用户在创建文件时的默认权限,当我们在系统中创建目录或文件时,目录或文件所具有的默认权限就是由umask值决定的。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#首先清空文件
cat /dev/null > /etc/vsftpd/vsftpd.conf
#然后写入
cat >> /etc/vsftpd/vsftpd.conf << EOF
#匿名用户上传文件的umask值
anon_umask=022
#允许匿名用户上传文件
anon_upload_enable=YES
#允许匿名用户创建目录
anon_mkdir_write_enable=YES
#允许匿名用户修改目录名称或者删除目录
anon_other_write_enable=YES
#允许匿名访问
anonymous_enable=YES
EOF

#防止干扰
systemctl stop firewalld
setenforce 0


#重启VSftpd服务
systemctl restart vsftpd
#开机自启
systemctl enable vsftpd

image-20200116102732989.webp

2. 本地用户登录

参数 作用
anonymous_enable=NO 禁止匿名访问模式
local_enable=YES 允许本地用户模式
write_enable=YES 设置可写权限
local_umask=022 本地用户模式创建文件的 umask 值
userlist_enable=YES 启用“禁止用户名单”,名单文件为 ftpusers 和 user_list
userlist_deny=YES 开启用户作用名单文件功能
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
> /etc/vsftpd/vsftpd.conf
cat >> /etc/vsftpd/vsftpd.conf << EOF
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
pam_service_name=vsftpd #不加这一句登录就会报530的错
EOF

#防止干扰
systemctl stop firewalld
setenforce 0


#本地用户需要使用本地Linux的账号登录,这里创建一个账户并添加用户名和密码
useradd niki
echo "monian" | passwd --stdin niki
echo "This is $PWD" > /home/niki/tool.txt

#重启VSftpd服务
systemctl restart vsftpd
#开机自启
systemctl enable vsftpd

如果是530登录异常:

https://blog.csdn.net/wlchn/article/details/50855447

image-20200116110254836.webp

3. 虚拟用户登录

虚拟用户登录配置文件关系图:

  • pam_serivice_name:用户认证文件
  • guest_username:指定虚拟用户账户
  • user_config_dir:用户配置目录

image-20200116130851132.webp

虚拟用户认证即使知道了登录FTP服务器的账号密码,也不会对Linux主机造成破坏,因为虚拟认证的账号密码在Linux服务器内并不存在。正如同这里的dzq --- 123 以及gz --- 456 ,在Linux系统中并没有相关的用户。而这些虚拟的用户会统一映射到Virtual这个用户下。

关于FTP服务器使用虚拟用户登录的时候为什么还要再建立一个本地账户的解释:

由于Linux系统中的每一个文件都有所有者、所属组属性,例如使用虚拟账户“张三”新建了一个文件,但是系统中找不到账户“张三”,就会导致这个文件的权限出现错误。为此,需要再创建一个可以映射到虚拟用户的系统本地用户。简单来说,就是让虚拟用户默认登录到与之有映射关系的这个系统本地用户的家目录中,虚拟用户创建的文件的属性也都归属于这个系统本地用户,从而避免Linux系统无法处理虚拟用户所创建文件的属性权限。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#创建用户名和密码并Hash,奇数行是用户名,偶数行是密码
rm -rf /etc/vsftpd/vuser*
cat >> /etc/vsftpd/vuser.list << EOF
dzq
123
gz
456
EOF


#将用户信息文件转换为数据库并使用Hash加密
db_load -T -t hash -f vuser.list vuser.db
chmod 600 vuser.db
rm -f vuser.list

#添加用户,指定解释器nologin,使用户无法登录系统
useradd -s /sbin/nologin virtual
chmod -Rf 755 /home/virtual

cat >> /etc/pam.d/vsftpd.vu << EOF
auth required pam_userdb.so db=/etc/vsftpd/vuser
account required pam_userdb.so db=/etc/vsftpd/vuser
EOF

mkdir /etc/vsftpd/vusers_dir/
touch /etc/vsftpd/vusers_dir/dzq
cat >> /etc/vsftpd/vusers_dir/gz << EOF
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
EOF

cat >> /etc/vsftpd/vsftpd.conf << EOF
anonymous_enable=NO
local_enable=YES
guest_enable=YES
guest_username=virtual
allow_writeable_chroot=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
#修改ftp默认配置中的pam认证文件,表示服务器是根据/etc/pam.d/vsftpd.vu进行认证的
pam_service_name=vsftpd.vu
userlist_enable=YES
tcp_wrappers=YES
#该目录下定义了用户的配置,如权限之类
user_config_dir=/etc/vsftpd/vusers_dir
EOF

systemctl restart vsftpd

db_load介绍:将用户信息文件转换为数据库并使用Hash加密

参数 作用
-T 选项-T允许应用程序能够将文本文件转译载入进数据库。由于我们之后是将虚拟用户的信息以文件方式存储在文件里的,为了让Vsftpd这个应用程序能够通过文本来载入用户数据,必须要使用这个选项。如果指定了选项-T,那么一定要追跟子选项-t
-t 子选项-t,追加在在-T选项后,用来指定转译载入的数据库类型。扩展介绍下,-t可以指定的数据类型有Btree、Hash、Queue和Recon数据库。
-f 参数后面接包含用户名和密码的文本文件,文件的内容是:奇数行用户名、偶数行密码

默认登录目录是/home/virtual/

image-20200116120617812.webp

PAM认证

原文链接:https://blog.csdn.net/zhangym199312/article/details/78021998

PAM简介

  1. Sun公司于1995 年开发的一种与认证相关的通用框架机制
  2. PAM 是关注如何为服务验证用户的API,通过提供一些动态链接库和一套统一的API,将系统提供的服务和该服务的认证方式分,使得系统管理员可以灵活地根据需要给不同的服务配置不同的认证方式而无需更改服务程序,同时,PAM是一种认证框架,自身不做认证
  3. PAM(Pluggable Authentication Modules)即可插拔式认证模块,它是一种高效而且灵活便利的用户级别的认证方式,它也是当前Linux服务器普遍使用的认证方式。当然,在不同版本的Linux统中部署PAM认证是有所不同的。它提供了对所有服务进行认证的中央机制,适用于login,远程登录(telnet,rlogin,fsh,ftp,点对点协议(PPP)),su等应用程序中。系统管理员通过PAM配置文件来制定不同应用程序的不同认证策略;应用程序开发者通过在服务程序中使用PAM API(pam_xxxx( ))来实现对认证方法的调用;而PAM服务模块的开发者则利用PAM SPI来编写模块(主要是引出一些函数pam_sm_xxxx( )供PAM接口库调用),将不同的认证机制加入到系统中;PAM接口库(libpam)则读取配置文件,将应用程序和相应的PAM服务模块联系起来。

PAM架构如下图所示:

const_pam.webp

认证顺序:

Service(服务)—->PAM配置文件—–>pam_*.so

首先查看服务,查看服务上是否定义的有pam验证的信息,根据这些验证信息,去读取pam配置文件,之后,pam配置文件里面定义各种规则(我们管理员需要定义的),生效,调用pam_*.so模块。

pam.webp


2、Samba服务

简介

SMB简介:

​ Samba(Server Message Block,服务消息块)是在Linux和Unix系统上实现SMB协议的一个免费软件,提供CIFS(Common Internet File System)协议,由服务器及客户端程序构成,SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。

CIFS简介:

CIFS(Common Internet File System)文件系统也称通用Internet文件系统,它使程序可以访问远程Internet计算机上的文件并要求此计算机的服务。CIFS使用客户/服务器模式。客户程序请求远在服务器上的服务程序为它提供服务,服务器获得请求并返回响应。CIFS是公开的开放的SMB协议版本。SMB协议现在是在局域网上用于服务器文件访问和打印的协议。像SMB协议一样,CIFS在高层运行。可以看做是应用程序协议如文件传输协议和超文本传输协议的一个实现。

CIFS功能:

  1. 访问服务器本地文件并读写这些文件
  2. 与其它用户一起共享一些文件块
  3. 在断线时自动恢复与网络的连接
  4. 使用统一码文件名

CIFS 是 SMB 协议的衍生品,即 CIFS 是 SMB 协议的一种特殊实现,由美国微软公司开发。

image-20200116154820838.webp

配置文件

1
2
3
4
5
6
Samba功能
使Linux主机称为window网络中的一份子,与window系统相互分享资源
让linux主机能使用window共享的文件和打印机
使Linux主机称为Wins名称服务器,提供NetBIOS名字解析服务器
提供用户身份验证功能
支持SSL安全套接层协议
1
2
3
4
5
Samba提供服务
文件和打印机共享
用户验证和授权
名字解析
浏览(服务通告)
1
2
3
Samba守护进程
Smbd: 实现共享和验证授权功能
Nmbd: 实现名字解析和浏览服务
1
2
3
4
5
6
Samba的RPM包:
samba-common: 服务端和客户端所需要的文件
samba: 服务端软件
samba=winbind: 可选的winbind服务
samba-client: 客户端软件
samba-swat: Web配置工具

Samba服务的配置文件在/etc/samba/smb.conf下,其主要的参数和作用如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
[global]									 #全局参数。
workgroup = MYGROUP #工作组名称
server string = Samba Server Version %v #服务器介绍信息,参数%v为显示SMB版本号
log file = /var/log/samba/log.%m #定义日志文件的存放位置与名称,参数%m为来访的主机名
max log size = 50 #定义日志文件的最大容量为50KB

security = user
#安全验证的方式,总共有4种
#1. share:来访主机无需验证口令;比较方便,但安全性很差
#2. user:需验证来访主机提供的口令后才可以访问;提升了安全性
#3. server:使用独立的远程主机验证来访主机提供的口令(集中管理账户)
#4. domain:使用域控制器进行身份验证

passdb backend = tdbsam
#定义用户后台的类型,共有3种
#1. smbpasswd:使用smbpasswd命令为系统用户设置Samba服务程序的密码
#2. tdbsam:创建数据库文件并使用pdbedit命令建立Samba服务程序的用户
#3. ldapsam:基于LDAP服务进行账户验证
load printers = yes

load printers = yes #设置在Samba服务启动时是否共享打印机设备
cups options = raw #打印机的选项

[homes] #共享参数
comment = Home Directories #描述信息
browseable = no #指定共享信息是否在“网上邻居”中可见
writable = yes #定义是否可以执行写入操作,与“read only”相反

[printers] #打印机共享参数
comment = All Printers
path = /var/spool/samba #共享文件的实际路径(重要)。
browseable = no
guest ok = no #是否所有人可见,等同于"public"参数。
writable = no
printable = yes


[database] #共享名称为database
comment = Do not arbitrarily modify the database file #警告用户不要随意修改数据库
path = /home/database #共享目录为/home/database
public = no #关闭“所有人可见”
writable = yes #允许写入操作

配置命令

Pdbedit

Samba服务程序默认使用的是用户口令认证模式(user)。这种认证模式可以确保仅让有密码且受信任的用户访问共享资源,而且验证过程也十分简单。不过,只有建立账户信息数据库之后,才能使用用户口令认证模式。另外,Samba服务程序的数据库要求账户必须在当前系统中已经存在,否则日后创建文件时将导致文件的权限属性混乱不堪,由此引发错误。pdbedit命令用于管理SMB服务程序的账户信息数据库。

常用参数 含义
pdbedit -a username 新建Samba账户。
pdbedit -r username 修改Samba账户。
pdbedit -x username 删除Samba账户
pdbedit -L 列出Samba用户列表,读取passdb.tdb数据库文件。

报错:Failed to add entry for user qwer,是因为没有添加本地账户。

Semanage

semanage命令 是用来查询与修改SELinux默认目录的安全上下文。

详情:https://ipcmen.com/semanage

semanage 含义
semanage -l 查询
semanage fcontext 主要用在安全上下文方面
semanage -a 增加,你可以增加一些目录的默认安全上下文类型设置
semanage -m 修改
semanage -d 删除

SELinux安全上下文

详情:http://c.biancheng.net/view/1151.html

chcon和restorecon命令,如果一个文件的安全上下文和它默认的不匹配的话,一般情况会导致没有权限访问这个文件,这是Selinux的一种功能。

restorecon:把文件的安全上下文恢复成默认的安全上下文。

restorecon [选项】 文件或目录

  • -R:递归.当前目录和目录下所有的子文件同时恢复;
  • -V:把恢复过程显示到屏幕上;

Samba配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
yum -y install samba
#添加用户
useradd niki

#pdbedit是samba的用户管理命令,这里需要手动输入密码
pdbedit -a -u niki
#new password:monian
#retype new password:monian

mkdir /home/database
chown -Rf niki:niki /home/database

#这里如果SELINUX关闭的话,下面几行关于安全上下文的命令可以不用敲
#安装semanage
yum -y install policycoreutils-python.x86_64
#增加一条关于samba的安全上下文
semanage fcontext -a -t samba_share_t /home/database

#将/home/database的安全上下文回复
restorecon -Rv /home/database/
restorecon reset /home/database context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:samba_share_t:s0

>/etc/samba/smb.conf
cat >> /etc/samba/smb.conf << EOF
[global]
workgroup = MYGROUP
server string = Samba Server Version %v
log file = /var/log/samba/log.%m
max log size = 50
security = user
passdb backend = tdbsam
load printers = yes
cups options = raw
[database]
comment = Do not arbitrarily modify the database file
path = /home/database
public = no
writable = yes
EOF


systemctl restart smb
systemctl enable smb

挂载Samba

Windows

image-20200116150510791.webp

需要进行登录,登录用户名为niki,密码为monian

image-20200116150535133.webp

Linux

1
2
3
4
5
6
7
8
9
10
11
12
13
yum install cifs-utils
mkdir /database
cat >> /root/auth.smb << EOF
username=niki
password=monian
domain=MYGROUP
EOF

cat >> /etc/fstab << EOF
//192.168.10.10/database /database cifs credentials=/root/auth.smb 0 0
EOF

mount -a

3、NFS服务

配置文件参数

NFS的配置文件在/etc/exports中,其基本格式为:/挂在文件目录 允许访问的IP地址(权限相关)

注意NFS客户端地址与权限之间没有空格。

参数 含义
ro 只读
rw 读写
root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户
no_root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员
all_squash 无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户
sync 同时将数据写入到内存与硬盘中,保证不丢失数据
async 优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据

NFS相关包

1
2
3
4
5
6
7
8
9
10
11
12
13
14
nfs-utils:NFS主要组件,包含rpc、nfsd、和rpc.mountd这两个守护进程
nfsbind:提供rpc端口映射的守护进程
exportfs:在NFS服务器,维护nfs共享资源的命令
showmount:用来查看nfs客户端的资源共享目录
nfsstat:显示nfs状态信息
rpcinfo:显示由rpc
启动服务 systemctl start rpcbind && systemctl start nfs-server
软件包:nfs-utils
服务类型:由systemd启动的守护进程
配置单元: /usr/lib/systemd/system/nfs.service
守护进程:rpc .nfsd rpc.mountd
端口号:2049 nfsd 111 rpcbind 20048 mountd
服务端配置:/etc/exports
相关软件包: rpcbind

服务端配置

1
2
3
4
5
6
7
8
9
10
11
12
yum -y install nfs-utils
mkdir /nfs
chmod -Rf 777 /nfs/
echo "This is NFS" > /nfs/nfs.txt

cat >> /etc/exports << EOF
/nfs *(rw,sync,no_root_squash)
EOF


systemctl restart rpcbind
systemctl restart nfs-server.service

如果windows下连接报网络错误53的话,可能是以下情况:

1
2
3
NFS服务器有一个”在非安全模式工作(允许更高的端口号)“的选项。Windows NFS客户端经常使用的是大的端口号。你可以在你的共享项设置中开启这个选项

例如:/share *(insecure,rw)

客户端配置

Windows

控制面板 ---- 程序 ---- 程序和功能:

image-20200116165524286.webp

win+r --- cmd --- 挂在

image-20200116165505217.webp

文件管理器

image-20200116165607503.webp

Linux

1
2
3
4
5
6
7
[root@linuxprobe ~]# showmount -e 192.168.10.10
Export list for 192.168.10.10:
/nfsfile 192.168.10.*

[root@linuxprobe ~]# mkdir /nfsfile
[root@linuxprobe ~]# mount -t nfs 192.168.10.10:/nfsfile /nfsfile
#想要长期挂在,可以编辑/etc/fstab文件
showmount参数 作用
-e 显示NFS服务器的共享列表
-a 显示本机挂载的文件资源的情况NFS资源的情况

自动挂载

​ 与mount命令不同,autofs服务程序是一种Linux系统守护进程,当检测到用户试图访问一个尚未挂载的文件系统时,将自动挂载该文件系统。换句话说,我们将挂载信息填入/etc/fstab文件后,系统在每次开机时都自动将其挂载,而autofs服务程序则是在用户需要使用该文件系统时才去动态挂载,从而节约了网络资源和服务器的硬件资源。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
yum -y install nfs-utils
yum -y install autofs
showmount -e 192.168.19.132
mkdir /mynfs

#配置文件格式:【挂载目录】 【子配置文件】

echo "/mynfs /etc/nfs.misc" >> /etc/auto.master

#子配置文件格式:【挂载目录】 【挂载文件类型及权限】:【设备名称】
#比如:iso -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom
#权限详情参见挂载时文件权限

echo "name1 -fstype=nfs 192.168.19.132:/nfs" >> /etc/nfs.misc
systemctl restart autofs
cd /mynfs/name1/

备份百度云

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#!/bin/bash
#自动备份百度云文件
#2020/4/16 Python2.7
#
# ----------------------------------------------------------------------------------------
# 安装依赖
# pip install requests
# pip install bypy
#
# [root@localhost ~]# bypy info
# Please visit: # 访问下边这个连接,复制授权码
# https://openapi.baidu.com/oauth/2.0/authorize?scope=basic+netdisk&redirect_uri=oob&response_type=code&client_id=q8WE4EpCsau1oS0MplgMKNBn
# And authorize this app
# Paste the Authorization Code here within 10 minutes.
# Press [Enter] when you are done # 提示在下边粘贴授权码
# a288f3d775fa905a6911692a0808f6a8
# Authorizing, please be patient, it may take upto None seconds...
# Authorizing/refreshing with the OpenShift server ...
# OpenShift server failed, authorizing/refreshing with the Heroku server ...
# Successfully authorized
# Quota: 2.015TB
# Used: 740.493GB

# 由于百度PCS API权限限制,程序只能存取百度云端/apps/bypy目录下面的文件和目录。我们可以通过:
# [root@localhost ~]# bypy list
# /apps/bypy ($t $f $s $m $d):
#
# 把本地当前目录下的文件同步到百度云盘:
# bypy upload
#
# 把云盘上的内容同步到本地:
# bypy downdir
#
# 比较本地当前目录和云盘根目录,看是否一致,来判断是否同步成功:
# bypy compare
# ----------------------------------------------------------------------------------------




# /BaiDuDS 就是我们备份百度云的本地目录
# 创建一个文件,用于存放上一次测量的Baiduyun备份大小。如果这次测量后大小相同,说明没有上传文件,不需要备份
touch /tmp/size
size_now=`du -sh /BaiDuDS | awk -F ' ' '{print $1}'`
size_before=`cat /tmp/size`

if [ "$size_now" = "$size_before" ];then
echo "File Hasn't Changed"
else
echo "File Has Changed , Update /tmp/size.."
echo "$size_now" > /tmp/size
echo "BackUp to BaiduDuYun"
# 同步文件夹到远端
bypy downdir
fi