文件共享服务:
nfs、samba:一般用于局域网中的文件共享
ftp、http:一般用于互联网中的文件共享
nfs服务:network file share 一般用于类unix平台文件共享,该协议没有用户认证的机制,而且数据传输是明文传输,相对不安全。
nfs服务包含组件:
rpcbind:rpc协议,远程过程调用的一个协议。tcp 111
nfs-utils:控制共享哪个目录 及权限控制
步骤:
1、关闭防火墙和selinux
2、配置yum源
3、软件三步曲(查看|安装|查看软件列表)
# rpm -q rpcbind
rpcbind-0.2.0-11.el6.x86_64
# rpm -aq|grep ^nfs
nfs4-acl-tools-0.3.3-6.el6.x86_64 acl工具包
nfs-utils-1.2.3-39.el6.x86_64 工具包
nfs-utils-lib-1.1.5-6.el6.x86_64 库文件
# rpm -ql rpcbind
/etc/rc.d/init.d/rpcbind 启动脚本
/sbin/rpcbind 二进制命令
# rpm -ql nfs-utils
/etc/rc.d/init.d/nfs 启动脚本
/sbin/mount.nfs 挂载nfs文件命令 mount -t nfs
/sbin/umount.nfs 卸载
/usr/sbin/exportfs 重新加载配置文件(减少nfs服务重启的次数)
/usr/sbin/showmount 发现共享资源
/usr/share/man/man5/exports.5.gz 配置文件man文档
man 5 exports
/etc/exports 发布共享目录的配置文件
4、了解配置文件
man 5 exports
第1列:需要共享的目录
第2列:共享的主机及共享方式
共享主机:
*:所有人
192.168.1.3(ro) 10.1.1.10(rw)
192.168.1.0/24(选项)
*.uplooking.com(选项) vm1.abc.cc(选项)
共享选项:
ro:
rw:
sync:实时同步
async:异步
root_squash:
默认选项,root用户所创建的文件的属主和属组都是nfsnobody;普通用户所创建的文件在server端查看是它自己本身(uid/gid);在client端查看是nobody
no_root_squash:
root用户所创建的文件的属主和属组还是root;普通用户所创建的文件在server端查看是它自己本身(uid/gid);在client端查看是nobody
all_squash:
不管是root还是普通用户所创建的文件的属主和属组都是nfsnobody
anonuid and anongid:设置访问nfs服务的文件的uid(必须/etc/passwd)和gid
5、
需求1:共享本地/nfs/share共享给所有人,以只读方式共享
server:192.168.1.4
1>创建共享目录
mkdir /nfs/share -p
cp /etc/hosts /nfs/share
2>发布共享目录
# vim /etc/exports
/nfs/share *(ro)
6、启动服务,开机自启动
[root@vm01 ~]# service rpcbind restart
Stopping rpcbind: [ OK ]
Starting rpcbind: [ OK ]
[root@vm01 ~]# service nfs restart
Shutting down NFS daemon: [FAILED]
Shutting down NFS mountd: [FAILED]
Shutting down NFS quotas: [FAILED]
Shutting down RPC idmapd: [FAILED]
Starting NFS services: [ OK ]
Starting NFS quotas: [ OK ]
Starting NFS mountd: [ OK ]
Starting NFS daemon: [ OK ]
Starting RPC idmapd: [ OK ]
注意:先启动rpcbind再启动nfs服务
# chkconfig nfs on
7、测试验证
client:192.168.1.3
# showmount -e 192.168.1.4
Export list for 192.168.1.4:
/nfs/share *
[root@node1 Desktop]# mkdir /u01
[root@node1 Desktop]# mount.nfs 192.168.1.4:/nfs/share /u01
需求2:以rw方式共享给192.168.1.3
vim /etc/exports
/nfs/share 192.168.1.3(rw)
exportfs -rv
service nfs restart
# touch file1
touch: cannot touch `file1': Permission denied
chmod 1777 /nfs/share
实例:实现家目录的自动挂载
server:192.168.1.4 /rhome/user01~user03
client:192.168.1.3 user01~user03
步骤:
server:发布共享家目录
1、创建家目录
# mkdir /rhome/user{1..3} -p
# chmod 1777 -R /rhome/
2、发布家目录
# vim /etc/exports
/nfs/share 192.168.1.3(rw)
/rhome 192.168.1.3(rw)
3、重启服务
# service nfs restart
4、家目录环境变量文件准备
# cp -a /etc/skel/. /rhome/user1
# cp -a /etc/skel/. /rhome/user2
# cp -a /etc/skel/. /rhome/user3
client:
1、创建3个用户,不创建家目录
[root@node1 ~]# useradd -M -d /nfs/user1 user1
[root@node1 ~]# useradd -M -d /nfs/user2 user2
[root@node1 ~]# useradd -M -d /nfs/user3 user3
2、自动挂载server端的家目录
vim /etc/auto.master
/nfs /etc/auto.nfs
vim /etc/auto.nfs
user1 -rw,nfs 192.168.1.4:/rhome/user1
或者
* -rw,nfs 192.168.1.4:/rhome/&
重启服务:
service autofs restart
3、测试验证
root@node1 ~]# su - user1
[user1@node1 ~]$ df -h
df: `/root/.gvfs': Permission denied
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_node1-lv_root 18G 3.5G 13G 22% /
tmpfs 996M 224K 996M 1% /dev/shm
/dev/sda1 485M 40M 421M 9% /boot
.host:/ 407G 83G 325G 21% /mnt/hgfs
/mnt/hgfs/soft/rhel-server-6.5-x86_64-dvd.iso 3.6G 3.6G 0 100% /iso
192.168.1.4:/nfs/share 15G 3.4G 11G 25% /u01
192.168.1.4:/rhome/user2 15G 3.4G 11G 25% /nfs/user2
192.168.1.4:/rhome/user3 15G 3.4G 11G 25% /nfs/user3
192.168.1.4:/rhome/user1 15G 3.4G 11G 25% /nfs/user
课堂练习:
1、搭建nfs服务,发布共享目录/share/zhangsan,发布给192.168.1.0/24网段所有人,以ro方式发布
2、实现家目录的自动挂载
3、练习手动挂载、开机自动挂载、autofs自动挂载远程服务的共享目录
smb(samba):
1、用于linux和windows之间的文件共享,可以实现匿名用户和本地用户之间的文件共享
2、工作原理:smb进程 控制发布共享目录与权限 tcp 139 445
nmb进程 主要用于名称解析 udp 137 138
步骤:
1、关闭防火墙和selinux
2、配置yum源
3、软件三步曲(查看|安装|查看软件列表)
# rpm -aq|grep samba
samba-winbind-clients-3.6.9-164.el6.x86_64 客户端工具
samba-3.6.9-164.el6.x86_64 服务端
samba-client-3.6.9-164.el6.x86_64 客户端工具
samba4-libs-4.0.0-58.el6.rc4.x86_64 库文件
samba-common-3.6.9-164.el6.x86_64 工具包
samba-winbind-3.6.9-164.el6.x86_64 客户端工具
# rpm -ql samba|grep etc
/etc/logrotate.d/samba 日志轮转文件
/etc/pam.d/samba 验证机制
/etc/rc.d/init.d/nmb 启动脚本
/etc/rc.d/init.d/smb
/etc/samba/smbusers 用户别名文件
二进制命令
/usr/sbin/nmbd
/usr/sbin/smbd
# rpm -ql samba-client
/usr/bin/smbclient 客户端工具
# rpm -ql samba-common
/etc/samba 主目录
/etc/samba/smb.conf 主配置文件
/usr/bin/pdbedit 查看smb数据库用户
/usr/bin/smbpasswd 设置用户密码
/usr/bin/testparm 检测语法
4、了解主配置文件
# cat /etc/samba/smb.conf |grep -v ^#|grep -v '^;'|grep [a-z]
[global] 全局标签
workgroup = MYGROUP 工作组
server string = Samba Server Version %v samba服务器版本描述
# logs split per machine
log file = /var/log/samba/log.%m 日志文件
# max 50KB per log file, then rotate
max log size = 50 日志大小kb
security = user 认证模式:user用户名密码;share匿名;server
passdb backend = tdbsam smb数据库 /var/lib/samba/private/
# the login script name depends on the machine name
# the login script name depends on the unix user used
# disables profiles support by specifing an empty path
load printers = yes 加载打印机
cups options = raw 打印机选项
#obtain list of printers automatically on SystemV
[homes] 局部标签 共享本地用户的家目录
comment = Home Directories 描述
browseable = no 隐藏标签
writable = yes 可写
[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no 等于 public = yes
writable = no 等于 read only = yes
printable = yes
5、需求:无
测试验证默认情况下的共享文件
6、启动服务,开机自启动
[root@vm01 ~]# service nmb restart
Shutting down NMB services: [FAILED]
Starting NMB services: [ OK ]
[root@vm01 ~]# service smb restart
Shutting down SMB services: [FAILED]
Starting SMB services: [ OK ]
[root@vm01 ~]# chkconfig --list|grep smb
smb 0:off 1:off 2:off 3:off 4:off 5:off 6:off
[root@vm01 ~]# chkconfig --list|grep nmb
nmb 0:off 1:off 2:off 3:off 4:off 5:off 6:off
[root@vm01 ~]# chkconfig nmb on
[root@vm01 ~]# chkconfig smb on
7、测试验证
client:192.168.1.3
匿名用户查看:
# smbclient -L 192.168.1.4
Enter root's password:
Anonymous login successful
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.9-164.el6]
匿名用户访问共享资源:
# smbclient //192.168.1.4/stu1
Enter root's password:
Anonymous login successful
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.9-164.el6]
tree connect failed: NT_STATUS_ACCESS_DENIED
本地用户查看:
将本地用户加入到smb数据库里
# smbpasswd -a stu1
New SMB password:
Retype new SMB password:
Added user stu1.
# pdbedit -L
stu1:500:
# smbclient -L 192.168.1.4 -U stu1
本地用户访问:
# smbclient //192.168.1.4/stu1 -U stu1
Enter stu1's password:
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.9-164.el6]
smb: \> ?
总结:
1、默认情况下,匿名用户不可以访问server端共享出来的本地用户的家目录
2、本地用户需要通过用户名和密码访问本地用户的家目录(需要将本地用户加入到smb数据库里)
需求1:匿名用户访问本地用户的家目录
vim /etc/samba/smb.conf
[homes]
comment = Home Directories
browseable = no
writable = yes
guest ok = yes 允许匿名用户访问
测试:
smb: \> ls
NT_STATUS_ACCESS_DENIED listing \* 家目录没有权限
server端:
[stu1@vm01 ~]$ ll -d
drwx------. 5 stu1 stu1 4096 Jul 29 14:45 .
[stu1@vm01 ~]$ chmod o+rx .
[stu1@vm01 ~]$ ll -d
drwx---r-x. 5 stu1 stu1 4096 Jul 29 14:45 .
smb: \> ls
. D 0 Fri Jul 29 14:45:26 2016
.. D 0 Thu Jul 28 16:29:28 2016
.bashrc H 124 Tue Jul 9 21:24:50 2013
嘿嘿 D 0 Fri Jul 29 14:45:22 2016
.bash_logout H 18 Tue Jul 9 21:24:50 2013
.bash_profile H 176 Tue Jul 9 21:24:50 2013
需求2:认证模式更改为share
security = share
结果:
匿名用户可以访问查看;本地用户不可以访问查看
需求3:共享本地目录/samba/share
vim /etc/samba/smb.conf
....
[share]
comment = share dir
path = /samba/share
public = no
read only = yes
browseable = yes
客户端挂载使用:
# mount.cifs -o username=stu1,password=stu1 //192.168.1.4/share /u02
开机自动挂载和autofs自动挂载 自己完成
控制读写访问:
writable = yes/no
read only = yes/no
write list = tom,@admin
read list = tom,@admin
对象的访问控制:
valid users = tom,@admin 指定可用用户
invalid users = tom,@admin 指定不可用用户
两个参数不要同时存在
网络访问控制:
hosts allow = 150.203. EXCEPT 150.203.6.66
hosts allow = 150.203.15.0/255.255.255.0
hosts allow = *.uplooking.com
hosts deny = 192.168.1.3 vm01.example.com
如果deny和allow冲突,allow优先
基于用户名密码的综合访问:
需求:
公司:uplooking
1、财务部门 /samba/upl_cw cw01财务总监有可读可写权限,财务部门员工可读,boss01对其有管理权限。
2、市场部门 /samba/upl_sc 市场部门员工可读可写,公司员工可以查询资料,boss02对其有管理权限。
3、HR部门 /samba/upl_rs rs01HR总监可读写,HR部门员工可以对财务部查询,vip用户可以查询
4、休息区 /samba/upl_pub 自己管理自己的文件
步骤:
1、创建相应的共享目录
mkdir /samba/upl_{cw,sc,rs,pub} -p
2、创建相应的用户组
groupadd uplooking
groupadd cw
groupadd rs
groupadd sc
useradd -g cw -G uplooking cw01
useradd -g cw -G uplooking cw02
useradd -g rs -G uplooking rs01
useradd -g rs -G uplooking rs02
useradd -g sc -G uplooking sc01
useradd -g sc -G uplooking sc02
useradd -g uplooking boss01
useradd -g uplooking boss02
useradd vip
3、更改目录相应的权限
chown root.uplooking /samba -R
chmod 770 /samba -R
chown root.cw /samba/upl_cw
chown root.rs /samba/upl_rs
chown root.sc /samba/upl_sc
chown root.uplooking /samba/upl_pub
chmod 1777 /samba/upl_pub
4、发布共享目录
[share_cw]
comment = cw01财务总监有可读可写权限,财务部门员工可读,boss01对其有管理权限
path = /samba/upl_cw
valid users = @uplooking
read list = @cw,@rs
write list = cw01,boss01
[share_rs]
comment = HR总监可以读写,vip用户可以查询
path = /samba/upl_rs
valid users = @rs,vip
read list = @rs,vip
write list = rs01
[share_sc]
comment = 市场部门员工可以读写,公司员工可以查询资源,boss02对其部门管理
path = /samba/upl_sc
valid users = @uplooking
read list = @uplooking
write list = @sc,boss02
[share_pub]
comment = 自己的文件自己管理
public = yes
path = /samba/upl_pub
writable = yes
hosts allow = 192.168.1.0/24
5、语法检测
# testparm
6、将用户加入到smb数据里
# smbpasswd -a rs01
# smbpasswd -a rs02
# smbpasswd -a cw01
# smbpasswd -a cw02
# smbpasswd -a sc01
# smbpasswd -a sc02
# smbpasswd -a vip
# smbpasswd -a boss01
# smbpasswd -a boss02
7、重启服务测试验证
建议清空环境 再次操作<恢复快照>
综合练习 <lvm+acl+smb(user)>
配置samba要求如下
1)工作组名为RHCE
2)认证类型为user
3) 使用lvm 建立 /dev/mapper/UPL-smb 20G 固定挂载到 /upl
4)
1.财务部门(/upl/cw),只有财务总监(cw01)可以修改文件,财务成员(cw02)审核文件,boss01 汇总公司财务
2.人事部门(/upl/rs),人事部门可以修改文件,公司所有员工都可以查看文件,boss02 也可以修改文件
3.市场部门(/upl/sc),只有市场总监可以修改文件,市场成员可以查询,boss03 也可以修改文件
4.vip 可以访问rs部门,sc部门
6.在公共目录(/upl/pub)自己文件自己管理
5) 拒绝用户在192.168.1.0/24除了192.168.1.2访问该共享目录
6) 定义vip的别名为赵二
7) smb密码自行定义