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.233\dy-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%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
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.233\IPC$ /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.233\dy-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 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM