关闭selinux
#暂时关闭selinux
查看selinux状态
[root@localhost ~]# getenforce
Disabled
[root@localhost ~]#
如果此处是‘enforcing’,则执行下列代码
[root@localhost ~]# setenforce 0
再次查看selinux状态
[root@localhost ~]# getenforce
permissive
#永久关闭selinux
vim /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled //将此处修改为‘disabled’
# SELINUXTYPE= can take one of three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
或者
sed -i 's/SELINUX=permissive/SELINUX=disabled/' /etc/selinux/config
关闭防火墙
查看防火墙状态
systemctl status firewalld
systemctl stop firewalld
systemctl disable firewalld
安装samba软件
[root@localhost ~]# yum -y install samba
创建共享目录
[root@localhost ~]# mkdir /common
[root@localhost ~]# chmod 777 /common
创建试文件
[root@localhost ~]# echo "hello the world" > /common/smb.txt
修改配置文件
做完以上准备工作后,如果希望 Samba 服务可以共享指定的目录给客户端,就需要在其 配置文件中写入目录共享的代码段,Samba 默认配置文件是 默认情况下, Samba 已经配置为允许用户通过远程共享访问账户自己的家目录,为了将我们在准备阶段创建 的/common 目录共享给客户端,需要在该配置文件末尾追加对 common 目录的共享设置,实现 快速自定义共享。#共享名称为 common
[root@localhost ~]# vim /etc/samba/smb.conf
cups options = raw
[homes]
comment = Home Directories
valid users = %S, %D%w%S
browseable = No
read only = No
inherit acls = Yes
[printers]
comment = All Printers
path = /var/tmp
printable = Yes
create mask = 0600
browseable = No
[print$]
comment = Printer Drivers
path = /var/lib/samba/drivers
write list = @printadmin root
force group = @printadmin
create mask = 0664
directory mask = 0775
增加以下内容
[common] #共享名称为 common
comment = public #共享注释
path = /common #重要,指定共享路径
browseable = yes #所有人可见
guest ok = no #拒绝匿名访问
guest ok = yes #允许匿名访问(可选)
writable = yes #支持写入数据
创建访问账号
useradd -s /sbin/nologin smbuser
smbpasswd -a smbuser
smbpasswd 命令的描述和用法如下。
描述:修改账户 samba 密码。
用法:smbpasswd [选项] 账户名称
选项: 添加账户并设置密码。
-x 删除 SMB 账户。
-d 禁用 SMB 账户。
-e 启用 SMB 账户。
启动服务
[root@localhost ~]# systemctl start smb
[root@localhost ~]# systemctl start nmb
设置开机自启
[root@localhost ~]# chkconfig smb on
[root@localhost ~]# chkconfig nmb on
或者
[root@localhost ~]# systemctl enable smb
[root@localhost ~]# systemctl enable nmb
访问 Samba 共享
Windows 客户端访问
打开资源管理器,再上方搜索栏中输入:\\192.168.1.10
在弹出的窗口中输入。用户名和密码
Linux 客户端访问
Linux 客户端使用 smbclient 命令可以访问服务器上的共享资源,如果安装有图形环境,也
可以通过 Linux 图形界面连接服务器,下面是具体的方法。
[root@localhost ~]# smbclient -L //192.168.1.10 #查看192.168.1.10 主机共享信息
Enter SAMBA\root's password:
Anonymous login successful
Sharename Type Comment
--------- ---- -------
print$ Disk Printer Drivers
common Disk public
IPC$ IPC IPC Service (Samba 4.10.16)
Reconnecting with SMB1 for workgroup listing.
Anonymous login successful
Server Comment
--------- -------
Workgroup Master
--------- -------
SAMBA LOCALHOST
WORKGROUP ðí╦´
[root@localhost ~]# smbclient -U smbuser //192.168.1.10/common
Enter SAMBA\smbuser's password:
Try "help" to get a list of possible commands.
smb: \> ls
. D 0 Mon Jul 1 19:26:06 2024
.. D 0 Mon Jul 1 19:06:37 2024
test.txt N 16 Mon Jul 1 19:07:33 2024
36805060 blocks of size 1024. 35298040 blocks available
smb: \> help
? allinfo altname archive backup
blocksize cancel case_sensitive cd chmod
chown close del deltree dir
du echo exit get getfacl
geteas hardlink help history iosize
lcd link lock lowercase ls
l mask md mget mkdir
more mput newer notify open
posix posix_encrypt posix_open posix_mkdir posix_rmdir
posix_unlink posix_whoami print prompt put
pwd q queue quit readlink
rd recurse reget rename reput
rm rmdir showacls setea setmode
scopy stat symlink tar tarmode
timeout translate unlock volume vuid
wdel logon listconnect showconnect tcon
tdis tid utimes logoff ..
!
smb: \>
Linux客户端图形化访问
[root@localhost ~]# nautilus-connect-server
目录挂载
有时候,挂载 Samba 共享目录实现如本地文件系统一样的使用体验是很有意义的,使用 root
管理员身份运行 mount 命令可以挂载这样的文件系统,将挂载信息写入 fstab 文件可以实现永久
挂载的目的。
创建共享目录
[root@localhost ~]# mkdir /com
临时挂载
[root@localhost ~]# mount -t cifs //192.168.1.10/common -o username=smbuser,password=123456 /com
[root@localhost ~]# ls /com
test.txt
[root@localhost ~]#
永久挂载
[ root@centos6 ~ ] # echo '' //192.168.1.10/common /com /smb \ #实现永久挂载
> cifs defaults,username=smbuser,password=<password> 0 0 /etc/fstab
配置文件详解
Samba 配置文件非常简洁明了,所有的设置都在/etc/samba/smb.conf 配置文件中进行,通过 对该配置文件的修改,可以将 Samba 配置为一台匿名文件服务器、基于账户的文件服务器或打 印服务器,默认情况下,Samba 会已开启本地账号家目录共享与打印机共享,配置文件中以# 或;符号开头的行为注释行,配置文件分为若干段,除了 global(全局配置段)之外的其余所有 段用来描述共享资源,全局段中的配置代表全局有效,是全局的默认设置。但如果全局配置段 中的设置项与共享段中的设置项有冲突,则共享设置段中的设置为实际有效值。下面具体说明 配置文件中各个配置选项的含义。
[global] #定义全局策略
workgroup = MYGROUP #定义工作组
server string = Samba Server Version %v
#服务器提示字串,默认显示 samba 版本,建议修改默认值以防止针对版本的网络攻击
interfaces = lo ethO 192.168.12.2/24 192.168.13.2/24
#如果你的服务器有多个网络接口,可以通过 interfaces 选项指定 Samba 监听哪些网络接口
;hosts allow = 127. 192.168.12. 192.168.13. EXCEPT 192.168.13.13
#hosts allow 指定仅允许哪些主机有权访问 Samba 服务器资源,该参数可以放置在全局
#段也可以放置在共享段。与此相反的选项是 hosts deny, 用来设置黑名单列表,这里可
#以指定允许访问的主机名、工 P 地址或网段,当指定网段时可以使用 192.168.12.或
#192.168.12.0/255.255.255.0 两种格式,使用 EXCEPT 可以指定例外的 工P 地址
log file = /var/log/samba/log.%m
#定义日志文件,因为使用了 Samba 变量%m, 所以每个访问共享的主机会产生独立的
#日志文件,当m 会被替换为客户端的主机名
max log size = 5。
#定义日志单个文件最大容量为 50KB
security = user
#设置 security 选项将影响客户端访问 samba 的方式,是非常重要的设置选项之一。security
#可以被设置为 server 或 domain, user 代表通过用户名、密码验证访问者的身份,
#账户需要是服务器本机系统账户;share 代表匿名访问;server 代表基于验证身份的访问,
#但账户信息保存在另一台 SMB 服务器上;domain 同样是基于验证的访问,账户信息保存在活动目
#录中
passdb backend = tdbsam
#账户与密码的存储方式,smbpasswd 代表使用老的明文格式存储账户及密码;tdbsam 代
#表基于 TDB 的密文格式存储;Idapsam 代表使用 LDAP 存储账户资料
deadtime = 10
#客户端在 10 分钟内没有打开任何 Samba 资源,服务器将自动关闭会话,在大量的并发访问环境中,
#这样的设置可以提高服务器性能
display charset = UTF8 #设置显示使用的字符集为 UTF8
max connections = 0
#设置最大连接数,0 代表无限制,若设置该规则超过此限制的连接请求服务器将拒绝连接
guest account = nobody #设置匿名账号为 nobody
load printers = yes #是否共享打印机
cups options = raw #打印属性
[homes] #共享名称
comment = Home Directories #注释,共享的描述信息
browseable = no #共享目录是否可以被浏览
writable = yes #共享目录是否可以进行写操作
[printers]
comment = All Printers
#打印机共享
path = /var/spool/samba
browseable = no
guest ok = no
writable = no
printable = yes
#打印机共享池
[common] #共享名称为 common
comment = Common share #注释,共享描述信息
path = /common #重要,指定共享路径
valid users =tom jerry #有效账户列表
create mask = 0750 #客户端上传文件的默认权限,默认为 0%4
directory mask = 0775 #客户端创建目录的默认权限,默认为 0755
browseable = yes
writable = no
#共享目录是否对所有的人可见 yes 或 no
write list = tom #写权限账户列表,这里设置 tom 可写
admin users =tom #该共享的管理员,具有完全权限
invalid users = root bin #禁止 root 与 bin 访问 common 共享
guest ok = no #是否允许匿名访问,仅当全局设置 security=share 时有效 (yes或no)