samba配置

来源:互联网 发布:《linux就该这么学 编辑:程序博客网 时间:2024/06/03 22:44

1. samba简介

Samba是在Linux和UNIX系统上实现SMB协议的文件共享软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是C/S型协议,client通过该协议可以访问server上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。samba实现了Windows或者Linux主机与Linux服务器之间的资源共享,为两种不同的操作系统架起了一座桥梁,使Linux系统和Windows系统之间能够实现互相通信,共享文件系统、打印机及其他资源。

Samba服务的组成部分
1.1 软件包:

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

1.2 服务名称:smb nmb

1.3 服务端口: 通常使用TCP/445进行所有连接。还使用UDP137、UDP138和TCP/139进行向后兼容

1.4. 主配置文件:/etc/samba/smb.conf

2. samba基本配置及访问

2.1 yum安装samba

我们首先搜索查看一下相关软件包
这里写图片描述
然后执行yum安装:

yum install samba samba-common samba-client

2.2 添加samba用户,此用户必须是系统中存在的用户
smbpasswd(8)
The smbpasswd command is a tool for changing LanMan and Windows NT password hashes on Samba and Windows NT servers.
添加命令:
smbpasswd -a student
然后查看用户:

[root@localhost ~]# pdbedit -Lstudent:1000:Student User[root@localhost ~]# 

如果您创建仅Samba用户,请将UNIX密码设置为/sbin/nologin。
[root@serverX ~]# useradd -s /sbin/nologin username
2.3 配置一个共享目录

[halo]comment = mnt to loadpath = /mntbrowseable = yesvalid users = studentwritable = yes

下图中的share modes = yes 不需要添加,否则可能出错!!
这里写图片描述

注意:针对系统级的设备或者目录(例如此例中的/mnt目录)要想被samba访问,就需要关闭sebool值,针对普通文件或者目录请设置selinux标签,否则可能导致访问失败!!

getsebool -a | grep sambasetsebool -P samba_export_all_ro ONsetsebool -P samba_export_all_rw ON

2.3 查看共享列表并且登陆访问
1. 图形访问CIFS共享:

转至 “网络” --> “连接服务器”。填写以下字段:Server Address : 172.25.254.136Userame: studentPassword: redhat

2.命令行访问:
查看共享列表:smbclient -L //172.25.254.136

[root@localhost ~]# smbclient -L //172.25.254.136Enter root's password: Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]    Sharename       Type      Comment    ---------       ----      -------    halo            Disk      mnt to load    IPC$            IPC       IPC Service (Samba Server Version 4.1.1)Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]    Server               Comment    ---------            -------    Workgroup            Master    ---------            -------[root@localhost ~]# 

登陆访问:smbclient //172.25.254.136/halo -U student

[root@foundation ~]# smbclient //172.25.254.136/halo -U studentEnter student's password: Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]smb: \> ls  .                                   D        0  Tue Aug 15 11:08:33 2017  ..                                  D        0  Wed Aug 16 08:33:40 2017  haloya                              D        0  Tue Aug 15 11:08:33 2017        10473900 blocks of size 1024. 7289968 blocks availablesmb: \> 

如果在登陆访问的过程中出错,例如:

[root@localhost ~]# smbclient //172.25.254.136/halo -U studentEnter student's password: Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]tree connect failed: NT_STATUS_ACCESS_DENIED

运行以下命令检查配置文件是否正确,如果配置文件没有格式上的错误,那么,就检查一下你的配置选项是否设置了有效用户限制,例如:valid users = student
[root@localhost ~]# testparm -v -s | grep usershare

2.4. 挂载共享目录进行访问

[root@foundation ~]# dfFilesystem     1K-blocks     Used Available Use% Mounted on/dev/sda3      120529408 32572540  87956868  28% /devtmpfs         1868044        0   1868044   0% /devtmpfs            1881152      488   1880664   1% /dev/shmtmpfs            1881152     9064   1872088   1% /runtmpfs            1881152        0   1881152   0% /sys/fs/cgroup/dev/sda1         508588   149440    359148  30% /boottmpfs             376232       28    376204   1% /run/user/1000tmpfs             376232        0    376232   0% /run/user/0[root@foundation ~]# mount //172.25.254.136/halo /mnt -o username=student,password="redhat" [root@foundation ~]# dfFilesystem            1K-blocks     Used Available Use% Mounted on/dev/sda3             120529408 32572520  87956888  28% /devtmpfs                1868044        0   1868044   0% /devtmpfs                   1881152      488   1880664   1% /dev/shmtmpfs                   1881152     9064   1872088   1% /runtmpfs                   1881152        0   1881152   0% /sys/fs/cgroup/dev/sda1                508588   149440    359148  30% /boottmpfs                    376232       28    376204   1% /run/user/1000tmpfs                    376232        0    376232   0% /run/user/0//172.25.254.136/halo  10473900  3183704   7290196  31% /mnt[root@foundation ~]# cd /mnt/[root@foundation mnt]# lshaloya[root@foundation mnt]# 

这里写图片描述

2.5 永久挂载CIFS共享
将以下行添加到/etc/fstab:

//172.25.254.136/halo /mnt/share cifs credentials=/root/userpasswd 0 0

然后创建/root/userpasswd,并且指定samba用户名和密码
vim /root/userpasswd

user=wxhpass=westos

3. samba高级配置

3.1 保护SMB
samba_enable_home_dirs和use_samba_home_dirs SELinux布尔值
samba_enable_home_dirs布尔值允许本地Linux主目录作为CIFS文件共享导出至其他系统。另一方面 use_samba_home_dirs布尔值允许挂载远程CIFS文件共享并将其用作本地Linux主目录。

# setsebool -P samba_enable_home_dirs onsamba_share_t用于共享用户自定义samba共享# chcon -R -t samba_share_t /smbshare或 # semanage fcontext -a -t samba_share_t '/smbshare(/.*)?'# restorecon -vvFR /smbsharesamba_export_all_ro 和 samba_export_all_rw用于共享系统目录# setsebool -P samba_export_all_ro on# setsebool -P samba_export_all_rw on

3.2 配置guest访问和挂载共享目录
在配置文件/etc/samba/smb.conf中对应区块分别添加下面两条内容:

map to guest = bad user#在公共配置区块中添加

这里写图片描述
guest ok = yes
#在具体共享目录中添加
这里写图片描述
配置后重启服务进行测试
mount -o //172.25.254.136/halo /mnt username=guest,password=””
这里写图片描述

3.3 samba配置多用户挂载

1.在客户端安装yum install cifs-utils -y
然后创建认证文件/root/smbpassword

echo username=student >/root/smbpasswd echo password=redhat >>/root/smbpasswd 

设置文件权限

chmod 600 /root/smbpassword

2. 配置挂载认证

mount -o credentials=/root/smbpassword,sec=ntlmssp //172.25.254.136/halo /mnt/

添加用户挂载访问认证

cifscreds add -u username
  1. 编辑/etc/fstab,永久挂载smb共享:

    //172.25.254.136/halo /mnt/ cifs credentials=/root/smbpassword,multiuser,sec=ntlmssp 0 0

然后执行 mount -a

原创粉丝点击