- 論壇徽章:
- 0
|
Samba
實現(xiàn)的功能:
1. 用Samba實現(xiàn)主域控制器(PDC)。并且客戶端在登錄到域后,可以修改密碼,可以在共享文件的安全屬性中可以添加組和用戶;(已測試)
2. 用一個Samba服務(wù)器虛擬多個Samba服務(wù)器;每個Samba分別以不同的安全級別(Security)運行;(已測試)
3. 客戶端可以使用Windows AD中的帳號登錄Samba服務(wù)器;
4. 實現(xiàn)對Samba用戶進行磁盤配額。(已測試)
附錄:
1:samba中定義的一些宏變量;
2:如何解決Windows訪問Samba服務(wù)器時文件夾及文件名亂碼問題;
3:一個完整的用Samba實現(xiàn)PDC的smb.conf配置文件樣本;
4:參考文章列表。
一:用Samba實現(xiàn)主域控制器(PDC)
Step 1 :修改 smb.conf 文件;
配置Samba,將其設(shè)置為以PDC模式工作:
[global]
# 指定工作組或域的名稱,需要和系統(tǒng)的hostname一致
workgroup = smbdomain
# 設(shè)置Samba服務(wù)器的netbios名稱
netbios name = sambapdc
# 對該Samba服務(wù)器的一些描述
server string = Samba Server
# 設(shè)置客戶端與服務(wù)器端進行通信時采用加密密碼
encrypt passwords = yes
# 指定Samba密碼文件的位置
smb passwd file = /etc/samba/smbpasswd
# 允許哪些客戶端訪問
# 0.0.0.0表示無限制;192.168.0. 表示允許整個網(wǎng)段訪問
;hosts allow = 0.0.0.0
# 信任來自哪個網(wǎng)卡的連接
;interfaces = eth0
# 指定日志文件的位置,也可以使用Samba的宏來定義日志文件。比如:
# log.%U,為每個訪問的用戶都創(chuàng)建一個日志。
log file = /var/log/samba/smbd.log
# 指定日志文件的大小,以K字節(jié)為單位
max log size = 50
# 設(shè)置套接字選項,在與客戶端對話時使用這個選項
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
# 以下選項設(shè)置PDC
# PDC 必須工作在user安全級別
security = user
# 設(shè)置Samba為本地主瀏覽器
local master = yes
# 設(shè)置為65,nmbd將打敗任何NT服務(wù)器而在本地廣播范圍內(nèi)成為工作組的
# 本地主瀏覽器
os level = 64
# 設(shè)置為域主瀏覽器
domain master = yes
# 設(shè)置為首選主瀏覽器
preferred master = yes
# 允許客戶端登錄到域
domain logons = yes
# 客戶端登錄到域后執(zhí)行的腳本
# 將logon path設(shè)置成%U.bat(%U指登錄的用戶名),這樣可以針對每個用戶
# 做更具體的設(shè)置
logon script = logon.bat
# 設(shè)置Windows客戶端登錄到域后的主目錄位置
logon home = \\%L\%U\.profile
# 設(shè)置Windows客戶端登錄域后漫游文件(Roaming profiles)存放的目錄
logon path = \\%L\profiles\%U
# 設(shè)置Windows客戶端登錄到域后,主目錄將要被連接到哪個本地驅(qū)動器;
# 這里指定的是H:。
logon drive = H:
# 指定Samba的管理員。用戶名之間以空格隔開
admin users = root bibby
Step 2:為domain logon選項添加netlogon字段,為logon path添加profiles字段。并分別將他們設(shè)置正確的權(quán)限。
[netlogon]
path = /home/sambapdc/netlogon
writeable = no
browseable = no
guest ok = no
[profiles]
path = /home/sambapdc/profiles
writeable = yes
browseable = yes
guest ok = no
為這兩個文件夾設(shè)置正確的權(quán)限:
Shell > chmod –R 755 /home/sambapdc/netlogon
Shell > chmod –R 777 /home/sambapdc/profiles
最后還需要為logon script添加logon.bat文件。該文件放在netlogon字段指定的目錄下(本例為/home/sambapdc/netlogon/logon.bat):
net use H: \\%L\%U
logon.bat文件必須是Dos格式的,所以還需要用unix2dos這個工具來轉(zhuǎn)換一下格式:
shell > unix2dos logon.bat
這樣Samba服務(wù)器端的設(shè)置就完成了。
Step 3 :為PDC添加管理員;
“root”是Samba缺省的管理員。
shell > smbpasswd –a root
> New SMB password: PASSWORD
> Retype new SMB password: PASSWORD
或者直接:
shell > smbpasswd –a root PASSWORD
還可以在smb.conf的”admin users =”中加上某個用戶的名字,使其成為管理員。比如:
[global]
admin users = root ntclient
這樣就把登錄名為ntclient的客戶機器也設(shè)置為管理員了。
Step 4:為PDC添加客戶端;
為了便于管理,可以先添加一個用戶組:
shell > groupadd smbtest
然后為把客戶端的機器添加到這個組中(在Novell Suse Enterprisee 9中的操作),做為可信任用戶:
1)
# 先將Windows客戶端的netbios名稱添加到Unix系統(tǒng)中
# 用戶名(ntclient$)加$符號表示這是一個客戶端機器的netbios名稱,而不是
# 實際Unix系統(tǒng)上的用戶
shell > useradd –g smbtest –s /sbin/nologin ntclient$
注意:在RedHat系統(tǒng)中無法添加ntclient$(帶$符號的用戶)用戶,所以你需要先添加一個ntclient用戶,然后用vipw工具編輯/etc/passwd,將它修改成ntclient$用戶。
2)
# 為這個客戶端的機器在Unix系統(tǒng)中添加一個對應(yīng)的管理用戶
# 為了方便管理,使用和客戶端netbios名稱相同的用戶名
shell > useradd –g smbtest –s /sbin/nologin ntclient
3)
# 把客戶端機器加入到Samba中
# 這里的ntclient是客戶端機器的netbios名稱,添加的時候不加$符號
# smbpasswd命令的 –m 參數(shù)表示添加的是一個可信任的客戶端機器
shell > smbpasswd –a –m ntclient
4)
# 為客戶端機器在Samba中添加一個管理員
# 這里的ntclient是第2)步中添加的用戶名,添加時需要輸入密碼
# 這個用戶名和密碼就是客戶端登陸時所使用的帳號
shell > smbpasswd –a ntclient
OK,重新啟動samba服務(wù)。
注:在RedHat中無法直接添加帶”$”符號的用戶。一種可行的方法是:
1:先添加一個普通用戶ntclient(useradd);
2:使用vipw –p修改/etc/passwd,將ntclient改成ntclient$;
3:同第一步一樣,添加一個普通用戶ntclient。
這樣就可以了。
Step 5:從Windows客戶端登錄域;
將系統(tǒng)注銷,然后在登錄框中選擇要登錄的域,輸入已經(jīng)在Samba服務(wù)器中添加的用戶名和密碼,OK,登錄了。
Step 6:客戶端如何修改登錄密碼:
登錄域后,按Ctrl+Alt+Delete鍵,然后在“更改密碼”中,選定域,再輸入登錄域的用戶名和舊密碼新密碼。
OK,密碼修改成功。
Step 7:將Unix系統(tǒng)上的用戶和組映射到Windows域用戶組中,使用戶在登錄域后可以為共享的文件夾添加管理用戶;
要實現(xiàn)此功能,Samba必須被配置為PDC,并且需要在 smb.conf 文件中添加以下選項:
[global]
nt acl support = yes
1):創(chuàng)建NT已有用戶組到Unix系統(tǒng)用戶組的映射;
常見的NT域的用戶組有:
Power Users
Domain Admins
Print Operators
Domain Guests
Administrators
Account Operators
Backup Operators
Users
Domain Users
下面將創(chuàng)建NT域中”Domain Admins”組到Unix系統(tǒng)中winadmin的映射:
1:創(chuàng)建用戶組winadmin(也可以使用 yast à security à create user來創(chuàng)建)
shell > groupadd winadmin
2:在該用戶組里添加域管理員用戶,比如root,adminitrator之類的。
可以使用yast,也可以直接直接編輯/etc/group文件。
3:創(chuàng)建”Domain Admins”到winadmin的映射:
shell > net groupmap set “Domain Admins” winadmin
4:使用 net groupmap list 來查看是否映射成功。
5:重新啟動smbd和nmbd。
2):創(chuàng)建自定義用戶組smbtest到本地用戶組smbtest的映射(組的名稱必須相同才能做映射);
:在Unix系統(tǒng)下創(chuàng)建一個用戶組smbtest;
Shell > groupadd smbtest
2:將一些用戶添加到smbtest組中。
可以用yast,也可以直接編輯/etc/group文件。
3:創(chuàng)建映射:
Net groupmap set smbtest smbtest
4:使用 net groupmap list 來查看是否映射成功。
5:重新啟動smbd和nmbd。
在客戶端登錄到域后,在文件夾的屬性頁上選擇“安全”標(biāo)簽,點擊“添加”,就可以看到已經(jīng)做好映射的組了。
二:用一個Samba服務(wù)器虛擬多個Samba服務(wù)器;
要用Samba服務(wù)器虛擬出多個Samba服務(wù)器是件很簡單的事,只需要在[global]中加入以下幾個選項:
[global]
netbios name = sambaserver1
# 虛擬另一個Samba服務(wù)器,netbios名為sambaserver2
netbios aliases = sambaserver2
# include選項指定虛擬的Samba服務(wù)器使用的配置文件
# %L宏,代表netbios name。smb.conf.%L就表示sambaserver1將使用
# smb.conf.sambaserver1這個配置文件。
include = /etc/samba/smb.conf.%L
然后讓sambaserver1和sambaserver2共享一部分的smb.conf文件,再配置分別配置好smb.conf.%L文件就可以了。
以下是一個簡單的例子,用一臺Samba服務(wù)器,虛擬出兩個Samba服務(wù)器,netbios name 分別為a和b。
其中a被配置為PDC(關(guān)于如何將Samba配置為PDC,請參考第一部分),b被配置為文件服務(wù)器,提供一些共享文件。
============ File : /etc/samba/smb.conf ================
[global]
workgroup = sambatest
server string = samba server %L
# “a”為系統(tǒng)的hostname
netbios name = a
netbios aliases = b
encrypt password = yes
include = /etc/samba/smb.conf.%L
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_SNDBUF=8192 SO_RCVBUF=8192
password level = 8
username level = 8
log file = /var/log/samba/log.%L%M
max log size = 50
============ File : /etc/samba/smb.conf.a ===========
security = user
os level = 64
domain master = yes
local master = yes
domain logons = yes
logon script = logon.bat
preferred master = yes
[netlogon]
comment = "netlogon dir"
path = /home/samba/netlogon
writeable = no
browseable = yes
public = no
[profiles]
path = /home/samba/profiles
writeable = yes
browseable = yes
guest ok = no
============= File : /etc/samba/smb.conf.b ===============
security = share
[share]
path = /tmp
browseable = yes
writeable = no
guest ok = yes
按
照如何將Samba配置為一個PDC的方法,添加和設(shè)置好相關(guān)文件和目錄,然后就可以重新啟動smbd和nmbd了。這時候就可以在Windows的“網(wǎng)
上鄰居”中看到配置好的Samba服務(wù)器了(或者直接在瀏覽器的地址欄中輸入file://a/或者file://b/來測試,能訪問即表示配置成功)。
三:配置Samba,使客戶端可以使用Windows AD中的帳號登錄Samba服務(wù)器;
這時候Samba必須運行在security=server或domain級別上。并且添加以下幾個選項:
[global]
security = server
# 指定Windows AD服務(wù)器,從它上面獲取帳號信息,供客戶端登錄
# 可以是IP地址,也可以是netbios名稱
# 多個AD服務(wù)器以空格分開
password server = 192.168.0.1 192.168.0.2
# 指定username map的映射文件
username map = /etc/samba/user.map
/etc/samba/user.map文件的格式為:
root=admin administrator
bibby=@administrators
第1行:符號“=” 左邊是單獨的Unix系統(tǒng)賬號,右邊是要映射的Windows AD系統(tǒng)上的賬號列表。服務(wù)器逐行分析映射文件,如果提供的賬號和某行有右側(cè)列表中的賬號匹配,就把它替換為等號左邊的賬號。
第2行:符號“=” 左邊是單獨的Unix系統(tǒng)賬號,右邊是要映射的Windows AD系統(tǒng)上的用戶組。如果提供的帳號和用戶組administrators中的一個用戶名匹配,就被映射成用戶bibby。
四:為Samba用戶設(shè)置磁盤限額;幾個概念:
Grace Period : 用戶可被容許超過soft limit 的時間。
假設(shè)Grace Period設(shè)定為3天,超過soft limit的user在三天內(nèi)未處理超過limit的檔案的話,user將無法再使用任何磁盤空間(這會造成該user無法登錄系統(tǒng))。
設(shè)置Grace Period可以使用命令“edquota –t”。
oft Limit : 用戶能使用的硬盤空間的大小。
但如果Grace Period不是設(shè)為0的話,則Soft Limit只是一個警戒線,使用者如果使用的磁盤空間超過這個警戒線,就會開始收到系統(tǒng)所給的警告。
Hard Limit : Hard Limit代表的是用戶對磁盤空間使用的絕對上限。使用者使用的磁
盤空間絕對無法超越此上限。
只有當(dāng)Grace Period不是設(shè)為0時,Hard Limit的設(shè)定才會生效。
inode :每個文件和目錄都需要使用一個inode。所以可以用來限制用戶的文件數(shù)目。
block limits是對磁盤空間使用的限制,以字節(jié)為單位,1024 blocks大概就是1M。
每
個客戶端機器登錄Samba
PDC時都需要一個Samba帳號,而這個帳號也對應(yīng)一個Unix系統(tǒng)帳號,而為了方便管理,這兩個帳號的用戶名通常都和客戶端機器的Netbios
Name一致。所以,當(dāng)客戶端機器登錄到Samba域的時候,就等于是同名的Unix系統(tǒng)用戶登錄上系統(tǒng),而Quota開始起作用了。
1:設(shè)置quota(這里以/home為例);
編輯/etc/fstab文件,在options區(qū)域加上usrquota或者grpquota。也可以同時設(shè)置用戶quota和組quota。加上后的文件看起來就象這樣:
LABEL=/home /home ext3 defaults,usrquota,grpquota 1 2
然后重新啟動系統(tǒng)(也可以不重啟系統(tǒng),而使用mount的remount參數(shù):
Shell > mount –o remount /home
)。
第一次使用quota,需要先運行一次quotacheck命令。該命令會自動創(chuàng)建對用戶和組進行quota時使用的兩個文件:
Shell > quotacheck –avug
然后會在被quota的目錄(這里是/home)下生成兩個文件:
Shell > ls /home/*quota*
/home/aquota.group /home/aquota.user
接下來可以使用quota提供的工具來配置和監(jiān)視quota:
1):edquota;
edquota –u USER # 為用戶“USER” 配置quota
edquota –g GROUP # 為組“GROUP”配置quota
shell > edquota –u ntclient
Disk quotas for user ntclient (uid 509):
Filesystem blocks soft hard inodes soft hard
/dev/sda2 28 1024 2048 7 0 0
這個例子為ntclient用戶設(shè)置了quota:當(dāng)總大小達到1024K(1M)的時候,會向用戶發(fā)出警告,但是還可以繼續(xù)添加文件(因為還未超過Hard Limit設(shè)置的值)。當(dāng)總大小達到2048K(2M)時,系統(tǒng)將提示用,磁盤已滿,無法添加文件。
這里blocks和inodes都不能更改,因為它們表示的是現(xiàn)在已經(jīng)使用的數(shù)目。
第一個soft是指對文件總大小的Soft Limit,第二個soft是對inode的Soft Limit。一個inode對應(yīng)一個文件或者一個文件夾。
這里只配置了對文件總大小的Soft Limit。你可以兩個同時使用,既可以限制文件總大小,也可以限制文件和文件夾的數(shù)目。
edquota的一些常見用法:
# 將為ntclient用戶設(shè)置的quota復(fù)制給用戶bibby和king
# 則他們的quota都是一樣的
shell > edquota –p ntclient bibby king
2):repquota,報告分區(qū)的quota情況;
使用方法:
repquota /quota/path
例如:
Shell > repquota /home
*** Report for user quotas on device /dev/sda2
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 36804 0 0 12 0 0
ntclient -- 28 1024 2048 7 0 0
bibby$ -- 4 0 0 1 0 0
bibby -- 20 1024 2048 5 0 0
#502 -- 24 0 0 6 0 0
#504 -- 4 0 0 1 0 0
#505 -- 20 0 0 5 0 0
#506 -- 4 0 0 1 0 0
#507 -- 20 0 0 5 0 0
這就是repquota的輸出,象你匯報quota的配置情況。
另外還有quotaoff和quotaon命令,都比較簡單,這里就不說了。
3):查看為某個用戶設(shè)置的quota(以用戶ntclient為例):
shell > quota –u ntclient
你將會看到和“edquota –u ntclient”一樣的結(jié)果。
4):查看為某個用戶組設(shè)置的quota(以組ntclient為例):
Shell > quota –g ntclient
看到的結(jié)果和edquota –g ntclient一樣。
2:設(shè)置User Quota(以ntclient用戶為例):
Shell > edquota –u ntclient
Disk quotas for user ntclient (uid 509):
Filesystem blocks soft hard inodes soft hard
/dev/sda2 556 1024 2048 85 0 0
運行以后,將會啟動編輯器(看看你的編輯器設(shè)置的是什么:echo $EDITOR)進行編輯。這里我為ntclient用戶設(shè)置的Block
Soft Limit是1024K(1M),Block Soft Limit是2048K(2M)。而對于inode的soft/hard
limit都沒有設(shè)置。
設(shè)置好后,執(zhí)行命令(本例設(shè)置Quota的FileSystem是/home(/dev/sda2)):
Shell > quotaoff /home
Shell > quotacheck –avug
Shell > quotaon /home
3:測試User Quota:
從一臺客戶端的Windows 2000系統(tǒng)上登錄到Samba域中,復(fù)制一些文件到映射的驅(qū)動器中,當(dāng)超過設(shè)置的Block soft
limit時,系統(tǒng)不會出現(xiàn)提示,仍然可以繼續(xù)添加文件。當(dāng)文件總大小超過Block hard
limit時,就不能再添加文件了,會提示一個類似于“磁盤空間不足”的警告信息。
這表明Quota正常工作。
4:設(shè)置Group Quota(以用戶組ntclient為例,該組中有兩個用戶:ntclient,bibby);
Shell > edquota –g ntclient
Disk quotas for group ntclient (gid 505):
Filesystem blocks soft hard inodes soft hard
/dev/sda2 580 1024 3000 91 0 0
這里為組ntclient設(shè)置的Block Soft Limit為1024K(1M),Block Hard Limit為3000K(接近3M);對inode不進行限制。
5:測試Group Quota:
剛才已經(jīng)為用戶ntclient設(shè)置了2048K的Block Hard Limit,這里再讓另一臺netbios
name為bibby的Windows客戶端登錄Samba域,并在映射的驅(qū)動器中添加文件,看看兩個用戶(ntclient和bibby)的總文件大小
能否超過為組ntclient設(shè)置的Block Hard Limit。
注意:如果在smb.conf中設(shè)置了“admin users = ”選項,并且添加了某個用戶,則這個用戶從客戶端登錄到Samba PDC中時,對文件的操作將是以root權(quán)限進行的,所以也不受quota設(shè)置的磁盤容量限制。
比如,如果在smb.conf中有如下選項:
admin users = root ntclient
則這里所做的Quota測試將出現(xiàn)錯誤(即ntclient用戶不受Quota設(shè)置的磁盤限額的限制)。
2:Windows訪問Samba服務(wù)器時文件夾及文件名亂碼問題:
在 smb.conf 文件中添加以下選項:
[global]
# dos客戶端連接到Samba服務(wù)器時,Samba告訴客戶端顯示的字符集
dos charset = cp936
# Samba服務(wù)器使用的字符集
unix charset = cp936
3:一個完整的用Samba實現(xiàn)PDC的smb.conf配置文件樣本:
[global]
workgroup = samba
netbios name = sambabibby
server string = Samba PDC running %v
unix password sync = yes
passwd program = /usr/bin/passwd %u
nt acl support = yes
security = user
os level = 64
preferred master = yes
local master = yes
domain master = yes
encrypt passwords = yes
domain logons = yes
log file = /var/log/samba/log.%m
log level = 2
max log size = 50
logon home = \\%L\%U\.profile
logon path = \\%L\profiles\%G\%U
logon drive = H:
logon script = logon.bat
admin users = root
[homes]
browseable = no
writeable = yes
[profiles]
path = /home/sambapdc/profiles
writeable = yes
browseable = no
create mask = 0600
directory mask = 0770
[netlogon]
comment = Network Logon Service
path = /home/sambapdc/netlogon
read only = yes
參考文章:
Samba官方文檔:http://us2.samba.org/samba/docs
Quota Tutorial on Linux:
Http://souptonuts.sourceforge.net/quota_tutorial.html
Quota:User硬碟管理:
http://souptonuts.sourceforge.net/quota_tutorial.html
磁碟空間管理(Disk Quota):
http://nmc.nchu.edu.tw/linux/quota.htm
本文來自ChinaUnix博客,如果查看原文請點:http://blog.chinaunix.net/u1/43296/showart_397396.html |
|