CentOS下SAMBA的搭建
一、Samba的由來:
早起網絡中,檔案數據傳輸大多使用FTP這個軟件進行傳送,FTP的弊端是無法直接修改服務器上面的數據,更新數據,只能靠來回拷貝,時間久了,容易混淆。於是就有了NFS(NetworkFile System),通過共享目錄的掛載實現對Server上的檔案數據讀寫更新,不過,NFS僅能讓 Unix 機器溝通。在微軟 ( Microsoft ) 上面也有類似的檔案系統,,CLFS(CommonInternet File System)。 CIFS 只能讓 Windows 機器溝通。介於Windows與 Unix-Like 這兩個不同的平臺相互分享檔案數據的檔案系統,於是出現了Samba。
二、Samba簡介:
是在Linux和UNIX系統上實現SMB協議的一個免費軟件,由服務器及客戶端程序構成。SMB(Server Messages Block,信息服務塊)是一種在局域網上共享文件和打印機的一種通信協議,它為局域網內的不同計算機之間提供文件及打印機等資源的共享服務。SMB協議是客戶機/服務器型協議,客戶機通過該協議可以訪問服務器上的共享文件系統、打印機及其他資源。通過設置“NetBIOS over TCP/IP”使得Samba不但能與局域網絡主機分享資源,還能與全世界的電腦分享資源。
SAMBA 主要靠兩種服務來實現文件和打印機的共享;
smbd:處理文件和打印機共享請求的。端口號,139,445。
nmbd:處理NetBIOS名稱服務請求和網絡瀏覽功能的。端口號:137,138。
了解完samba之後,下來就是如何搭建和配置。
三、搭建前準備
1、環境介紹
服務端 CentOS ip地址
客戶端 win7 與服務器同局域網的
2、安裝samba軟件
[root@localhost~]# rpm -qa | grep samba 查看是否安裝了samba軟件,沒有安裝先安裝
[root@localhost~]# yum search samba 先查一下有沒有相關的軟件
[root@localhost~]# yum install samba 找到之後,那就安裝吧
3、相關設定
安裝好如何啟動 samba 這個服務呢?並且設定好開機就啟動他!
想要了解如何啟動,得要使用 rpm 去找一下軟件的啟動方式,然後再去處理啟動的行為啰!
先查詢一下啟動的方式為何:
[root@localhost~]# rpm -ql samba | grep ‘/etc‘
/etc/logrotate.d/samba
/etc/openldap/schema
/etc/openldap/schema/samba.schema
/etc/pam.d/samba
/etc/rc.d/init.d/nmb //就是這兩位仁兄了
/etc/rc.d/init.d/smb //就是這兩位仁兄了
/etc/samba/smbusers
[root@localhost~]# /etc/rc.d/init.d/nmb start
啟動 NMB 服務:
[root@localhost~]# /etc/rc.d/init.d/smb start
啟動 SMB 服務:
設置開機自啟:
[root@localhost~]# chkconfig nmb on
[root@localhost~]# chkconfig smb on
啟動之後,觀察有麽有啟動相應的port:
[root@localhost~]# neITtat -tunlp | grep ‘[sn]mb‘
關閉SElinux:
[root@localhost~]# setenforce 0
防火墻放行smb,nmb相應的端口:
編輯防火墻配置文件,放行445,137,138,139端口:
[root@localhost~]# vi /etc/sysconfig/iptables
-A INPUT-p udp -m udp --dport 445 -j ACCEPT
-A INPUT-p tcp -m tcp --dport 445 -j ACCEPT
-A INPUT-p udp -m udp --dport 139 -j ACCEPT
-A INPUT-p tcp -m tcp --dport 139 -j ACCEPT
-A INPUT-p udp -m udp --dport 138 -j ACCEPT
-A INPUT-p tcp -m tcp --dport 138 -j ACCEPT
-A INPUT-p tcp -m tcp --dport 137 -j ACCEPT
-A INPUT-p udp -m udp --dport 137 -j ACCEPT
配置完保存並重啟防火墻:
[root@localhost~]# service iptables save
iptables:將防火墻規則保存到/etc/sysconfig/iptables:[確定]
[root@localhost~]# service iptables restart
iptables:將鏈設置為政策ACCEPT:filter [確定]
iptables:清除防火墻規則:[確定]
iptables:正在卸載模塊:[確定]
iptables:應用防火墻規則:[確定]
這樣,samba就裝好了,下面就是/etc/samba/smb.conf文件的配置了,那麽如何找出配置文件呢?因為我們總是需要修改配置文件啊!這樣做吧:
root@localhost~]# rpm -qc samba samba-common
/etc/logrotate.d/samba
/etc/pam.d/samba
/etc/samba/smbusers
/etc/samba/lmhosIT
/etc/samba/smb.conf //很明顯這個就是配置文件了
/etc/sysconfig/samba
一般情況下,公司或企業主要分三種情況,即:
1、公共匿名類共享目錄的配置(即匿名賬戶訪問共同的目錄或者文件);
A、配置文件:
[root@localhost~]# vi /etc/samba/smb.conf
在文件中添加或者修改相關代碼:
workgroup= MYGROUP //定義工作組,也就是windows中的工作組概念
serverstring = Samba Server Version %v //定義Samba服務器的簡要說明
netbiosname = MYSERVER //定義windows中顯示出來的計算機名稱
log file= /var/log/samba/log.%m //定義Samba用戶的日誌文件,%m代表客戶端主機//Samba服務器會在指定的目錄中為每個登陸主機建立不同的日誌文件
security= share //共享級別,用戶不需要賬號和密碼即可訪問
[public] //設置針對的是共享目錄個別的設置,只對當前的共享資源起作用
comment = Public Stuff //對共享目錄的說明文件,自己可以定義說明信息
path = /share //用來指定共享的目錄,必選項
public = yes //所有人可查看,等效於guest ok =yes
B、建立共享目錄:
[root@localhost~]# cd ..
[root@localhost/]# mkdir share
[root@localhost/]# cd share
[root@localhostshare]# touch samba.txt
[root@localhostshare]# touch aa.txt
[root@localhostshare]# ls -ls
顯示結果:
total 0
0-rw-r--r--. 1 root root 0 Mar 13 11:02 aa.txt
0 -rw-r--r--.1 root root 0 Mar 13 11:02 samba.txt
為/share目錄給匿名用戶授權為nobody權限:
[root@localhost/]# chown -R nobody:nobody share/
[root@localhost/]# ll /share/
total 0
-rw-r--r--.1 nobody nobody 0 Mar 13 11:02 aa.txt
-rw-r--r--.1 nobody nobody 0 Mar 13 11:02 samba.txt
C、重啟smb服務:
[root@localhost/]# /etc/init.d/smb restart
Shuttingdown SMB services: [ OK ]
StartingSMB services: [ OK ]
[root@localhost/]# /etc/init.d/nmb restart
Shuttingdown NMB services: [FAILED]
StartingNMB services: [ OK ]
D、測試smb.conf配置是否正確:
[root@localhostshare]# testparm
顯示結果
Load smbconfig files from /etc/samba/smb.conf
rlimit_max:increasing rlimit_max (1024) to minimum Windows limit (16384)
Processingsection "[homes]"
Processingsection "[printers]"
Processingsection "[public]"
Processingsection "[IT]"
Unknownparameter encountered: "valid user"
Ignoringunknown parameter "valid user"
Processingsection "[HR]"
Processingsection "[FM]"
Processingsection "[share]"
Loadedservices file OK.
Serverrole: ROLE_STANDALONE
Pressenter to see a dump of your service definitions
[global]
workgroup = MYGROUP
server string = Samba Server Version %v
log file = /var/log/samba/log.%m
max log size = 50
client signing = required
idmap config * : backend = tdb
cups options = raw
[homes]
comment = Home Directories
read only = No
browseable = No
[printers]
comment = All Printers
path = /var/spool/samba
printable = Yes
print ok = Yes
browseable = No
[public]
comment = Public Stuff
path = /share
guest ok = Yes
[IT]
comment = IT
path = /IT
E、訪問Samba服務器的共享文件:
E1:CentOS系統下測試:
[root@localhost~]# smbclient //*.*.*.*/public
Enterroot‘s password:
Anonymouslogin successful
Domain=[MYGROUP]OS=[Unix] Server=[Samba 3.6.23-45.el6_9]
smb:\> ls
. D 0 Sun Nov 12 03:30:29 2017
.. DR 0 Sun Nov 12 08:27:23 2017
aa.txt 0 Sun Nov 12 03:30:29 2017
samba.txt 0 Sun Nov 12 03:30:24 2017
61970 blocks of size 32768.46296 blocks available
smb:\>
在此輸入 q 命令,退出訪問。
E2:window 7系統下測試,結果如圖:
從圖中可以看出,公共目錄共享成功。
2、按照權限對目錄進行分組(即除公共共享目錄外,各組訪問各組的文件或目錄,以技術部門IT為例);
A、添加IT部組和用戶,並賦給用戶密碼:
[root@localhost~]# groupadd IT
[root@localhost~]# useradd -g IT zhangsan
[root@localhost~]# useradd -g IT lisi
設置lisi的密碼:
[root@localhost~]# passwd lisi
顯示結果:
Changingpassword for user lisi.
Newpassword:
在此輸入密碼:123456,回車:
BADPASSWORD: it is too short
BADPASSWORD: is too simple
Retypenew password:
再次輸入密碼:123456,回車:
passwd:all authentication tokens updated successfully.
設置zhangsan的密碼:
[root@localhost~]# passwd zhangsan
顯示結果:
Changingpassword for user zhangsan.
Newpassword:
在此輸入密碼:123456,回車:
BADPASSWORD: it is too short
BADPASSWORD: is too simple
Retypenew password:
再次輸入密碼:123456,回車:
passwd:all authentication tokens updated successfully.
B、在根目錄下建立/IT 文件夾:
[root@localhost~]# cd /
[root@localhost/]# mkdir IT
[root@localhost/]# cd IT
[root@sambaIT]# touch IT.txt
[root@sambaIT]# ls -ls
total 0
0-rw-r--r-- 1 root root 0 Mar 13 18:17 IT.txt
C、將建立的兩個帳戶(lisi、zhangsan)添加到samba的賬戶中:
[root@localhost~]# smbpasswd -a zhangsan
New SMBpassword:
Retypenew SMB password:
Addeduser zhangsan.
[root@localhost~]# smbpasswd -a lisi
New SMBpassword:
Retypenew SMB password:
Addeduser lisi.
D、修改主配置文件如下:
[root@localhost ~]# vi /etc/samba/smb.conf
修改security:
security= user //共享級別,用戶不需要賬號和密碼即可訪問
添加信息:
[IT]
comment = IT
path = /IT
valid users = @IT
E、重新啟動服務:
[root@localhost~]# service smb restart
關閉 SMB 服務:[確定]
啟動 SMB 服務:[確定]
[root@localhost~]# service nmb restart
關閉 NMB 服務:[確定]
啟動 NMB 服務:[確定]
F、在window 7下測試:
打開我的電腦,在地址欄中輸入\\*.*.*.*服務器地址,彈出用戶登陸框:
輸入用戶名:lisi,密碼:123456,登陸成功後,可以看到相應的目錄,包括lisi自己的目錄、匿名公共目錄、lisi與zhangsan共享的非匿名目錄。如下圖所示:
3、共享目錄下的不同目錄進行分組。
需求:
3.1.在系統分區時單獨分一個Company的區,在該區下有以下幾個文件夾:HR、 FM和Share。在Share下又有以下幾個文件夾:HR、FM和Tools。
3.2.各部門對應的文件夾由各部門自己管理,Tools文件夾由管理員維護。
3.3. HR管理員賬號:hradmin;普通用戶賬號:hruser。FM管理員賬號:fmadmin;普通用戶賬號:fmuser。
A、新建用戶,並設置SMB賬戶密碼:
添加用戶:
[root@samba ~]# useradd -s /sbin/nologinhradmin
[root@samba ~]# useradd -g hradmin -s/sbin/nologin hruser
[root@samba ~]# useradd -s /sbin/nologinfmadmin
[root@samba ~]# useradd -g hradmin -s /sbin/nologinfmuser
[root@samba ~]# useradd -s /sbin/nologin admin
設置密碼:
[root@samba~]# smbpasswd -a hradmin
New SMBpassword:
Retypenew SMB password:
Addeduser hradmin.
[root@samba~]# smbpasswd -a hruser
New SMBpassword:
Retypenew SMB password:
Addeduser hruser.
[root@samba~]# smbpasswd -a fmadmin
New SMBpassword:
Retypenew SMB password:
Addeduser fmadmin.
[root@samba~]# smbpasswd -a fmuser
New SMBpassword:
Retypenew SMB password:
Addeduser fmuser.
[root@samba~]# smbpasswd -a admin
New SMBpassword:
Retypenew SMB password:
Addeduser admin.
為了方便記憶,在配置的時候,統一設置為:123456。
B、新建目錄:
[root@samba~]# cd /
[root@samba/]# mkdir company
[root@samba/]# cd company
[root@sambacompany]# mkdir HR FM Share
[root@sambacompany]# cd Share
[root@sambaShare]# mkdir HR FM Tools
C、更改目錄屬性:
[root@sambacompany]# chown hradmin.hradmin HR
[root@sambacompany]# chown fmadmin.fmadmin FM
[root@sambacompany]# chown admin.admin Share
[root@sambacompany]# cd Share
[root@sambaShare]# chown hradmin.hradmin HR
[root@sambaShare]# chown fmadmin.fmadmin FM
[root@sambaShare]# chown admin.admin Tools
[root@sambaShare]# chmod 1775 HR FM
D、修改主配置文件如下:
security = user
passdbbackend = tdbsam
[HR]
comment = This is a directory of HR.
path = /company/HR/
public = no
adminusers = hradmin
validusers = @hradmin
writable = yes
createmask = 0750
directorymask = 0750
[FM]
comment = This is a directory of FM.
path = /company/FM/
public = no
adminusers = fmadmin
validusers = @fmadmin
writable = yes
createmask = 0750
directorymask = 0750
[share]
comment = This is a share directory.
path = /company/share/
public = no
validusers = admin,@hradmin,@fmadmin
writable = yes
createmask = 0755
directorymask = 0755
E、重新啟動samba服務:
[root@localhost~]# service smb restart
關閉 SMB 服務:[確定]
啟動 SMB 服務:[確定]
[root@localhost~]# service nmb restart
關閉 NMB 服務:[確定]
啟動 NMB 服務:[確定]
F、在window 7下測試:
打開我的電腦,在地址欄中輸入\\*.*.*.*服務器地址,彈出用戶登陸框:
在圖中輸入用戶名:hradmin,密碼:123456,可以看到相應的共享目錄,如下圖所示:
Windows下可以通過cmd命令net use查看連接信息:
通過net use * /delete 刪除連接信息
測試完畢。
本文出自 “諾克” 博客,請務必保留此出處http://9840752.blog.51cto.com/9830752/1981102
CentOS下SAMBA的搭建