centos部署smb服务

一、源码安装

  • 编译 ./configure --prefix=/app/samba4.4.4

  依赖环境 yum install libacl-devel libblkid-devel gnutls-devel readline-devel python-devel gdb pkgconfig libldap2-dev

      

报错 Checking for custom code : Could not find the python development headers /app/source/samba-4.4.4/wscript:106: error: the configuration failed (see '/app/source/samba-4.4.4/bin/config.log')

安装 yum install python-devel.x86_64

 

报错

Error: python-devel conflicts with python-2.6.6-52.el6.x86_64

You could try using --skip-broken to work around the problem

** Found 2 pre-existing rpmdb problem(s), 'yum check' output follows:

python-2.6.6-64.el6.x86_64 is a duplicate with python-2.6.6-52.el6.x86_64

python-libs-2.6.6-64.el6.x86_64 is a duplicate with python-libs-2.6.6-52.el6.x86_64

卸载 rpm -e python-2.6.6-52.el6.x86_64

安装最新python

 

报错 /app/source/samba-4.4.4/source4/lib/tls/wscript:51:

error: Building the AD DC requires GnuTLS (eg libgnutls-dev, gnutls-devel)

for ldaps:// support and for the BackupKey protocol

        安装 yum install gnutls-devel

 

报错

/app/source/samba-4.4.4/source3/wscript:505:

error: ACL support not found. Try installing libacl1-dev or libacl-devel.

Otherwise, use --without-acl-support to build without ACL support. ACL support is required to change permissions from Windows clients.

  • make && make install
  • 配置动态链接库路径

安装完成后,我们需要配置动态链接库路径,因为运行samba的进行smbd和nmbd需要到目录/app/samba4.4.4/lib下的动态链接库文件。

但是该目录不是系统默认的动态链接库文件搜索路径,于是我们需要将该目录添加到文件ld.so.conf中。执行下面的命令

# vi /etc/ld.so.conf

打开ld.so.conf文件,并在该文件中加入这一行内容。 /app/samba4.4.4/lib

然后执行命令

# ldconfig 来更新动态链接库缓冲。 

 二、yum安装

   [root@localhost ~]# yum install samba

三、配置文件说明

Samba的安全认证

Samba提供了安全认证等级,分4个级别:

share : 不需要输入用户名和密码

user : 需要输入用户名,密码, Samba对用户进行认证

server : 认证工作由另一台Samba服务器或者Windows server负责

domain : 指定一台windows server来进行用户认证

其中user是Samba的默认安全认证级别,也就是说在/etc/samba/smb.conf配置文件中,

security一行改为security=user,那么用户在浏览共享内容前,就必须输入用户名和密码。

示例:
[global]
security=user
[linux_share]
path=/home/linux/share
valid users=sftest #指定有效的用户,多个用可访问用逗号隔开
public=no #公开访问为否 
writeable=yes #添加一句,表示具有写权限了
创建用户,必须创建系统用户与samba用户
# useradd sftest
# bin/smbpasswd -a sftest #smbpasswd是命令, -a表示add user , sftest表示用户名
添加完用户和密码后,现在可以在windows中通过这个用户名和密码进行访问了

四、挂载smb访问 

  • smbclient 挂载访问

安装 smbclient , smbfs yum -y install samba-client

[root@localhost ~]# smbclient //192.168.90.233/dy-history --user shufeng

[root@localhost ~]# mount -t smbfs -o username=shareuser,passwd=***** //192.168.90.233/dy-history /mnt/data

提示输入密码 即可挂载访问 

  • windows主机访问smb共享文件夹

切换账户测试的时候,Windows会有samba缓存自动登录原来的账户,需要清理一下,清除方法:services.msc 服务--Workstation 重启服务清除缓存。

    • 直接cmd访问 

 运行 \192.168.90.233dy-history

提示输入账号密码

可映射为本地驱动器

    • 命令行页面:记录保存网络共享访问的账号密码
net use \host passwd /user:username
c:> net use \192.168.90.233 123456 /user:shufeng
192.168.90.233 是服务器的IP。
123456 是密码。
shufeng 是用户名。
直接清除所有的共享连接和密码 
c:> net use * /del
c:> net use * /del /y
查看指定主机的共享信息 
c:> net view \192.168.90.233
查看本机共享
net share,这个命令可以查看哪些盘是共享的,删除的话,
net share /del 加上你要删除的共享磁盘(你就是也用上上个命令看到的后面带$这个的东东)
  •  windows smb账号密码清除脚本,新建文本,拷贝以下内容,修改为bat后缀文件名,管理员权限运行
@echo off
:: BatchGotAdmin
:-------------------------------------
REM --> Check for permissions
>nul 2>&1 "%SYSTEMROOT%system32cacls.exe" "%SYSTEMROOT%system32configsystem"
REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
echo Requesting administrative privileges...
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%getadmin.vbs"
"%temp%getadmin.vbs"
exit /B
:gotAdmin
if exist "%temp%getadmin.vbs" ( del "%temp%getadmin.vbs" )
pushd "%CD%"
CD /D "%~dp0"
:--------------------------------------
@echo off
echo 清除上次信息,请稍等......
net use
net use \192.168.90.233IPC$ /DELETE
::清除win保存的认证
klist purge
::m删除win保存的凭据管理器,delete:后面为你共享的地址
cmdkey /delete:192.168.90.233
echo 清除登录信息完成
@echo off
net stop LanmanWorkstation
net start LanmanWorkstation
start /max "" "\192.168.90.233dy-outer"

  

  •  mac os 挂载 

Finder 中,选取“前往”>“连接到服务器”。

使用以下一种格式,在“服务器地址”栏中键入电脑的网络地址:

smb://192.168.90.233/dy-username

按照屏幕上的指示键入工作组名称以及用户名称和密码

详见百度说明: https://jingyan.baidu.com/article/fb48e8be3b457d6e622e14aa.html

 

五、用户权限配置

  • 权限配置

新建用户组 groupadd danying

在组下建立用户 useradd -G danying -N shufeng

新建用户 useradd fuqin

再把fuqin加入单影组 usermod -a -G danying fuqin

设置smb用户密码 smbpasswd -a shufeng 

  • 新建用户文件夹

新建目录结构 mkdir -p /gfs/share/danying/shufeng

改变用户 chown shufeng /gfs/share/danying/shufeng

改变组 chgrp danying /gfs/share/danying/shufeng

改变权限 chmod 755 /gfs/share/danying/shufeng

  

  • 新增用户的操作流程 

1,新建用户 

2,加入组 

3,初始化smb用户密码 

4,新建用户文件夹,设置文件夹权限 

5,smb配置中增加当前用户信息 

6,重启smb服务

  

  • 权限配置说明

权限配置文件所在路径 /etc/samba/smb.conf

testparm检测配置文件命令

参数说明:

 

  • samba服务器全局配置

workgroup 指定工作组名称

server string 主机注释信息

netbios name 指定NetBIOS名

interfaces 指定服务侦听接口和ip

hosts allow 可用“,”,空格,或tab分隔,默认允许所有主机访问,也可在每个共享独立配置。

hosts deny 拒绝指定主机访问

config file = /etc/samba/conf.d/%U 用户独立的配置文件

Log level = 2 日志级别,默认为0,不记录日志

max log size = 50 日志文件达到50k,将轮循rotate,单位KB

passdb backend = tdbsam 密码数据库格式

 

  • samba服务共享目录配置

每个共享目录应该有独立的[ ]部分

[共享名称] 远程网络看到的共享名称

comment 注释信息

path 所共享的目录路径

public 能否被guest访问的共享,默认为no,和guest ok类似

browsable 是否允许所有用户浏览此共享,默认为yes,no为隐藏

writeable = yes 可以被所有用户读写,默认为no

read only = no 和 writeable = yes 等价,如与以上设置发生冲突,放在后面的设置生效,默认只读

write list 三种形式:用户,@组名(如writeable=no,列表中用户或组可读写,不在列表中用户只读)

valid users 特定用户才能访问该共享,如为空,将允许所有用户访问,用户名之间用空格分隔

 

  • 配置示例:

[dy-history]

comment = danying-history

path = /gfs/share/danying/history

public = no

writable = yes

admin users = shufeng fuqin yinsinv

valid users = shufeng yinsinv fuqin

browsable = no

[dy-shufeng]

comment = danying-shufeng

path = /gfs/share/danying/shufeng

writable = yes

public = no

admin users = shufeng

valid users = ohufeng

browsable = no

[dy-fuqin]

comment = danying-fuqin

path = /gfs/share/danying/fuqin

writable = yes

public = no

admin users = fuqin

valid users = fuqin

browsable = no

 

六、常见问题

  • 对于服务器目录权限的测试:

由于我共享的是share目录,创建时用root,所以在默认的情况下,即使开了writeable也没有权限写,因为服务器目录的本身权限有问题。

1)先修改用户所属

sudo chown shufeng:shufeng

2)只保留shufeng用户有权限访问这个目录

sudo chmod u+rwx,g-rwx,o-rwx share

3)访问,测试写文件

测试成功,shufeng用户有权限写。

关闭 firewalld 防火墙

 systemctl stop firewalld.service

 开机禁用 systemctl disable firewalld.service

关闭SELIUNX

 [root@linux /]# getenforce   ;查看当前状态

Enforcing 

 [root@linux /]# setenforce 0;

#关闭SELinux

[root@node01 ~]# sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config 

 

原文地址:https://www.cnblogs.com/melodyf/p/13387582.html