linux下配置samba伺服器
1、 什麼是samba
Samba服務類似于windows上的共享功能,可以實作在Linux上共享檔案,windows上通路,當然在Linux上也可以通路到。
是一種在區域網路上共享檔案和列印機的一種通信協定,它為區域網路内的不同計算機之間提供檔案及列印機等資源的共享服務。
2、安裝配置samba
安裝指令:yum install -y samba samba-client
配置檔案:/etc/samba/smb.conf
1
2
3
4
5
6
7
<code>[global]</code>
<code>workgroup = MYGROUP</code>
<code>server string = Samba Server Version %</code><code>v</code>
<code>security = user</code>
<code>passdb backend = tdbsam</code>
<code>load printers = </code><code>yes</code>
<code>cups options = raw</code>
配置檔案解釋:
[global] 定義全局的配置,workgroup用來定義工作組,相信如果您安裝過windows的系統,你會對這個workgroup不陌生。一般情況下,需要我們把這裡的MYGROUP改成WORKGROUP(windows預設的工作組名字)。
security = user #這裡指定samba的安全等級。
關于安全等級有四種:
share:使用者不需要賬戶及密碼即可登入samba伺服器
user:由提供服務的samba伺服器負責檢查賬戶及密碼(預設)
server:檢查賬戶及密碼的工作由另一台windows或samba伺服器負責
domain:指定windows域控制伺服器來驗證使用者的賬戶及密碼。
passdb backend = tdbsam #passdb backend(使用者背景)
samba有三種使用者背景:smbpasswd, tdbsam和ldapsam。
load printers:加載列印機
cups options = raw 列印機相關設定;
3、samba配置相關指令
smbpasswd:該方式是使用smb工具smbpasswd給系統使用者(真實使用者或者虛拟使用者)設定一個Samba密碼,用戶端就用此密碼通路Samba資源。smbpasswd在/etc/samba中,有時需要手工建立該檔案。
tdbsam:使用資料庫檔案建立使用者資料庫。資料庫檔案叫passdb.tdb,在/etc/samba中。passdb.tdb使用者資料庫可使用 smbpasswd -a 建立Samba使用者,要建立的Samba使用者必須先是系統使用者。也可使用pdbedit建立Samba賬戶。
pdbedit參數很多,列出幾個主要的:
pdbedit -a username:建立Samba賬戶。
pdbedit -x username:删除Samba賬戶。
pdbedit -L:列出Samba使用者清單,讀取passdb.tdb資料庫檔案。
pdbedit -Lv:列出Samba使用者清單詳細資訊。
pdbedit -c “[D]” -u username:暫停該Samba使用者賬号。
pdbedit -c “[]” -u username:恢複該Samba使用者賬号。
ldapsam:基于LDAP賬戶管理方式驗證使用者。首先要建立LDAP服務,設定 “passdb backend = ldapsam:ldap://LDAP Server”
load printers 和 cups options 兩個參數用來設定列印機相關。
除了這些參數外,還有幾個參數需要你了解:
netbios name = MYSERVER # 設定出現在網路上的芳鄰中的主機名
hosts allow = 127. 192.168.12. 192.168.13. 172.16.# 用來設定允許的主機,如果在前面加 ”;” 則表示允許所有主機
log file = /var/log/samba/%m.log #定義samba的日志,這裡的%m是上面的netbios name
max log size = 50 # 指定日志的最大容量,機關是K
[homes] 該部分内容共享使用者自己的家目錄,也就是說,當使用者登入到samba伺服器上時實際上是進入到了該使用者的家目錄,使用者登陸後,共享名不是homes而是使用者自己的辨別符,對于單純的檔案共享的環境來說,這部分可以注視掉。
[printers] 該部分内容設定列印機共享。
4、samba實踐一
要求共享一個目錄,任何人都可以通路,即不用輸入密碼即可通路,要求隻讀;
[global]部分 MYGROUP 改為WORKGROUP
security = user 改為 security = share
末尾處加入:
[share]
comment = share all
path = /tmp/samba
browseable = yes
public = yes
writable = no
啟動smb服務;smb監聽的端口為139和445;
<code>[root@pma ~]</code><code># /etc/init.d/smb start</code>
<code>[root@pma ~]</code><code># netstat -nlp | grep smb</code>
<code>tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 1329</code><code>/smbd</code>
<code>tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN 1329</code><code>/smbd</code>
<code>tcp 0 0 :::139 :::* LISTEN 1329</code><code>/smbd</code>
<code>tcp 0 0 :::445 :::* LISTEN 1329</code><code>/smbd</code>
<code>mkdir</code> <code>/tmp/samba</code>
<code>chmod</code> <code>777 </code><code>/tmp/samba</code>
<code>touch</code> <code>/tmp/samba/sharefile</code>
<code>echo</code> <code>"111111"</code> <code>> </code><code>/tmp/samba/sharefile</code>
啟動:/etc/init.d/smb start
檢查配置的smb.conf是否正确 testparm
測試:windows機器浏覽器輸入 file://192.168.22.30/share
或者運作欄輸入: \\192.168.22.30 或 \\192.168.22.30\share
<a href="http://s3.51cto.com/wyfs02/M02/6D/59/wKioL1ViihGRXGkOAADJlPHraIg060.jpg" target="_blank"></a>
5、Samba實踐二
共享一個目錄,使用使用者名和密碼登入後才可以通路,要求可以讀寫;
[global] 部分内容如下:
[global]
workgroup = WORKGROUP
server string = Samba Server Version %v
security = user
passdb backend = tdbsam
load printers = yes
cups options = raw
還需加入:
[myshare]
comment = share for users
path = /samba
writable = yes
public = no
建立目錄:mkdir /samba
修改權限:chmod 777 /samba
建立系統賬号:
useradd user1
useradd user2
添加user1/user2為samba賬戶:
pdbedit -a user1 #需要輸入使用者密碼2次
pdbedit -a user2
列出samba所有賬号: pdbedit –L
重新開機服務 service smb restart
測試:浏覽器輸入file://192.168.22.30/myshare
運作輸入:\\192.168.22.30 或 \\192.168.22.30\myshare
進入\\192.168.22.30 彈出對話框,需要輸入user1 使用者名和密碼,登入後,除了myshare共享檔案夾,還有user1的使用者家目錄;user1擁有對目錄的讀寫權限;
<a href="http://s3.51cto.com/wyfs02/M00/6D/5E/wKiom1ViiQrzyVqMAACsW3LsgEQ888.jpg" target="_blank"></a>
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<code>[root@yonglinux samba]</code><code># pdbedit -a user1</code>
<code>new password:</code>
<code>retype new password:</code>
<code>Unix username: user1</code>
<code>NT username: </code>
<code>Account Flags: [U ]</code>
<code>User SID: S-1-5-21-4158901286-2295312163-1106066968-1000</code>
<code>Primary Group SID: S-1-5-21-4158901286-2295312163-1106066968-513</code>
<code>Full Name: </code>
<code>Home Directory: \\yonglinux\user1</code>
<code>HomeDir Drive: </code>
<code>Logon Script: </code>
<code>Profile Path: \\yonglinux\user1\profile</code>
<code>Domain: YONGLINUX</code>
<code>Account desc: </code>
<code>Workstations: </code>
<code>Munged dial: </code>
<code>Logon </code><code>time</code><code>: 0</code>
<code>Logoff </code><code>time</code><code>: never</code>
<code>Kickoff </code><code>time</code><code>: never</code>
<code>Password last </code><code>set</code><code>: 一, 25 5月 2015 01:39:08 CST</code>
<code>Password can change: 一, 25 5月 2015 01:39:08 CST</code>
<code>Password must change: never</code>
<code>Last bad password : 0</code>
<code>Bad password count : 0</code>
<code>Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF</code>
<code>[root@yonglinux samba]</code><code># pdbedit -L</code>
<code>user1:502:</code>
實驗測試,暫停使用者,恢複使用者,删除使用者;
samba服務端,先暫停使用者,賬号标記為[DU],正常狀态為[U];用戶端通路,提示賬号不可用;
<code>[root@yonglinux samba]</code><code># pdbedit -c [D] -u user1</code>
<code>Account Flags: [DU ]</code>
<code>[root@localhost mnt]</code><code># smbclient //192.168.22.30/myshare -Uuser1</code>
<code>Enter user1's password: </code>
<code>session setup failed: NT_STATUS_ACCOUNT_DISABLED</code>
samba服務端恢複使用者,賬号标記為[U];用戶端通路,恢複正常;
<code>[root@yonglinux samba]</code><code># pdbedit -c [] -u user1</code>
<code>[root@localhost /]</code><code># smbclient //192.168.22.30/myshare -Uuser1</code>
<code>Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.6.23-14.el6_6]</code>
<code>smb: \></code>
samba服務端删除使用者,用戶端通路,會報錯賬号不可用;
<code>[root@yonglinux samba]</code><code># pdbedit -x user1</code>
6、 Linux通路samba共享檔案
安裝用戶端軟體 yum install -y samba-client
指令格式:smbclient //IP/共享名 -U 使用者名
如:smbclient //127.0.0.1/share 如果是匿名通路可以省略掉-U
mount挂載samba目錄:mount -t cifs //192.168.0.22/myshare /mnt -o username=user1,password=123456 使用使用者密碼登陸的;
mount -t cifs //192.168.0.22/myshare /mnt 匿名通路不需要-o參數;
如執行指令提示參數有錯,還需要安裝cifs-utils包;
linux用戶端測試samba共享:
故意輸入錯誤密碼,會報錯登入失敗LOGON_FAILURE;輸入正确密碼後進入,put上傳檔案,get下載下傳檔案;上傳的檔案smb伺服器中檢視所屬主、組為user1;user1在共享檔案夾可以建立目錄,删除檔案;help可以列出目前指令行可以執行的指令;
<code>[root@localhost ~]</code><code># smbclient //192.168.22.30/myshare -Uuser1</code>
<code>session setup failed: NT_STATUS_LOGON_FAILURE</code>
<code>smb: \> </code><code>ls</code>
<code> </code><code>. D 0 Mon May 25 01:55:23 2015</code>
<code> </code><code>.. DR 0 Mon May 25 01:35:52 2015</code>
<code> </code><code>sa D 0 Mon May 25 01:55:17 2015</code>
<code> </code><code>a11.txt A 0 Mon May 25 02:00:32 2015</code>
<code>35727 blocks of size 524288. 28572 blocks available</code>
<code>smb: \> put 1.sql</code>
<code>putting </code><code>file</code> <code>1.sql as \1.sql (180.8 kb</code><code>/s</code><code>) (average 180.8 kb</code><code>/s</code><code>)</code>
<code>smb: \> get a11.txt </code>
<code>getting </code><code>file</code> <code>\a11.txt of size 0 as a11.txt (0.0 KiloBytes</code><code>/sec</code><code>) (average 0.0 KiloBytes</code><code>/sec</code><code>)</code>
<code> </code><code>1.sql A 1851 Mon May 25 02:02:19 2015</code>
<code>smb: \> help</code>
<code>? allinfo altname archive blocksize </code>
<code>cancel case_sensitive </code><code>cd</code> <code>chmod</code> <code>chown</code>
<code>close del </code><code>dir</code> <code>du</code> <code>echo</code>
<code>exit</code> <code>get getfacl geteas hardlink </code>
<code>help </code><code>history</code> <code>iosize lcd link </code>
<code>lock lowercase </code><code>ls</code> <code>l mask </code>
<code>md mget </code><code>mkdir</code> <code>more</code> <code>mput </code>
<code>newer </code><code>open</code> <code>posix posix_encrypt posix_open </code>
<code>posix_mkdir posix_rmdir posix_unlink print prompt </code>
<code>put </code><code>pwd</code> <code>q queue quit </code>
<code>readlink rd recurse reget rename </code>
<code>reput </code><code>rm</code> <code>rmdir</code> <code>showacls setea </code>
<code>setmode stat </code><code>symlink</code> <code>tar</code> <code>tarmode </code>
<code>timeout translate unlock volume vuid </code>
<code>wdel logon listconnect showconnect .. </code>
<code>smb: \> </code><code>exit</code>
<code>[root@yonglinux samba]</code><code># ls -l</code>
<code>-rwxr--r-- 1 user1 user1 1851 5月 25 02:02 1.sql</code>
用戶端mount挂載samba共享檔案夾到本地:
<code>[root@localhost ~]</code><code># mount -t cifs //192.168.22.30/myshare /mnt -o username=user1,password=123456</code>
<code>[root@localhost ~]</code><code># mount</code>
<code>/dev/sdb3</code> <code>on / </code><code>type</code> <code>ext4 (rw)</code>
<code>proc on </code><code>/proc</code> <code>type</code> <code>proc (rw)</code>
<code>sysfs on </code><code>/sys</code> <code>type</code> <code>sysfs (rw)</code>
<code>devpts on </code><code>/dev/pts</code> <code>type</code> <code>devpts (rw,gid=5,mode=620)</code>
<code>tmpfs on </code><code>/dev/shm</code> <code>type</code> <code>tmpfs (rw)</code>
<code>/dev/sdb1</code> <code>on </code><code>/boot</code> <code>type</code> <code>ext4 (rw)</code>
<code>none on </code><code>/proc/sys/fs/binfmt_misc</code> <code>type</code> <code>binfmt_misc (rw)</code>
<code>//192</code><code>.168.22.30</code><code>/myshare</code> <code>on </code><code>/mnt</code> <code>type</code> <code>cifs (rw)</code>
本文轉自 模範生 51CTO部落格,原文連結:http://blog.51cto.com/mofansheng/1654871,如需轉載請自行聯系原作者