理论部分

samba服务简介

smb服务是微软的网络通讯协议,后来应用到了linux系统上。这款文件共享协议可以使得Linux与windows系统之间进行文件共享与打印功能,由于NFS可以完成linux与linux之间的文件共享,所以smb服务最适用 的场合还是linux与windows系统间的文件共享。


samba:基于smb协议使网络上的计算机能共享文件

samba的核心是smbd和nmbd两个守护进程

smbd:管理samba服务器上的共享目录

nmbd:进行netbios名解析,使客户端能浏览服务器的共享资源

协议端口:

smbd:tcp 445和tcp139

nmbd:udp 137/138

samb服务基础

  软件包:samba

  协议:SMP(TCP139)CIFS(445)

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

  所需服务器:svr7(ip192.168.4.7)和myhost2

工作流程:

关于smbpasswd命令选项:

    -h:显示smbpasswd的命令格式帮助
    -a:添加指定的用户帐号
    -d:禁用指定的用户帐号
    -e:启用指定的用户帐号
    -x:删除指定的用户帐号
    没有添加任何选项时候将改变用户密码。
		```
#### 认识samba服务器主配文件:smb.conf
[global] 部分是samba服务器的全局设置,对整个服务器有效。
[homes] 部分是设置用户共享目录属性。
[printers] 部分设置了samba服务器中打印共享资源的属性,samb服务器除了可以提供文件共享,还可以提供打印共享。

[global]部分详解: workgroup 设置samba服务器所在的工作组,默认是:MYGROUP server string 设置samba服务器的说明,用于描述服务器。 log file 设置samba服务器的日志文件,默认是:/var/log/samba/log.%m max log size 设置日志文件的最大容量,默认是50,单位KB。 security 设置samba服务器和客户端的认证方式,默认是user。一共有4种方式: share 表示用户不需要账户及密码即可登录服务器。 user 表示登录samba服务器需要用户和密码。 server 表示检查账户及密码的工作指定由另一台Windows服务器或者samba服务器负责。 domain 指定Windows域控制器来验证用户和密码。 ``` [homes]部分详解: comment 设置共享的说明信息 browseable 设置为no表示所有samba用户的宿主目录都不能被看到,只有登录用户才能看见自己的宿主目录。 writable 设置为yes表示用户可以对该共享目录写入。

更多享目录常见设置项:

    path 用户设置共享目录对应的linux系统目录路径。
    public 设置为yes表示该共享目录对于所有samba用户是可见的。
    only guest 设置为yes表示所有用户在使用该共享目录时的用户身份是guest,就是系统用户nobody。
    writable 设置为yes表示该共享目录对于用户可写。
    valid users 允许指定用户访问共享目录。

配置用户共享用户

环境说明

服务端IP 客户端IP
192.168.24.248 192.168.24.145

在服务端操作如下

1.环境准备

关闭防火墙和selinux

[root@linfan ~]systemctl disable firewalld
[root@linfan ~]systemctl stop firewalld
[root@linfan ~]sed -i"s/^SELINUX\=enforcing/SELINUX\=disabled/g" /etc/selinux/config
[root@linfan ~]setenforce 0

2.安装samba服务器:

  yum -y install samba-*

3.共享用户配置

 useradd -M lin

为用户lin创建smb共享密码

 smbpasswd -a lin

将lin用户映射为share用户:

 echo 'lin = share' > /etc/samba/smbusers

在全局变量中添加如下内容:

[root@linfan ~]# vi /etc/samba/smb.conf
# See smb.conf.example for a more detailed config file or
# read the smb.conf manpage.
# Run 'testparm' to verify the config is correct after
# you modified it.

[global]
        workgroup = SAMBA
        security = user
        username map = /etc/samba/smbusers  //在此添加

4. 创建一个共享目录lin

[root@linfan ~]# mkdir -p /opt/lin/
[root@linfan ~]# chown -R lin.lin /opt/lin/

5.配置共享

[root@linfan ~]# cat >> /etc/samba/smb.conf <<EOF
> [lin]       //共享目录名称
> comment = lin   //描述
> path = /opt/lin   //共享目录的路径
> browseable = yes   //设置为可见
> guest ok = yes   //设置允许匿名访问
> writable = yes   //设置可写
> write list = share   //只有share用户拥有读权限
> public = yes  //设置匿名可访问
> EOF
[root@linfan ~]# testparm   //测试是否正确
[root@linfan ~]# tail -8 /etc/samba/smb.conf
[lin]
comment = lin
path = /opt/lin
browseable = yes
guest ok = yes
writable = yes
write list = share 
public = yes

6.smb服务配置

启动smb服务

[root@linfan ~]# systemctl start smb

重启smb服务

[root@linfan ~]# systemctl restart smb

重新加载smb服务

[root@linfan ~]# systemctl reload smb

设置smb开机自启动

[root@linfan ~]# systemctl enable smb

在客户端操作

1.查看smb服务器共享了哪些资源

[root@linfan ~]# smbclient -L 192.168.24.248 -U share

```

### 2.创建挂载目录

```
[root@linfan ~]# mkdir -p /opt/smb/
```

### 3.将smb服务器上的lin挂载到本地

[root@linfan ~]# mount -t cifs //192.168.24.248/lin /opt/smb -o username=share,password=1

[root@linfan ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 17G 6.0G 12G 35% / devtmpfs 478M 0 478M 0% /dev tmpfs 489M 0 489M 0% /dev/shm tmpfs 489M 6.9M 482M 2% /run tmpfs 489M 0 489M 0% /sys/fs/cgroup /dev/sda1 1014M 125M 890M 13% /boot tmpfs 98M 0 98M 0% /run/user/0 /dev/sr0 4.3G 4.3G 0 100% /mnt //192.168.24.248/lin 17G 6.0G 12G 36% /opt/smb


 ### 4.进入客户端共享目录创建新文件

[root@linfan opt]# cd /opt/smb

[root@linfan smb]# mkdir l [root@linfan smb]# touch k [root@linfan smb]# ls k l

### 5.在服务端验证

[root@linfan ~]# cd /opt/lin [root@linfan lin]# ls k l

## 匿名用户共享

### 环境说明


| 服务端IP | 客户端IP | 
| -------- | -------- | -------- |
|192.168.24.248 | 192.168.24.146   | 

### 在服务端操作如下
### 1.环境准备
关闭防火墙和selinux

[root@linfan ~]systemctl disable firewalld [root@linfan ~]systemctl stop firewalld [root@linfan ~]sed -i"s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config [root@linfan ~]setenforce 0

### 2.安装smb服务

[root@linfan ~]# yum -y install samba-*

### 3.编辑配置文件

[root@linfan ~]# vi /etc/samba/smb.conf #See smb.conf.example for a more detailed config file or #read the smb.conf manpage. #Run 'testparm' to verify the config is correct after #you modified it.

[global] workgroup = SAMBA security = user map to guest = Bad User //在此添加 ```

4. 创建共享目录

[root@linfan ~]# mkdir /opt/doudou
[root@linfan ~]# chmod 777 /opt/doudou
[root@linfan ~]# ll /opt/
total 0
drwxrwxrwx. 2 root root   6 Aug  6 19:08 doudou
drwxr-xr-x. 8 root root 220 Jul 18 17:09 lin.d

5.编辑共享文件

[root@linfan ~]# cat >> /etc/samba/smb.conf <<EOF
> [doudou]
> comment = doudou
> path = /opt/doudou
> browseable = yes
> guest ok = yes
> writable = yes
> public = yes
> EOF
[root@linfan ~]# tail -7 /etc/samba/smb.conf
[doudou]
comment = doudou
path = /opt/doudou
browseable = yes
guest ok = yes
writable = yes
public = yes

6.启动smb服务


[root@linfan ~]# systemctl start smb 

7.在客户端查看smb服务共享 无需输入密码 直接回车即可

[root@linfan ~]# smbclient -L 192.168.24.248 -U'Bad User' 

8.创建挂载目录

[root@linfan ~]# mkdir -p /opt/smb

9.将smb服务器的共享文件doudou 挂载到本地客户端

[root@linfan ~]# mount -t cifs //192.168.24.248/doudou /opt/smb -o username='Bad User'
[root@linfan ~]# df -h  

10.切换到新的共享目录创建文件

[root@linfan ~]# cd /opt/smb
[root@linfan smb]# mkdir lin
[root@linfan smb]# touch wu
[root@linfan smb]# ls
lin  wu    

11.在服务端验证

[root@linfan doudou]# ls
lin  wu