Samba服務器的搭建

Samba服務器的搭建
nmbd進程
這個daemon是用來管理工作組,NetBIOS name等等的解析。主要利用 UDP 協議開啓 port 137 138 來負責名稱解析的任務。
smbd進程
這個daemon主要用來管理SAMBA主機分享的目錄,檔案與打印機等等。主要利用可靠的TCP協議來傳輸數據,開放端口爲139.
筆者在centos 7.6上測試通過
一、安裝軟件
yum -y install samba samba-common samba-client  
二、主要相關文件
/etc/samba/smb.conf samba的主要配置文件
/etc/samba/smbusers samba的用戶別名,比如可以將root用別名administrator、admin代替等(作用:可以只告知samba用戶該別名,這樣可以保護真實的samba服務器/etc/passwd的用戶不泄漏)
/etc/samba/lmhosts samba的IP和域名對應,類似/etc/hosts文件功能
/etc/samba/smbpasswd        該文件爲手動創建,用於存放samba用戶及密碼

[global]
workgroup = WORKGROUP
//說明:指明共享所在的工作組,可以是NT域名、工作組名
server string = samba server on Centos
//說明:客戶端看到的服務器的描述信息
netbios name = centos_smb
//說明:設置Samba Server的NetBIOS名稱。如果不填,則默認會使用該服務器的DNS名稱的第一部分。netbios name和workgroup名字不要設置成一樣了
interfaces = lo eth0
//說明:設置Samba Server監聽哪些網卡,可以寫網卡名,也可以寫該網卡的IP地址
hosts allow = 192.168.1. 0/255.255.255.0
//說明:表示允許連接到Samba Server的客戶端,多個參數以空格隔開。可以用一個IP表示,也可以用一個網段表示。我這裏允許192.168.1.0網段裏的所有客戶端訪問samba server。(註釋掉表示允許所有IP)
security = user
//說明:設置用戶訪問Samba Server的驗證方式,一共有四種驗證方式。
1. share:用戶訪問Samba Server不需要提供用戶名和口令, 安全性能較低。
2. user:Samba Server共享目錄只能被授權的用戶訪問,由Samba Server負責檢查賬號和密碼的正確性。賬號和密碼要在本Samba Server中建立。
3. server:依靠其他Windows NT/2000或Samba Server來驗證用戶的賬號和密碼,是一種代理驗證。此種安全模式下,系統管理員可以把所有的Windows用戶和口令集中到一個NT系統上,使用Windows NT進行Samba認證, 遠程服務器可以自動認證全部用戶和口令,如果認證失敗,Samba將使用用戶級安全模式作爲替代的方式。
4. domain:域安全級別,使用主域控制器(PDC)來完成認證。
我只需要user級別的安全驗證就可以了。
username map = /etc/samba/smbusers
//說明:用來定義用戶名映射,比如可以將root換成administrator、admin等。要事先在smbusers文件中定義好。比如:root = administrator admin,這樣就可以用administrator或admin這兩個用戶來代替root登陸Samba Server,以保護Linux的系統賬號root。後面會介紹這個文件
encrypt passwords = true
//說明:是否將認證密碼加密。因爲現在windows操作系統都是使用加密密碼,所以一般要開啓此項。
passdb backend = smbpasswd
//說明:passdb backend密碼驗證後端。目前支持的有三種:smbpasswd、tdbsam和ldapsam。其中smbpasswd方式是使用smb自己的工具smbpasswd來給系統用戶(真實用戶或者虛擬用戶)設置一個Samba密碼,客戶端就用這個密碼來訪問Samba的資源。smbpasswd文件默認在/etc/samba目錄下,不過有時候要手工建立該文件。這裏我選用smbpasswd。
smb passwd file =/etc/samba/smbpasswd
//說明:用來定義samba用戶的密碼文件。smbpasswd文件如果默認不存在,要手工新建。
log file = /var/log/samba/log.%m
//說明:設定 samba server 日誌文件的儲存位置和文件名(%m代表客戶端主機名)。
max open files = 1000
//說明:同一客戶最多能打開的文件數目
socket options = TCP_NODELAY
//說明:用來設置服務器和客戶端之間會話的Socket選項,可以優化傳輸速度。
[xxxxx] 共享目錄
//說明:xxxxx表示共享名
comment = code string
//說明:comment是對該共享的描述,可以是任意字符串。
path = /home/songyd/code
//說明:path用來指定共享目錄的路徑。
writable = yes
//說明:writable用來指定該共享路徑是否可寫。這裏我們允許寫入,以滿足文件雙向共享。
writelist = mysql, jack
//說明:只允許mysql和jack2個用戶對此資源可以寫,其他的爲read only
browseable = yes
//說明:browseable用來指定該共享是否可以瀏覽。
available = yes
//說明:available用來指定該共享資源是否可用。
guest ok = no
//說明:是否允許允許來賓訪問
read only = yes
//說明:設置權限爲只讀權限
public = no
//說明:共享目錄允許所有用戶訪問及上傳文件
valid users = jack sunny
//說明:只允許jack sunny訪問該共享資源
[homes]
        comment = Home Directories
        browseable = no
        writable = yes
        valid users = %S
使用者本身的"家"目錄,當使用者以samba使用者身份登入samba server 後,samba server 底下會看到自己的家目錄,目錄名稱是使用者自己的帳號。

三、一個完整的smb.conf實例

[global]
workgroup = WORKGROUP
server string = samba server on Version %v
netbios name = centos_smb
interfaces = lo eth0
#hosts allow = 192.168.16.0/255.255.255.0
security = user
username map = /etc/samba/smbusers
encrypt passwords = true
passdb backend = smbpasswd
smb passwd file =/etc/samba/smbpasswd
log file = /var/log/samba/log.%m
max open files = 1000
socket options = TCP_NODELAY[webfile]
comment = frontend web
path = /home/wwwroot/frontend/web
browseable = yes
writable = yes
create mask = 0664
directory mask = 0755
guest ok = no
public = no
available = yes
四、新建samba用戶
smbpasswd -a mysql (mysql爲/etc/passwd下存在的用戶,不存在會報錯)
New SMB password:
Retype new SMB password:
Added user mysql.
輸入完該samba用戶密碼後,會在/etc/samba/smbpasswd文件生成mysql用戶密碼信息,如果不想讓samba用戶使用mysql作爲samba用戶名訪問的話,則可以在/etc/samba/smbusers 設置改用戶別名,如下寫出了添加mysql後的smbpasswd文件和smbusers文件信息
[root@nginx samba]# cat smbpasswd
mysql:500:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:FDB5CFC19C8AC660A21CA41FE95E7D8:[U ]:LCT-5874994E:
[root@nginx samba]# cat smbusers
# Unix_name = SMB_name1 SMB_name2 ...
root = administrator admin
nobody = guest pcguest smbguest
mysql = sql     (samba用戶可以使用sql作爲samba帳號來訪問samba服務器)
五、重啓、啓動samba
service smb start
service nmb start  (nmb作用是netbios,可以使用主機名方式訪問samba)
systemctl enable smb
systemctl enable nmb

六 相關的命令
groupadd NewsGroup 添加用戶組
useradd -s /sbin/nologin -g NewsGroup -G NewsGroup -p news1-1234 news1 添加用戶
useradd -s /sbin/nologin -g <用戶組名> -G <用戶組名> -p <用戶密碼> <用戶名>
刪除用戶組之前,必須把用戶組裏面的用戶刪除乾淨或者逐出用戶組。
gpasswd -d news2 NewsGroup
gpasswd -d <用戶名> <用戶組名>命令將用戶移除用戶組:
groupdel   NewsGroup
useradd -s /sbin/nologin -g NewsGroup -G NewsGroup -p news1-1234 news1 添加用戶
useradd -s /sbin/nologin -g <用戶組名> -G <用戶組名> -p <用戶密碼> <用戶名>
smbpasswd -a user1  添加samba用戶
smbpasswd -x user1  刪除samba用戶
pdbedit -x user1   刪除samba用戶
pdbedit -L   查看用戶
userdel -r user1  刪除系統用戶
注: 客戶端通常在訪問共享目錄以後會記錄訪問賬號信息,如果需要在同一客戶端驗證不同賬號登錄權限,則可以按照如下方式嘗試清除之前的訪問信息:
windows相關命令
Dos命令行運行net use查看客戶端已記錄的連接:
net use \\10.20.0.24\IPC$ /delete
net use * /del /y 刪除所有連接
打開控制面板,搜索框輸入“憑據”後打開系統憑據管理器:

使用到的命令:

groupadd Admin
useradd -s /sbin/nologin -g Admin -G Admin -p xxxx wangxin
useradd -s /sbin/nologin -g Admin -G Admin -p xxxx jiaying
smbpasswd -a wangxin
smbpasswd -a jiaying

更詳細的測試和配置見:

https://blog.csdn.net/qq_38265137/article/details/83150450

 

發佈了33 篇原創文章 · 獲贊 28 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章