linux——samba共享以及基础用法

Samba

Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,有服务端和客户端程序构成。随着Linux的普及,如何共享Linux下的文件成为用户关心的问题。其实,几乎所有的Linux发行套件都提供了一个很好的工具Samba——通过它可以轻松实现文件共享

一、SMB文件共享

通用lnternet文件系统(CIFS)也称为服务器信息块(SMB),是适用于MicrosoftWindows服务器和客户端的标准文件和打印机共享系统。
Samba服务可用于将Linux文件系统作为CIFS/SMB网络文件共享进行共享,并将Linux打印机作为CIFS/SMB打印机共享进行共享。
[root@server ~]# ——服务端
[root@client ~]# ——客户端

1、安装以及启动服务

[root@server ~]# yum install samba samba-client samba-common -y
[root@server ~]# systemctl start smb
[root@server ~]# systemctl enable smb.service 
[root@server ~]# systemctl stop firewalld
[root@server ~]# systemctl disable firewalld

samba —— 服务器应用程序
samba-client —— 客户端应用程序
samba-common —— Samba的支持文件

测试
客户端进行测试,匿名登陆
因为在服务端未设置,所以不用输入密码,直接回车,登陆成功

[root@client ~]# yum install samba-client -y
[root@client ~]# smbclient -L //172.25.254.227
Enter root's password: 
Anonymous login successful
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]

    Sharename       Type      Comment
    ---------       ----      -------
    IPC$            IPC       IPC Service (Samba Server Version 4.1.1)
Anonymous login successful
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]

    Server               Comment
    ---------            -------

    Workgroup            Master
    ---------            -------
[root@client ~]#

2、添加smb用户

smb用户必须是本地用户!!!
添加用户student、tutu

[root@server ~]# smbpasswd -a student
New SMB password:
Retype new SMB password:
Added user student.
[root@server ~]# useradd tutu
[root@server ~]# smbpasswd -a tutu
New SMB password:
Retype new SMB password:
Added user tutu.
[root@server ~]# pdbedit -L
student:1000:Student User
tutu:1001:
[root@server ~]#
smbpasswd 常用参数
    -a username: 添加用户为samba用户
    -d username:禁用samba用户username
    -e username: 启用samba用户username
    -x username: 删除samba用户username

可以用 smbpasswd 添加 smb 用户
还可以用 pdbedit 添加 smb 用户

pdbedit 常用参数
    –a username:新建Samba账户。
    –x username:删除Samba账户。
    –L:列出Samba用户列表,读取passdb.tdb数据库文件。
    –Lv:列出Samba用户列表的详细信息。
    –c[D]” –u username:暂停该Samba用户的账号。
    –c[]” –u username:恢复该Samba用户的账号。

测试
linux——samba共享以及基础用法_第1张图片

  • 输入密码导致的错误
    这里写图片描述

  • 服务端samba_enable_home_dirs布尔值的影响
    linux——samba共享以及基础用法_第2张图片

smbclient(选项)(参数)
    -L:显示服务器端所分享出来的所有资源
    -U<用户名称>:指定用户名称
  • samba_enable_home_dirs
    布尔值允许本地Linux主目录作为CIFS文件共享导出至其他系统
    linux——samba共享以及基础用法_第3张图片
    测试
    linux——samba共享以及基础用法_第4张图片

3、文件的上传

只能上传当前所在目录下的文件
上传的文件在服务端的 student 用户的家目录

- 上传 /etc/passwd 成功,上传 /bin/ls 失败
linux——samba共享以及基础用法_第5张图片
- 转到目录 /bin ,上传 /bin/ls 成功
linux——samba共享以及基础用法_第6张图片
注意:这种登陆方式登陆,不能执行新建文件、目录等!!!
linux——samba共享以及基础用法_第7张图片
看看上传的文件(服务端)
这里写图片描述

4、挂载CIFS共享(客户端)

  • 手动挂载
    linux——samba共享以及基础用法_第8张图片
  • 开机自动挂载
[root@client ~]# vim /etc/rc.d/rc.local
[root@client ~]# cat /etc/rc.d/rc.local | tail -n 1
mount //172.25.254.227/student /mnt -o username=student,password=123
[root@client ~]# chmod +x /etc/rc.d/rc.local
[root@client ~]# reboot

linux——samba共享以及基础用法_第9张图片

5、域名的更改

linux——samba共享以及基础用法_第10张图片

[root@server ~]# vim /etc/samba/smb.conf 
89 workgroup = MYGROUP ---> workgroup = WESTOS ##修改第89行,更改域名为WESTOS
[root@server ~]# systemctl restart smb.service

linux——samba共享以及基础用法_第11张图片

6、smb服务的黒白名单

  • 白名单
    只允许 172.25.254.127 主机登陆
[root@server ~]# vim /etc/samba/smb.conf   ##添加第98行内容
[root@server ~]# cat /etc/samba/smb.conf | head -n 98 | tail -n 1
    hosts allow = 172.25.254.127
[root@server ~]# systemctl restart smb.service

测试

  • 172.25.254.127

  • 172.25.254.50
    这里写图片描述

  • 黑名单
    仅不允许 172.25.254.127 主机登陆

[root@server student]# vim /etc/samba/smb.conf  ##修改第98行内容
[root@server ~]# cat /etc/samba/smb.conf | head -n 98 | tail -n 1
    hosts deny = 172.25.254.127
[root@server student]# systemctl restart smb

测试

  • 172.25.254.127

    这里写图片描述

  • 172.25.254.50
    linux——samba共享以及基础用法_第12张图片

7、共享目录的基本设定

  • 非系统目录的共享
[root@server ~]# mkdir /westos
[root@server ~]# semanage fcontext -a -t samba_share_t '/westos(/.*)?'
[root@server ~]# semanage fcontext -l | grep /westos
/westos(/.*)?                                      all files          system_u:object_r:samba_share_t:s0 
[root@server ~]# restorecon -FvvR /westos/
restorecon reset /westos context unconfined_u:object_r:default_t:s0->system_u:object_r:samba_share_t:s0
[root@server ~]# vim /etc/samba/smb.conf    
[root@server ~]# cat /etc/samba/smb.conf | tail -n 3   ##添加的内容
    [DIR]                       ##共享名称
    comment = westos dir        ##对共享目录的描述
    path = /westos              ##共享目录的绝对路径
[root@server ~]# cat /etc/samba/smb.conf | head -n 98 | tail -n 1 ##修改的内容
    hosts allow = 172.25.254.127/24
[root@server ~]# touch /westos/file
[root@server ~]# ls /westos/
file
[root@server ~]# systemctl restart smb.service

测试
linux——samba共享以及基础用法_第13张图片
linux——samba共享以及基础用法_第14张图片

  • 系统目录的共享
[root@server ~]# vim /etc/samba/smb.conf   ##添加后三行内容
[root@server ~]# cat /etc/samba/smb.conf | tail -n 3
    [mnt]                 ##共享名称
    comment = /mnt dir    ##对共享目录的描述
    path = /mnt           ##共享目录的绝对路径
[root@server ~]# systemctl restart smb

测试
linux——samba共享以及基础用法_第15张图片
linux——samba共享以及基础用法_第16张图片
测试
布尔值对于系统共享目录的影响

[root@server ~]# touch /mnt/file1
[root@server ~]# ls /mnt/
file1

linux——samba共享以及基础用法_第17张图片

[root@server ~]# getenforce 
Enforcing
[root@server ~]# setenforce 0

linux——samba共享以及基础用法_第18张图片

[root@server ~]# setenforce 1
[root@server ~]# setsebool -P samba_export_all_ro on 

linux——samba共享以及基础用法_第19张图片

8、配置文件的参数

  • browseable = no | yes ——更改此参数,不用重启服务
    no ——将该共享目录设置为隐藏
    yes——将该共享目录设置为显示
[root@server ~]# vim /etc/samba/smb.conf  ##添加内容
[root@server ~]# cat /etc/samba/smb.conf | head -n 324 | tail -n 1 
    browseable = no          ##设置目录DIR隐藏
[root@server ~]#

测试
linux——samba共享以及基础用法_第20张图片

[root@server ~]# vim /etc/samba/smb.conf   ##修改内容
[root@server ~]# cat /etc/samba/smb.conf | head -n 324 | tail -n 1
    browseable = yes
[root@server ~]#

测试
linux——samba共享以及基础用法_第21张图片

  • writable = yes|no ——更改此参数,需要重启服务

    no | yes —— 设置用户是否可写(所有用户)

[root@server ~]# vim /etc/samba/smb.conf   ##添加内容
[root@server ~]# cat /etc/samba/smb.conf | head -n 325 | tail -n 1
    writable = yes
[root@server ~]# systemctl restart smb.service

测试
写操作失败,是因为目录/westos本身不可写
linux——samba共享以及基础用法_第22张图片

[root@server ~]# ll -ld /westos/
drwxr-xr-x. 2 root root 17 Jun  4 06:27 /westos/
[root@server ~]# chmod 777 /westos/
[root@server ~]# ll -ld /westos/
drwxrwxrwx. 2 root root 17 Jun  4 06:27 /westos/
[root@server ~]#

测试
当/westos本身可写后,写操作执行成功
linux——samba共享以及基础用法_第23张图片

  • write list = student ——更改此参数,需要重启服务

    允许用户 student 进行写操作(相当于白名单)

[root@server ~]# vim /etc/samba/smb.conf  ##注释掉第325行,添加第326行
[root@server ~]# cat /etc/samba/smb.conf | head -n 326 | tail -n 2
#   writable = yes
    write list = student
[root@server ~]# systemctl restart smb.service

测试
这里写图片描述
linux——samba共享以及基础用法_第24张图片

  • write list = @student ——更改此参数,需要重启服务

    只允许属于 student 组的用户进行写操作

[root@server ~]# vim /etc/samba/smb.conf
[root@server ~]# cat /etc/samba/smb.conf | head -n 326 | tail -n 2
#   writable = yes
    write list = @student
[root@server ~]# systemctl restart smb.service 
[root@server ~]# id tutu
uid=1001(tutu) gid=1001(tutu) groups=1001(tutu)

测试
linux——samba共享以及基础用法_第25张图片

[root@server ~]# usermod -G student tutu
##给用户 tutu 添加 附加组 student
[root@server ~]# id tutu
uid=1001(tutu) gid=1001(tutu) groups=1001(tutu),1000(student)
[root@server ~]# 

测试
linux——samba共享以及基础用法_第26张图片

  • admin users = 用户名 ——更改此参数,需要重启服务

    共享的超级用户指定

[root@server ~]# id tutu
uid=1001(tutu) gid=1001(tutu) groups=1001(tutu),1000(student)
[root@server ~]# ls -ld /westos/
drwxrwxrwx. 2 root root 30 Jun  4 08:18 /westos/
[root@server ~]# ll /westos/
total 0
-rw-r--r--. 1 student student 0 Jun  4 08:03 file1
-rw-r--r--. 1 tutu    tutu    0 Jun  4 08:18 file2
[root@server ~]# vim /etc/samba/smb.conf
[root@server ~]# cat /etc/samba/smb.conf | head -n 327 | tail -n 3
    writable = yes
#   write list = @student
    admin users = tutu
[root@server ~]# systemctl restart smb.service

测试
linux——samba共享以及基础用法_第27张图片

9、多用户挂载

不同用户创建的文件、目录等,所有的用户都可以看
这是不合理的,下面的操作就是消除这种不合理
即设置多用户挂载,挂载是需要 smb 认证

[root@client ~]# yum install cifs-utils -y
[root@client ~]# vim /root/smbpass
[root@client ~]# cat /root/smbpass 
username=student
password=123
[root@client ~]# mount -o  credentials=/root/smbpass,sec=ntlmssp,multiuser //172.25.254.227/DIR /mnt/
##credentials=/root/smbpass    指定挂载时所用到的用户文件
##multiuser            支持多用户认证
##sec=ntlmssp            认证方式为标准smb认证方式(注意版本不同的认证)
## The default in mainline kernel versions prior to v3.8 was sec=ntlm. Inv3.8, the default was changed to sec=ntlmssp.
[root@client ~]# ls /mnt/
file1  file2  file3
[root@client ~]# useradd test
[root@client ~]# su - test
[test@client ~]$ ls /mnt 
ls: cannot access /mnt: Permission denied
####没有smb认证,无法进行共享
[test@client ~]$ cifscreds add -u tutu 172.25.254.227
Password:              ##smb用户tutu的密码,输入错误的密码
[test@client ~]$ ls /mnt 
ls: cannot access /mnt: Permission denied      ##仍然没有权限
[test@client ~]$ cifscreds add -u tutu 172.25.254.227  ##再次认证失败
You already have stashed credentials for 172.25.254.227 (172.25.254.227)
If you want to update them use:
    cifscreds update
[test@client ~]$ cifscreds clearall    ##清除认证
[test@client ~]$ cifscreds add -u tutu 172.25.254.227
Password:               ##smb用户tutu的密码,输入正确密码
[test@client ~]$ ls /mnt 
file1  file2  file3
[test@client ~]$ touch /mnt/file4      ##创建的文件file4属于root用户,因为用户tutu被指定为共享的超级用户
[test@client ~]$ ll /mnt/
total 0
-rw-r--r-- 1 student student 0 Jun  4 08:03 file1
-rw-r--r-- 1 admin   admin   0 Jun  4 08:18 file2
-rw-r--r-- 1 root    admin   0 Jun  4 08:30 file3
-rw-r--r-- 1 root    admin   0 Jun  4 08:57 file4
[test@client ~]$ logout 
[root@client ~]# umount /mnt/

10、匿名用户对于共享目录的登陆与访问

测试
linux——samba共享以及基础用法_第28张图片

[root@server ~]# vim /etc/samba/smb.conf  ##添加第125、328行
[root@server ~]# cat /etc/samba/smb.conf | head -n 125 | tail -n 1
    map to guest = bad user
[root@server ~]# cat /etc/samba/smb.conf | head -n 328 | tail -n 1
    guest ok = yes
[root@server ~]# systemctl restart smb.service

测试
linux——samba共享以及基础用法_第29张图片
linux——samba共享以及基础用法_第30张图片

[root@client ~]# mount //172.25.254.227/DIR /mnt/ -o username=guest
Password for guest@//172.25.254.227/DIR:  ##任意输入

这两条命令在效果上等价

[root@client ~]# mount //172.25.254.227/DIR /mnt/ -o username=guest,password=""

linux——samba共享以及基础用法_第31张图片

你可能感兴趣的:(linux)