理论部分
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