Linux学习--samba
samba共享文件
简介
Samba是SMB的一种实现方法,主要用来实现Linux系统的文件和打印服务。Linux用户通过配置使用Samba服务器可以实现与Windows用户的资源共享。
组成
软件包:
samba:samba服务器的软件包,提供smb服务器所需的各项程序及相关的一些文件(不包括主配置文件),如samba服务的守护程序、共享文档、日志的轮替、开机默认项。
samba-client:客户端工具,是提供给linux系统使用的,即通过linux系统访问网路中共享的samba服务器,使用这个工具。
samba-common:服务器于客户端都会用到这个软件包,里面包含samba的主配置文件(smb.conf)配置文件语法检查工具等。
samba-libs:samba库
进程:
nmbd:其主要功能是进行NetBIOS解析
smbd:其主要功能是管理samba服务器上的共享内容。
使用端口:
137 用于NetBIOS网络浏览
138 用于NetBIOS名称服务
139 文件打印机和其他操作
445 当NetBIOS over TCP/IP不能使用 windows2000/xp使用此端口
配置文件(/etc/samba/smb.conf)
Global Settings(全局设置)
主要用来设置samba服务器整体运行环境的选项
参数内容
[global]
//设置网络关系选项
workgroup=MYGROUP
#设置samba服务器所在的工作组或域名
server string=Samba Server Version
#设置samb服务器的描述信息
netbios name=MYSERVER
#设置samba服务器的netbios名称
interfaces= eth0 192.168.12.2/24
#设置samba服务器所使用的网卡接口,可以使用网卡接口的名称或ip地址
hosts allow=172. 192.168.12. 192.168.13.
#设置允许访问samba服务器的网络地址、主机地址以及域、多个参数以”空格“隔开
#1)表示某ip地址主机,使用如 hosts allow=192.168.0.5
#2)表示某网络,使用如 hosts allow=192.168.0.
#3)表示某个域,使用如 hosts allow=.sh.com
#4) 表示所有主机,使用如 hosts allow=All
hosts deny=172. 192.168.12. 192.168.13.
#设置不允许访问samba服务器的网络地址、主机地址以及域、多个参数以”空格“隔开,使用方法同hosts allow
guert account=pcguest
//设置服务器日志选项
log file=/var/log/samba/log.%m
#设置日志文件保存路径和名称,%m代表客户端主机名
max log size=50
#设置日志文件的最大值单位KB
//设置标准服务器选项
security=
#设置用户访问samba服务器的安全级别
#1)share:不许要提供用户名和密码就可以直接访问samba服务器
#2)user:需要提供用户名和密码,而且身份验证由samba服务器负责
#3)server:需要提供用户名和密码,可以指定其他windows服务器或另一台samba服务器做身份验证
#4)domain:需要提供用户名和密码,指定windows域控制器做身份验证。samba服务器只能成为域的成员客户机
#5)ads:需要提供用户名和密码,指定Windows域控制器做身份验证,具有domain级别的所有功能,samba服务器可以成为域控制服务器
encrypt passwords=yes
#设置是否对samba的密码进行加密
smb passwd file=/etc/samba/smbpasswd
#设置samba密码文件的路径和名称
passdb backend=tdbsam
#甚至润过使用加密密码,指定多使用的密码数据库类型,类型可以是smbpasswd、tdbasam或ldapsam
#1) 使用一个数据库文件来加你了用户数据库,数据库文件名为passdb.tadb.使用smbpasswd或pdbedit命令建立samba用户
#2)smbpasswd:使用smbpasswd命令来给系统用户设置一个用于远程访问samba服务的密码,客户端就使用这个密码访问samba共享资源。还要使用一个smb passwd file=/etc/samba/smbpasswd参数来指定保存用户名和密码文件,该文件需要手动建立。
#3)ldapsam:基于ladp的账户管理方式来验证用户,需要先创建ldap服务
//设置打印机选项
load printers=yes
#是否允许samba打印机共享
cups options=raw
printcap name=/etc/printcap
#设置打印机配置文件的路径
printing=cups
#设置samba打印机类型
Share Definitions(共享定义)
用来设置文件共享和打印共享资源
//文件共享
[]
#设置共享目录的名称
comment=Home Directories
#设置共享目录的注释说明
path=
#设置共享目录完整路径
browseable=
#设置在浏览资源时显示共享目录,显示yes,不显示no。
guset ok=
#设置是否允许匿名用户访问共享资源,允许yes,不允许no,和public祈祷一样的功能。只用当设置参数security=share时生效。
guest only=
#设置是否允许以只读方式读取目录,允许yes,不允许no
guest account=
#指定访问共享目录的用户账户
read only=
#设置是否允许以只读方式读取目录,允许yes,不允许no
writable=
#设置是否允许以可写的方式修改目录,允许yes,不允许no
vaild users
#设置只有此名单的用户和组群才能访问共享资源
invalid users
#设置只有此名单内的用户和组群不能访问共享资源,该参数要优于vaild users参数的设置
配置案例
1通过samba提供一个公共文件服务器,所有人都可以访问并写入,但是不可以删除和修改他人的文件
//samba服务端 linux
[roo[email protected] Desktop]#groupadd xixi
[[email protected] Desktop]# chgrp xixi /test
[[email protected] Desktop]# chmod o=rwx /test
[[email protected] Desktop]# chmod o+t /test
[[email protected] Desktop]# ll -d /test
drwxrwxrwt. 2 root root 46 Apr 10 17:51 /test
[[email protected] Desktop]# useradd test1
[[email protected] Desktop]# useradd test2
[[email protected] Desktop]# vim /etc/samba/smb.conf
[global]
workgroup=workgroup
security=user
[public]
path=/test
writable=yes
browseable=yes
[[email protected] Desktop]# systemctl restart smb
[[email protected] Desktop]# systemctl stop firewalld
[[email protected] Desktop]# setenforce 0
[[email protected] Desktop]# smbpasswd -a test1 //添加用户
New SMB password:
Retype new SMB password:
Added user test1.
[[email protected] Desktop]# smbpasswd -a test2
New SMB password:
Retype new SMB password:
//windows端
进入资源管理器
\\ip(samba端ip)
输入用户名密码test1
创建一个名为test1的文件
win + r
cmd
C:\Users\THINKPAD>net use * /delete //清空系统中登陆信息
进入资源管理器
\\ip(samba端ip)
输入用户名密码test2
创建一个名为test2的文件
删除test1文件
结果
2 通过samba提供一个公共文件服务器所有人都可访问,但只有xixi组可以写入
//samba linux端
[[email protected] Desktop]#groupadd xixi
[[email protected] Desktop]# chgrp xixi /test
[[email protected] Desktop]# useradd test1
[[email protected] Desktop]# useradd test2
[[email protected] Desktop]# usermod -g xixi test1
[[email protected] Desktop]# vim /etc/samba/smb.conf
[global]
workgroup=workgroup
security=user
[public]
path=/test
write list=@xixi
vaild users=%s
[[email protected] Desktop]# systemctl restart smb
[[email protected] Desktop]# systemctl stop firewalld
[[email protected] Desktop]# setenforce 0
[[email protected] Desktop]# smbpasswd -a test1 //添加用户
New SMB password:
Retype new SMB password:
Added user test1.
[[email protected] Desktop]# smbpasswd -a test2
New SMB password:
Retype new SMB password:
Added user test2.
//windows端
进入资源管理器
\\ip(samba端ip)
输入用户名密码test1
创建名为test1的文本
win + r
cmd
C:\Users\THINKPAD>net use * /delete //清空系统中登陆信息
进入资源管理器
\\ip(samba端ip)
输入用户名密码test2
创建一个名为test2的文件
3每个人都可以进入自己的独立家目录,别人不可以访问
Multiuser机制
所需软件包 cifs-utils
手动挂载 mount //服务器地址/共享名 挂载点
samba的multiuser挂载技术
管理员只需要进行一次挂载
客户端在访问挂载点时,若需不同权限,可以临时切换为新的共享用户(无需重新挂载)
挂载参数需要添加“multiuser ,sec=ntlmssp”客户机上的普通用户可以通过cifscreds命令提交新的身份凭证
实例
在服务器上通过smb共享目录/devops,并满足一下要求
1 共享名为devops
2 共享目录devops只能被172.24.8.0网段中的客户使用
3 共享目录devops必须可以被浏览
4 用户xixi 必须能以读的方式访问此共享,访问密码为xixi
5 用户maomao必须能以读写的方式访问此共享,访问密码为maomao
客户端
此共享永久挂载咋172.24.8. 上的/mnt/dev目录,并使用用户xixi作为认证任何用户,可以通过用户maomao来临时获取写的权限
[[email protected] Desktop]# mkdir /devops
[[email protected] Desktop]# setfacl -m u:maomao:rwx /devops
[[email protected] Desktop]# vim /etc/samba/smb.conf
[global]
workgroup=workgroup
security=user
host all=172.24.8.
[public]
path=/devops
writable=no
browseable=yes
write list=maomao
[[email protected] Desktop]# systemctl restart smb
[[email protected] Desktop]# systemctl stop firewalld
[[email protected] Desktop]# setenforce 0
[[email protected] Desktop]# smbpasswd -a xixi
New SMB password:
Retype new SMB password:
Added user xixi.
[[email protected] Desktop]# smbpasswd -a maomao
New SMB password:
Retype new SMB password:
Added user maomao.
[[email protected] Desktop]# systemctl restart smb nmb
//客户端 linux
[[email protected] Desktop]# yum install -y cifs-*
[[email protected] mnt]# mkdir /mnt/dev
[[email protected] mnt]# smbclient -L //172.24.8.138/ -U xixi
Enter xixi's password:
Domain=[WORKGROUP] OS=[Windows 6.1] Server=[Samba 4.2.3]
Sharename Type Comment
--------- ---- -------
public Disk
IPC$ IPC IPC Service (Samba 4.2.3)
Domain=[WORKGROUP] OS=[Windows 6.1] Server=[Samba 4.2.3]
Server Comment
--------- -------
LOCALHOST Samba 4.2.3
Workgroup Master
--------- -------
WORKGROUP LOCALHOST
[[email protected] mnt]# vim /etc/fstag
//172.24.8.138/public /mnt/dev cifs defaults,multiuser,username=xixi,password=xixi,sec=ntlmssp,_netdev 0 0
[[email protected] /]# mount -a
[[email protected] /]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 20G 3.6G 17G 18% /
devtmpfs 899M 0 899M 0% /dev
tmpfs 913M 144K 913M 1% /dev/shm
tmpfs 913M 9.0M 904M 1% /run
tmpfs 913M 0 913M 0% /sys/fs/cgroup
/dev/sda1 197M 139M 59M 71% /boot
tmpfs 183M 12K 183M 1% /run/user/0
/dev/sr0 3.8G 3.8G 0 100% /run/media/root/RHEL-7.2 Server.x86_64
//172.24.8.138/public 20G 3.8G 17G 19% /mnt/dev