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,username=smbfs,password=smbpwd,uid=501,gid=501 ://10.168.0.49/web/www.cmdschool.org |
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配置这里不详述)