1、前言
因为笔者在阿里云采用一种前端代理服务器,后端服务器没有公网的架构。笔者公司的程序猿们需要上传源代码时需要把源代码直接送到后端的服务器,故而笔者需要采用挂载技术,把后端的应用程序目录挂载到前端的服务器,然后由前端的vsftp提供上载代码服务,故而整理此文,以便后查。
2、环境
前端主机:
ipaddress=10.161.0.133
hostname=aSer
后端主机(linux)
ipaddress=10.171.0.222
hostname=bSer
后端主机(windows)
ipaddress=10.168.0.49
hostname=cSer
3、samba的挂载
3.1、windows共享服务端设置
In cSer:
3.1.1、增加用户
1)增加名称为smbfs的用户(windows的东西无师自通,增加用户不详述)
2)重点在于隶属于要全部清除(安全考量,拿到密码也登录不了系统)。
3)为smbfs增加密码(本文设置密码为“smbpwd”)
3.1.2、文件夹授权
1)配置共享目录-名称为“web”存放应用程序(这里不啰嗦,不懂百度)。
2)安全设置
注:以上对smbfs授予完全控制的权限
3)共享授权
注:以上授予smbfs读写权限
3.1.3、web下的子文件夹
现在应用程序有两个文件夹,分别为:
1
2
|
www.cmdschool.org
m.cmdschool.org
|
以上用于下文的测试
3.2、手动挂载
In aSer:
3.2.1、yum源安装
1
|
yum -y
install
cifs-utils
|
3.2.2、普通挂载
1)挂载
1
|
mount
-t cifs -o username=smbfs%smbpwd
//10
.168.0.49
/web
/mnt/
|
2)测试
1
2
3
|
useradd
user1
su
- user1
cd
/mnt
|
系统权限拒绝进入被挂载目录
1
2
3
|
exit
cd
/mnt
touch
test
.txt
|
root可以完成以上操作,故而windows的smbfs权限全部由root继承的缘故,其他用户没有权限。
3.2.3、带权限挂载
1)挂载
1
|
mount
-t cifs -o username=smbfs%smbpwd,dir_mode=0777,file_mode=0777
//10
.168.0.49
/web
/mnt/
|
2)测试
1
2
3
4
|
su
- user1
cd
/mnt
touch
test
.txt
ll
test
.txt
|
以上普通用户顺利完成,故而权限过大,不安全。
3.2.4、指定UID和GID挂载
注:本范例是为了解决linux下挂载winows共享目录后普通ftp上传用户无权限而设计。
1)增加测试用户
1
|
useradd
ftpuser1 -d
/mnt/
|
2)查询ftp的UID和GID
1
|
id
ftpuser1
|
查询结果如下:
1
|
uid=501(ftpuser1) gid=501(ftpuser1)
groups
=501(ftpuser1),48(apache)
|
3)挂载
1
|
mount
-t cifs -o username=smbfs%smbpwd,uid=501,gid=501
//10
.168.0.49
/web
/mnt/
|
4)测试
测试非授权用户:
1
2
3
|
su
- user1
cd
/mnt
exit
|
以上同样被拒绝
测试正式授权用户:
1
2
3
|
su
- ftpuser1
cd
/mnt
touch
test2.txt
|
以上顺利完成,ftpuser1具有完全的权限
5)清理测试用户
1
|
userdel ftpuser1
|
3.3、linux端自动挂载
手动挂载的缺点有经验的运维人员都知道,当网络不稳定的情况挂载会自动断开,需要运维人员重新挂载,故而,本文的重点在于自动挂载。
In aSer:
3.3.1、yum源安装
1
|
yum -y
install
autofs
|
3.3.2、启动服务和配置服务开机启动
1
2
|
/etc/init
.d
/autofs
start
chkconfig autofs on
|
3.3.3、配置父挂载点
vim编辑/etc/auto.master
1
|
/serWebRoot
/etc/auto
.web
|
注:/serWebRoot目录autofs会自动创建,请不要手动创建(注意后面不带"/")
3.3.4、配置子挂载点
vim编辑/etc/auto.web
1)设置子挂载点
1
|
www.cmdschool.org -fstype=cifs,rw,noperm,username=smbfs,password=smbpwd,uid=501,gid=501 :
//10
.168.0.49
/web/www
.cmdschool.org
|
注:密码有特殊符号无需转义
或者这样写:
1
|
www.cmdschool.org -fstype=cifs,rw,noperm,credentials=
/root/
.cifsauth,uid=501,gid=501 :
//10
.168.0.49
/web/www
.cmdschool.org
|
并生成一份认证文件
1
2
|
echo
'username=smbfs'
>
/root/
.cifsauth
echo
'password=smbpwd'
>>
/root/
.cifsauth
|
2)重启服务
1
|
/etc/init
.d
/autofs
restart
|
3)增加ftp正式用户
1
|
useradd
ftpuser1 -d
/mnt/
-s
/sbin/nologin
|
注:指定用户家目录和不分配shell(安全考量,ftp配置这里不详述)
4)测试
1
2
3
|
su
- ftpuser1
cd
/serWebRoot/www
.cmdschool.org
toch test3.txt
|
3.3.5、通配符的写法
1)配置子挂载点
1
|
* -fstype=cifs,username=smbfs,password=smbpwd,uid=501,gid=501 :
//10
.168.0.49
/web/
&
|
2)重启服务
1
|
/etc/init
.d
/autofs
restart
|
3)测试
1
2
|
cd
/serWebRoot/www
.cmdschool.org
cd
/serWebRoot/m
.cmdschool.org
|
4、NFS的挂载
4.1、NFS服务端配置
In bSer:
4.1.1、yum源安装
1
|
yum
install
-y nfs-utils
|
4.1.2、启动和设置开机启动
1
2
3
4
|
/etc/init
.d
/rpcbind
start
chkconfig rpcbind on
/etc/init
.d
/nfs
start
chkconfig nfs on
|
4.1.3、配置服务端
新建服务文件夹
1
2
3
|
mkdir
/var/www/w1
.cmdschool.org
chown
root:apache -R
/var/www/w1
.cmdschool.org
chmod
-R 770
|
以上授权很有意思(你会发现nfs客户端没有权限访问,下面会教你授权)
vim编辑/etc/exports
1
|
/var/www/w1
.cmdschool.org 10.161.0.133
/32
(rw,
sync
,no_root_squash)
|
4.1.4、重启服务
1
|
/etc/init
.d
/nfs
restart
|
4.2、客户端手动挂载
In aSer:
4.2.1、客户端挂载
1
2
|
showmount -e 10.171.0.222
mount
-t nfs 10.171.0.222:
/var/www/w1
.cmdschool.org
/mnt/
|
4.2.2、测试
1
|
touch
/mnt/a
.txt
|
4.2.3、NFS服务器端授权
In bSer:
查询nfs进程执行的用户名:
1
|
cat
/etc/passwd
|
grep
nfs
|
可以发现用户名:
1
2
|
rpcuser:x:29:29:RPC Service User:
/var/lib/nfs
:
/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:
/var/lib/nfs
:
/sbin/nologin
|
授权
尝试给nfsnobody授权
1
|
setfacl -m u:nfsnobody:rwx
/var/www/w1
.cmdschool.org
|
4.2.4、增加测试用户
In aSer:
1
|
useradd
ftpuser2 -d
/mnt/
-G apache
|
4.2.5、再次测试
In aSer:
1
2
3
|
su
- ftpuser2
ls
/mnt
touch
test4.txt
|
以上你会发现没有拒绝的信息。
4.2.6、清理测试用户
In aSer:
1
|
userdel ftpuser2
|
4.3、autofs自动挂载
In aSer:
1)自动挂载设置
vim /etc/auto.web
1
|
www.cmdschool.org -fstype=nfs,rw 10.171.0.222:
/var/www/1
.cmdschool.org
|
2)重启服务
1
|
/etc/init
.d
/autofs
restart
|
3)增加正式的ftp用户
1
|
useradd
ftpuser2 -d
/mnt/
-s
/sbin/nologin
-G apache
|
注:指定用户家目录和不分配shell,并附加到apche组(安全考量,ftp配置这里不详述)