① linux 操作 Samba伺服器設置
在Linux平台,以二進製程序包和源代碼兩種方式安裝samba伺服器,並整理相關配置文件,並給出基本應用操作。
步驟:
1.機器上已經存在的samba服務,版本為3.0.21b,這是通過使用rpm命令得到的。如下:
# rpm –qa | grep samba
Samba-client-3.0.21b-2
Samba-common-3.0.21b-2
2.將上面的samba-client-3.0.21b-2卸載。使用命令:rpm –e samba-client-3.0.21b-2。
3.用rpm –e samba-common-3.0.21b-2來卸載common,因為依賴關系,不成功。
4.下載二進製程序包:
samba-common-3.0.23c-4.i386.rpm,
samba-client-3.0.23c-4.i386.rpm,
samba-doc-3.0.23c-4.i386.rpm,
samba -3.0.23c-4.i386.rpm。
5.安裝這些程序包。分別使用命令:
rpm –Uvh samba-common-3.0.23c-4.i386.rpm
rpm –ivh samba-client-3.0.23c-4.i386.rpm
rpm –ivh samba-3.0.23c-4.i386.rpm
rpm –ivh samba-doc-3.0.23c-4.i386.rpm
使用選項Uvh來安裝common是因為原來的common沒有被卸載,因此應進行升級安裝(U)。
6.安裝完畢後,可以使用rpm –qa samba來確認。會輸出samba-3.0.24c-4。
7.下面開始對samba服務進行配置。
8.首先,修改/etc/samba/lmhosts文件。加入一行,為本機上的Windows系統IP地址和主機名。這樣才可以通過Windows來訪問Unix的samba服務。
9.創建目錄/export/sambadir作為共享目錄。
命令:mkdir –p /export/sambadir
chmod 777 /export/sambadir
10.修改/etc/samba/smb.conf文件。這是samba的配置文件。
Security = user
Log file = /var/log/samba/log.%m
Path = /export/sambadir
11.使用testparam來測試修改結果。
12.加入一個用戶,並修改其密碼。
13.使用chkconfig命令來設置在啟動級別5中啟動samba。命令如下:
Chkconfig –list | grep smb
Chkconfig –level 5 smb on
Chkconfig –list | grep smb
14.重新啟動網路服務:
/etc/rc.d/init.d/cups stop
/etc/rc.d/init.d/smb restart
15.然後就可以在Windows系統中通過12步中設定的用戶名和密碼來訪問Linux。
16.使用源代碼的安裝方式:下載samba-3.0.23c.tar.gz源代碼包,解壓。
Cd samba-3.0.23c/source
./autogen.sh
./configure –prefix=/usr –localstatedir=/var –with-configdir=/etc/samba –with-privatedir=/etc/samba –with-fhs –with-quotas –with-smbmount –enable-cups –with-pam_smbpass –with-syslog –with-utmp –with-swatdir=/usr/share/swat –with-shared-moles=idmap_rid –with-libsmbclient
Make
Make install
17.其餘步驟與7之後相同。
這是我實驗時寫的,平台是redhat 9
② linux中samba配置文件怎麼配置
Samba配置文件常用參數詳解
Samba的主配置文件叫smb.conf,默認在/etc/samba/目錄下。
smb.conf含有多個段,每個段由段名開始,直到下個段名。每個段名放在方括弧中間。每段的參數的格式是:名稱=指。配置文件中一行一個段名和參數,段名和參數名不分大小寫。
除了[global]段外,所有的段都可以看作是一個共享資源。段名是該共享資源的名字,段里的參數是該共享資源的屬性。
Samba安裝好後,使用testparm命令可以測試smb.conf配置是否正確。使用testparm –v命令可以詳細的列出smb.conf支持的配置參數。
全局參數:
==================Global Settings ===================
[global]
config file = /usr/local/samba/lib/smb.conf.%m
說明:config file可以讓你使用另一個配置文件來覆蓋預設的配置文件。如果文件 不存在,則該項無效。這個參數很有用,可以使得samba配置更靈活,可以讓一台samba伺服器模擬多台不同配置的伺服器。比如,你想讓PC1(主機名)這台電腦在訪問Samba Server時使用它自己的配置文件,那麼先在/etc/samba/host/下為PC1配置一個名為smb.conf.pc1的文件,然後在smb.conf中加入:config file = /etc/samba/host/smb.conf.%m。這樣當PC1請求連接Samba Server時,smb.conf.%m就被替換成smb.conf.pc1。這樣,對於PC1來說,它所使用的Samba服務就是由smb.conf.pc1定義的,而其他機器訪問Samba Server則還是應用smb.conf。
workgroup = WORKGROUP
說明:設定 Samba Server 所要加入的工作組或者域。
server string = Samba Server Version %v
說明:設定 Samba Server 的注釋,可以是任何字元串,也可以不填。宏%v表示顯示Samba的版本號。
netbios name = smbserver
說明:設置Samba Server的NetBIOS名稱。如果不填,則默認會使用該伺服器的DNS名稱的第一部分。netbios name和workgroup名字不要設置成一樣了。
interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24
說明:設置Samba Server監聽哪些網卡,可以寫網卡名,也可以寫該網卡的IP地址。
hosts allow = 127. 192.168.1. 192.168.10.1
說明:表示允許連接到Samba Server的客戶端,多個參數以空格隔開。可以用一個IP表示,也可以用一個網段表示。hosts deny 與hosts allow 剛好相反。
例如:hosts allow=172.17.2.EXCEPT172.17.2.50
表示容許來自172.17.2.*.*的主機連接,但排除172.17.2.50
hosts allow=172.17.2.0/255.255.0.0
表示容許來自172.17.2.0/255.255.0.0子網中的所有主機連接
hosts allow=M1,M2
表示容許來自M1和M2兩台計算機連接
hosts allow=@xq
表示容許來自XQ網域的所有計算機連接
max connections = 0
說明:max connections用來指定連接Samba Server的最大連接數目。如果超出連接數目,則新的連接請求將被拒絕。0表示不限制。
deadtime = 0
說明:deadtime用來設置斷掉一個沒有打開任何文件的連接的時間。單位是分鍾,0代表Samba Server不自動切斷任何連接。
time server = yes/no
說明:time server用來設置讓nmdb成為windows客戶端的時間伺服器。
log file = /var/log/samba/log.%m
說明:設置Samba Server日誌文件的存儲位置以及日誌文件名稱。在文件名後加個宏%m(主機名),表示對每台訪問Samba Server的機器都單獨記錄一個日誌文件。如果pc1、pc2訪問過Samba Server,就會在/var/log/samba目錄下留下log.pc1和log.pc2兩個日誌文件。
max log size = 50
說明:設置Samba Server日誌文件的最大容量,單位為kB,0代表不限制。
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)來完成認證。
passdb backend = tdbsam
說明:passdb backend就是用戶後台的意思。目前有三種後台:smbpasswd、tdbsam和ldapsam。sam應該是security account manager(安全賬戶管理)的簡寫。
1.smbpasswd:該方式是使用smb自己的工具smbpasswd來給系統用戶(真實
用戶或者虛擬用戶)設置一個Samba密碼,客戶端就用這個密碼來訪問Samba的資源。smbpasswd文件默認在/etc/samba目錄下,不過有時候要手工建立該文件。
2.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用戶的賬號。
3.ldapsam:該方式則是基於LDAP的賬戶管理方式來驗證用戶。首先要建立LDAP服務,然後設置「passdb backend = ldapsam:ldap://LDAP Server」
encrypt passwords = yes/no
說明:是否將認證密碼加密。因為現在windows操作系統都是使用加密密碼,所以一般要開啟此項。不過配置文件默認已開啟。
smb passwd file = /etc/samba/smbpasswd
說明:用來定義samba用戶的密碼文件。smbpasswd文件如果沒有那就要手工新建。
username map = /etc/samba/smbusers
說明:用來定義用戶名映射,比如可以將root換成administrator、admin等。不過要事先在smbusers文件中定義好。比如:root = administrator admin,這樣就可以用administrator或admin這兩個用戶來代替root登陸Samba Server,更貼近windows用戶的習慣。
guest account = nobody
說明:用來設置guest用戶名。
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
說明:用來設置伺服器和客戶端之間會話的Socket選項,可以優化傳輸速度。
domain master = yes/no
說明:設置Samba伺服器是否要成為網域主瀏覽器,網域主瀏覽器可以管理跨子網域的瀏覽服務。
local master = yes/no
說明:local master用來指定Samba Server是否試圖成為本地網域主瀏覽器。如果設為no,則永遠不會成為本地網域主瀏覽器。但是即使設置為yes,也不等於該Samba Server就能成為主瀏覽器,還需要參加選舉。
preferred master = yes/no
說明:設置Samba Server一開機就強迫進行主瀏覽器選舉,可以提高Samba Server成為本地網域主瀏覽器的機會。如果該參數指定為yes時,最好把domain master也指定為yes。使用該參數時要注意:如果在本Samba Server所在的子網有其他的機器(不論是windows NT還是其他Samba Server)也指定為首要主瀏覽器時,那麼這些機器將會因為爭奪主瀏覽器而在網路上大發廣播,影響網路性能。
如果同一個區域內有多台Samba Server,將上面三個參數設定在一台即可。
os level = 200
說明:設置samba伺服器的os level。該參數決定Samba Server是否有機會成為本地網域的主瀏覽器。os level從0到255,winNT的os level是32,win95/98的os level是1。Windows 2000的os level是64。如果設置為0,則意味著Samba Server將失去瀏覽選擇。如果想讓Samba Server成為PDC,那麼將它的os level值設大些。
domain logons = yes/no
說明:設置Samba Server是否要做為本地域控制器。主域控制器和備份域控制器都需要開啟此項。
logon . = %u.bat
說明:當使用者用windows客戶端登陸,那麼Samba將提供一個登陸檔。如果設置成%u.bat,那麼就要為每個用戶提供一個登陸檔。如果人比較多,那就比較麻煩。可以設置成一個具體的文件名,比如start.bat,那麼用戶登陸後都會去執行start.bat,而不用為每個用戶設定一個登陸檔了。這個文件要放置在[netlogon]的path設置的目錄路徑下。
wins support = yes/no
說明:設置samba伺服器是否提供wins服務。
wins server = wins伺服器IP地址
說明:設置Samba Server是否使用別的wins伺服器提供wins服務。
wins proxy = yes/no
說明:設置Samba Server是否開啟wins代理服務。
dns proxy = yes/no
說明:設置Samba Server是否開啟dns代理服務。
load printers = yes/no
說明:設置是否在啟動Samba時就共享列印機。
printcap name = cups
說明:設置共享列印機的配置文件。
printing = cups
說明:設置Samba共享列印機的類型。現在支持的列印系統有:bsd, sysv, plp, lprng, aix, hpux, qnx
共享參數:
================== Share Definitions ==================
[共享名]
comment = 任意字元串
說明:comment是對該共享的描述,可以是任意字元串。
path = 共享目錄路徑
說明:path用來指定共享目錄的路徑。可以用%u、%m這樣的宏來代替路徑里的unix用戶和客戶機的Netbios名,用宏表示主要用於[homes]共享域。例如:如果我們不打算用home段做為客戶的共享,而是在/home/share/下為每個Linux用戶以他的用戶名建個目錄,作為他的共享目錄,這樣path就可以寫成:path = /home/share/%u; 。用戶在連接到這共享時具體的路徑會被他的用戶名代替,要注意這個用戶名路徑一定要存在,否則,客戶機在訪問時會找不到網路路徑。同樣,如果我們不是以用戶來劃分目錄,而是以客戶機來劃分目錄,為網路上每台可以訪問samba的機器都各自建個以它的netbios名的路徑,作為不同機器的共享資源,就可以這樣寫:path = /home/share/%m 。
browseable = yes/no
說明:browseable用來指定該共享是否可以瀏覽。
writable = yes/no
說明:writable用來指定該共享路徑是否可寫。
available = yes/no
說明:available用來指定該共享資源是否可用。
admin users = 該共享的管理者
說明:admin users用來指定該共享的管理員(對該共享具有完全控制許可權)。在samba 3.0中,如果用戶驗證方式設置成「security=share」時,此項無效。
例如:admin users =bobyuan,jane(多個用戶中間用逗號隔開)。
valid users = 允許訪問該共享的用戶
說明:valid users用來指定允許訪問該共享資源的用戶。
例如:valid users = bobyuan,@bob,@tech(多個用戶或者組中間用逗號隔開,如果要加入一個組就用「@+組名」表示。)
invalid users = 禁止訪問該共享的用戶
說明:invalid users用來指定不允許訪問該共享資源的用戶。
例如:invalid users = root,@bob(多個用戶或者組中間用逗號隔開。)
write list = 允許寫入該共享的用戶
說明:write list用來指定可以在該共享下寫入文件的用戶。
例如:write list = bobyuan,@bob
public = yes/no
說明:public用來指定該共享是否允許guest賬戶訪問。
guest ok = yes/no
說明:意義同「public」。
幾個特殊共享:
[homes]
comment = Home Directories
browseable = no
writable = yes
valid users = %S
; valid users = MYDOMAIN\%S
[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no
writable = no
printable = yes
[netlogon]
comment = Network Logon Service
path = /var/lib/samba/netlogon
guest ok = yes
writable = no
share modes = no
[Profiles]
path = /var/lib/samba/profiles
browseable = no
guest ok = yes
③ linux samba伺服器的配置過程,建立用戶用戶組,共享目錄
groupadd salers
groupadd managers
建立用戶 useradd -G salers -N mary
再把mary加入經理組 usermod -a -G mary managers
建立 salers 文件夾 mkdir -p /share/sale_data
改變用戶 chown mary /share/sale_data
改變組 chgrp salers /share/sale_data
改變許可權 chmod 2755 /share/sale_data
增加samba 用戶 smbpasswd -a mary
chkconfig --level 35 smb on
# smb.conf
[sale]
comment = SalesDirectories
path = /share/sale_data
public = yes
read=@sale
write list = mary
#改變許可權 chmod 555 /share/public_data
[public]
comment = Public Directories
path = /share/public_data
public = yes
④ Linux,samba怎麼設置的
#mkdir /public
為了確保拷文件沒問題,修改目錄許可權:
#chmod 777 /public
修改linux虛擬機中的/etc/samba/smb.conf文件,
#vi /etc/samba/smb.conf
新增如下內容:
[public]
path = /public
read only = no
public = yes
修改安全級別,如果對samba用戶知道很少,那麼直接配置成共享級別,修改security後面的內容為share:
security = share
保存退出。
啟動samba服務:
#service smb restart
檢查虛擬機ip地址:
#ifconfig
看到ip地址後,在windows下,點擊「開始」->「運行」->輸入「\\192.168.100.100」,再點擊確定,就能訪問虛擬機共享的public目錄往裡寫文件了了。(上面的192.168.100.100為虛擬機的IP地址)
如果對samba用戶了解的多一些,則為了更安全起見,將安全級別配置成user級別,比上述步驟多出來的步驟就是添加samba用戶。
#useradd testuser
#passwd testuser
首先添加系統用戶,然後配置samba用戶,或者可以直接使用系統已經存在的用戶配置成samba用戶:
#smbpasswd -a testuser
將上述步驟中的security修改為user:
security = user
重啟samba服務:
#service smb restart
用同樣的方式在windows里訪問虛擬機共享目錄時,需要輸入testuser用戶名和用smbpasswd命令設置的密碼,並且對目錄的訪問許可權與testuser用戶在系統里的許可權一致。
⑤ linux中samba配置文件怎麼配置
第一部分:基礎知識
windows的網上鄰居是windows主機間彼此共享文件的一種方式,它所用到的協議有兩個:smb和cifs協議當
然還包括windows的netbios協議
SMB:service message block
cifs:common internet filesystem
NETBIOS:實現windows間主機名解析的服務(監聽udp的137,138和tcp的139埠)
linux之間文件共享通常使用的是nfs協議,所以在以前windows主機和linux主機之間實現文件共享是不可
能的,後來一個澳大利亞的一個計算機高手通過軟體(自己開發的samba)的形式,在linux主機上講nfs模
擬出了smb/cifs 和 netbios協議,這樣在兩者之間實現共享的時候linux主機就可以模仿成一台windows
主機和windows主機間實現文件共享
在linux主機上安裝完samba後有兩個主要進程:nmbd 和 smbd
nmbd就是為了提供netbios名稱解析,監聽udp的137,138和tcp的139埠
smbd就是為了實現文件共享,監聽tcp的445埠
第二部分:安裝samba
yum list all samba* #查看相關的包
samba-client.i386
samba-common.i386
samba.i386
samba-swat.i386
1),yum install samba
2),cd /etc/samba
vim smb.conf global(全局配置),
home(用於配置用戶是否可以通過samba訪問自己家目錄)
printer(用於定義列印機)
custom(定義每個用戶自己的共享)
global選項中有以下內容比較重要:
workgroup = MYGROP #定義組
server string = Samba Server Version %v #就是一些說明信息
security = user #定義安全級別
share : 任何人都可以共享文件
user : 必須提供賬號密碼才能使用
domain: 把用戶的賬號密碼通過第三方來認證
passdb backend = tdbsam #以哪種方式存放密碼(賬號都是系統賬號
,但是密碼卻不是系統中賬號的密碼,而且密碼不是放在/etc/passwd下
)
load prienters = yes #是否啟用列印機
cups options = raw #定義列印機的執行方式
grep -v "^[[:space:]]*#" smb.conf | grep -v "^$" | grep -v "^:" #小技巧,只顯示對我們有用的配置選項
共享文件的格式如下:
[tools]
comment = my tools
path = /share
browseable = yes/no
guest ok = yes/no
writable = yes/no (這里是否可寫還要取決目錄是否具有可寫許可權)
3),testparm #使用testparm檢查是否有語法錯誤
4), service smb start
5),netstat -nutl
6),useradd gentoo
7), smbpasswd -a gentoo #把它加入到samba裡面來,給gentoo 用戶一個密碼(不是系統賬戶的
密碼)
8),通過windows的網上鄰居來驗證
setfacl -m u:gentoo:rwx /share #僅僅增加gentoo 用戶對/share目錄有rwx許可權
..............................................................................................
如何在linux上查看對方共享的資源:
smbclient :一個專門用於訪問共享資源的客戶端工具
smbclient -L IP/HOST -U username
smbclient //HOST/share -U
smb>
smb>
登錄之後就可以像使用ftp一樣上傳和下載文件
通過組的方法讓幾個用戶同時對一個目錄具有寫許可權:
groupadd mygrp
useradd -a -G mygrp gentoo
useradd -a -G mygrp centos
vim /etc/samba/smb.conf [tools]欄內加入:
write list = +gentoo #當加入組的時候「+」必須有
service smb restart
............................................................................................
如何設定才能使只允許某個網段的用戶共享自己的資源:
/etc/samba/smb.conf 中 : hosts allow = 127. 192.168.12. 172.16. -->
表明只允許某個網段來訪問
我們也可以通過掛載的方式來訪問共享的資源,掛載命令如下:
mount -t cifs //172.16.100.1/tools /mnt -o username=gentoo
#