实验环境:

修改两台虚拟机防火墙默认区域为trusted:

[root@server0 ~]# firewall-cmd --set-default-zone=trusted

[root@desktop0 ~]# firewall-cmd --set-default-zone=trusted

1、samba

1.1简述

Samba共享服务,跨平台的共享(Windows与Linux)

– 用途:为客户机提供共享使用的文件夹

– 协议:SMB(TCP 139)、CIFS(TCP 445)

• 所需软件包:samba

• 系统服务:smb

 

• Samba用户 —— 专用来访问共享文件夹的用户

– 采用独立设置的密码

– 但需要提前建立同名的系统用户(可以不设密码)

• 使用 pdbedit 管理工具

– 添加用户:pdbedit -a 用户名

– 查询用户:pdbedit -L [用户名]

– 删除用户:pdbedit -x 用户名


• 配置文件路径 /etc/samba/smb.conf

[自定共享名]

path = 文件夹绝对路径

public = no|yes //默认no

browseable = yes|no //默认yes

read only = yes|no //默认yes

write list = 用户1 .. .. //默认无

valid users = 用户1 .. .. //默认任何用户

hosts allow = 客户机地址 .. ..

hosts deny = 客户机地址 .. ..

 

装包、配置(修改主配置文件)、起服务


 1.2具体操作

实验1:通过samba发布共享目录,并满足以下条件

共享名称和共享目录为/common;工作组为STAFF;

允许172.25.0.0网段访问;用户harry能够读取共享中的内容

在服务端Server0上的操作:

1.安装samba软件,服务端软件

2.建立Samba账户

[root@server0 ~]# useradd -s /sbin/nologin harry

[root@server0 ~]# pdbedit -a harry    #添加设置Samba帐号

输入密码123

[root@server0 ~]# pdbedit -L             #查看所有Samba账户

3.修改 /etc/samba/smb.conf(vim命令模式,/workgroup 全文查找)

[root@server0 ~]# mkdir /common           #创建共享目录

[root@server0 ~]# echo 123 > /common/a.txt   #创建测试文件

[root@server0 ~]# vim /etc/samba/smb.conf

  .......

        workgroup = STAFF     #设置工作组

  .......

        [common]              #设置共享名

        path = /common   #设置共享的实际路径

   hosts allow = 172.25.0.0/24 #允许这个网段的访问

4.启动smb服务,设置为开机自起

[root@server0 ~]# systemctl restart smb

[root@server0 ~]# systemctl enable smb

 

在客户端Desktop0上的操作

1.安装软件包:samba-client

2.列出共享资源

– smbclient -L 服务器地址

[root@desktop0 ~]# smbclient -L 172.25.0.11

Enter root's password:  直接回车

可以看到服务端共享出来的文件目录

3.连接到共享文件夹

– smbclient -U  用户名   //服务器地址/共享目录名

[root@desktop0 ~]# smbclient -U harry //172.25.0.11/common

Enter harry's password: 输入密码123

Domain=[STAFF] OS=[Unix] Server=[Samba 4.1.1]

smb: \>ls

NT_STATUS_ACCESS_DENIED listing \*   #权限不够访问被拒

客户端访问服务端资源

     1.服务端,服务的访问控制

     2.服务端,防火墙

     3.服务端,SELinux策略

     4.服务端,本地权限

 

SELinux策略,布尔值(开启或关闭)

虚拟机Server0:开启SELinux功能的开关

• getsebool 查看 SELinux 开关

[root@server0 ~]# getsebool -a | grep samba

samba_export_all_ro --> off

samba_export_all_rw --> off

• setsebool 控制 SELinux 开关

– 需要加 -P 选项才能实现永久设置

[root@server0 ~]# setsebool samba_export_all_ro on   #开启可读权限

[root@server0 ~]# getsebool -a | grep samba

客户端Desktop方便的访问

[root@desktop0 ~]# mkdir  /mnt/nsd01

[root@desktop0 ~]# ls  /mnt/nsd01

安装一个可以支持挂载Samba的软件cifs-utils

[root@desktop0 ~]# yum -y install cifs-utils     

mount -o username=harry,password=123  //172.25.0.11/common   /mnt/nsd01/  #手动挂载

df -h

 

完成开机自动挂载

_netdev:在开机启动时,先启动完网络服务,在挂载该设备

[root@desktop0 ~]# vim /etc/fstab

//172.25.0.11/common   /mnt/nsd01    cifs username=harry,password=123,_netdev   0   0

[root@desktop0 ~]# mount -a

[root@desktop0 ~]# df -h

[root@desktop0 ~]# touch /mnt/samba/d.txt

touch: 无法创建"/mnt/samba/d.txt": 权限不够

 

实验2:完成读写的Samba共享

服务端Server0

1.安装samba软件,服务端软件

2.建立Samba账户

[root@server0 ~]# useradd -s /sbin/nologin chihiro

[root@server0 ~]# useradd -s /sbin/nologin kenji

[root@server0 ~]# pdbedit -a chihiro

[root@server0 ~]# pdbedit -a kenji

3.修改配置文件/etc/samba/smb.conf

[root@server0 ~]# mkdir /devops

[root@server0 ~]# touch /devops/b.txt

[root@server0 ~]# vim /etc/samba/smb.conf

[devops]

path = /devops

write list = chihiro     #允许chihiro可以写

4.重起smb服务

5.修改SELinux开关

[root@server0 ~]# getsebool -a | grep samba

[root@server0 ~]# setsebool samba_export_all_rw on

[root@server0 ~]# getsebool -a | grep samba

6.赋予chihiro本地权限

[root@server0 ~]# setfacl -m u:chihiro:rwx /devops/

[root@server0 ~]# getfacl /devops/

客户端Desktop完成开机自动挂载

[root@desktop0 ~]# mkdir /mnt/nsd02

[root@desktop0 ~]# vim /etc/fstab

//172.25.0.11/devops   /mnt/nsd02   cifs username=chihiro,password=123,_netdev   0   0

[root@desktop0 ~]# mount -a

[root@desktop0 ~]# df -h

[root@desktop0 ~]# touch /mnt/samba/d.txt  #成功

 

multiuser机制(多用户的Samba挂载)

– multiuser,提供对客户端多个用户身份的区分支持

– sec=ntlmssp,提供NT局域网管理安全支持

客户端Desktop完成开机自动挂载

[root@desktop0 /]# vim /etc/fstab       (man mount.cifs)

//172.25.0.11/devops  /mnt/nsd02 cifs username=kenji,password=123,_netdev,multiuser,sec=ntlmssp 0 0

[root@desktop0 /]# umount /mnt/nsd02

[root@desktop0 /]# mount -a

[root@desktop0 /]# df -h

[root@desktop0 /]# su - student

[student@desktop0 ~]$ touch /mnt/nsd02/10.txt     #不成功  权限不够

[student@desktop0 ~]$ cifscreds add -u chihiro 172.25.0.11 #以chihiro的身份连接

[student@desktop0 ~]$ touch /mnt/nsd02/10.txt     #成功

[student@desktop0 ~]$ ls  /mnt/nsd02

[student@desktop0 ~]$ exit

 

Sticky Bit

• 附加在其他人的 x 位上

– 其他人的权限标识会变为 t

– 适用于开放 w 权限的目录,可以阻止用户滥用 w 写入

权限(禁止操作别人的文档)

[root@server0 ~]# mkdir /public

[root@server0 ~]# chmod u=rwx,g=rwx,o=rwx /public

[root@server0 ~]# ls -ld /public

[root@server0 ~]# chmod o+t /public

[root@server0 ~]# ls -ld /public

 

服务端:netstat -antp | grep smb

mount error 13 :permission deny  用户名密码不一致