Linux Engineer学习------Samba

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux Engineer学习------Samba相关的知识,希望对你有一定的参考价值。

实验环境:

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

[[email protected] ~]# firewall-cmd --set-default-zone=trusted

[[email protected] ~]# 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账户

[[email protected] ~]# useradd -s /sbin/nologin harry

[[email protected] ~]# pdbedit -a harry    #添加设置Samba帐号

输入密码123

[[email protected] ~]# pdbedit -L             #查看所有Samba账户

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

[[email protected] ~]# mkdir /common           #创建共享目录

[[email protected] ~]# echo 123 > /common/a.txt   #创建测试文件

[[email protected] ~]# vim /etc/samba/smb.conf

  .......

        workgroup = STAFF     #设置工作组

  .......

        [common]              #设置共享名

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

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

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

[[email protected] ~]# systemctl restart smb

[[email protected] ~]# systemctl enable smb

 

在客户端Desktop0上的操作

1.安装软件包:samba-client

2.列出共享资源

– smbclient -L 服务器地址

[[email protected] ~]# smbclient -L 172.25.0.11

Enter root's password:  直接回车

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

3.连接到共享文件夹

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

[[email protected] ~]# 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 开关

[[email protected] ~]# getsebool -a | grep samba

samba_export_all_ro --> off

samba_export_all_rw --> off

? setsebool 控制 SELinux 开关

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

[[email protected] ~]# setsebool samba_export_all_ro on   #开启可读权限

[[email protected] ~]# getsebool -a | grep samba

客户端Desktop方便的访问

[[email protected] ~]# mkdir  /mnt/nsd01

[[email protected] ~]# ls  /mnt/nsd01

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

[[email protected] ~]# yum -y install cifs-utils     

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

df -h

 

完成开机自动挂载

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

[[email protected] ~]# vim /etc/fstab

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

[[email protected] ~]# mount -a

[[email protected] ~]# df -h

[[email protected] ~]# touch /mnt/samba/d.txt

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

 

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

服务端Server0

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

2.建立Samba账户

[[email protected] ~]# useradd -s /sbin/nologin chihiro

[[email protected] ~]# useradd -s /sbin/nologin kenji

[[email protected] ~]# pdbedit -a chihiro

[[email protected] ~]# pdbedit -a kenji

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

[[email protected] ~]# mkdir /devops

[[email protected] ~]# touch /devops/b.txt

[[email protected] ~]# vim /etc/samba/smb.conf

[devops]

path = /devops

write list = chihiro     #允许chihiro可以写

4.重起smb服务

5.修改SELinux开关

[[email protected] ~]# getsebool -a | grep samba

[[email protected] ~]# setsebool samba_export_all_rw on

[[email protected] ~]# getsebool -a | grep samba

6.赋予chihiro本地权限

[[email protected] ~]# setfacl -m u:chihiro:rwx /devops/

[[email protected] ~]# getfacl /devops/

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

[[email protected] ~]# mkdir /mnt/nsd02

[[email protected] ~]# vim /etc/fstab

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

[[email protected] ~]# mount -a

[[email protected] ~]# df -h

[[email protected] ~]# touch /mnt/samba/d.txt  #成功

 

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

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

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

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

[[email protected] /]# vim /etc/fstab       (man mount.cifs)

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

[[email protected] /]# umount /mnt/nsd02

[[email protected] /]# mount -a

[[email protected] /]# df -h

[[email protected] /]# su - student

[[email protected] ~]$ touch /mnt/nsd02/10.txt     #不成功  权限不够

[[email protected] ~]$ cifscreds add -u chihiro 172.25.0.11 #以chihiro的身份连接

[[email protected] ~]$ touch /mnt/nsd02/10.txt     #成功

[[email protected] ~]$ ls  /mnt/nsd02

[[email protected] ~]$ exit

 

Sticky Bit

? 附加在其他人的 x 位上

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

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

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

[[email protected] ~]# mkdir /public

[[email protected] ~]# chmod u=rwx,g=rwx,o=rwx /public

[[email protected] ~]# ls -ld /public

[[email protected] ~]# chmod o+t /public

[[email protected] ~]# ls -ld /public

 

服务端:netstat -antp | grep smb

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


以上是关于Linux Engineer学习------Samba的主要内容,如果未能解决你的问题,请参考以下文章

Linux Engineer学习------ISCSI

Linux Engineer学习------Mariadb入门

Linux Engineer学习------WEB/Postfix

Linux学习之Engineer

LINUX系统工程师技术(Engineer)-------第一天

LINUX系统工程师技术(Engineer)-------第三天