第二種是 User Level Security : 使用密碼做身份驗證,任何使用者在存取目錄時會詢問密碼.先在 X-windows 下執行 #system-config-samba 選擇 "Authentication Mode" 為 User.
透過 #system-config-samba 去設定驗證模式,主要都還是去修改 samba 的設定檔 /etc/samba/smb.conf ,我們先來看看使用 User 身份驗證時 samba 的設定檔是如何設定的.
[root@benjr ~]# vi /etc/samba/smb.conf [global] workgroup = MYGROUP netbios name = benjr security = user
1.主要使用密碼做身份驗證 security = user
2.netbios name 是自己加上的,也就是 Windows 的電腦名稱,如果沒有設定 netbios name 時 samba 預設是使用 hostname 為電腦名稱.
不過要注意的是 samba 只管網路連結過來的使用者是否有權限,當然使用者還是要有 Linux 檔案的權限才可以.這概念跟 Windows 網路芳鄰一樣.
當 samba server security 選 user 安全等級時是用本身這台 samba server 做身份驗證.因為需要身分所以第一步就是要先新增使用者.不像之前的版本是將資料儲存在 /etc/samba/smbpasswd,RHEL5 將預設的使用者資料庫放在 passdb.tdb .
[root@benjr ~]# cat /etc/samba/smb.conf # ———————– Standalone Server Options ———————— # # Security can be set to user, share(deprecated) or server(deprecated) # # Backend to store user information in. New installations should # use either tdbsam or ldapsam. smbpasswd is available for backwards # compatibility. tdbsam requires no further configuration. security = user passdb backend = tdbsam
不過當我們在建立使用者帳號密碼時這個使用者必須儲存在 Linux 本機上,這跟當地硬碟權限有關.新增兩位使用者 "Bob" 和 "John"
[root@benjr ~]# adduser bob [root@benjr ~]# adduser john [root@benjr ~]# passwd bob Changing password for user bob. New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully. [root@benjr ~]# passwd john Changing password for user john. New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully.
此時你可以透過 system-config-samba 新增使用者,在開啟 #system-config-samba 後,選擇 Preferences / Samba Users 增加使用者 "Add User"
因為我們只能選擇已經存在的 Linux User 所以在 Unix Username:選擇剛剛新增的 bob 和 john.Windows Username 就設的跟 Unix Username 一樣即可.
或是透過 #pdbedit -au 來新增使用者.
[root@benjr ~]# pdbedit -au bob new password: retype new password: Unix username: bob NT username: Account Flags: [U ] User SID: S-1-5-21-1634407166-380897321-584037179-1001 Primary Group SID: S-1-5-21-1634407166-380897321-584037179-513 Full Name: Home Directory: \\benjr\bob HomeDir Drive: Logon Script: Profile Path: \\benjr\bob\profile Domain: BENJR Account desc: Workstations: Munged dial: Logon time: 0 Logoff time: never Kickoff time: never Password last set: Fri, 17 Apr 2009 03:38:39 CST Password can change: Fri, 17 Apr 2009 03:38:39 CST Password must change: never Last bad password : 0 Bad password count : 0 Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF [root@benjr ~]# pdbedit -au john new password: retype new password: Unix username: john NT username: Account Flags: [U ] User SID: S-1-5-21-1634407166-380897321-584037179-1002 Primary Group SID: S-1-5-21-1634407166-380897321-584037179-513 Full Name: Home Directory: \\benjr\john HomeDir Drive: Logon Script: Profile Path: \\benjr\john\profile Domain: BENJR Account desc: Workstations: Munged dial: Logon time: 0 Logoff time: never Kickoff time: never Password last set: Fri, 17 Apr 2009 03:38:51 CST Password can change: Fri, 17 Apr 2009 03:38:51 CST Password must change: never Last bad password : 0 Bad password count : 0 Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
其中 Account Falgs 所代表的意思.
[U ]: Account Flags
U: 代表為一般的帳號(無法登入 samba PDC )
N: 表示這個帳號不使用密碼
D: 表示這個帳號已經停用
W: 表示你允許這個帳號能登入 samba PDC
#pdbedit 透過參數 -L 可以查詢所有儲存在 samba 的使用者.
[root@benjr ~]# pdbedit -L john:501: bob:500:
note:
不是我愛嫌棄 RedHat 很多圖形介面的東西要做也不做好,像是我在使用 system-config-samba 新增使用者的時候,挖勒!!新增好就看不到了.再新增一次又被告知使用者已經存在(An account for this user already exists. Please try again).
恩!!!!這是怎麼一回事!!不過透過指令方式 #pdbedit -L 使用者真的已經加入,上網查了一下,果然是 system-config-samba 固定使用 /etc/samba/smbpasswd 當作他的使用者資料庫,但是我記得 RHEL5 不是已經將預設的使用者資料庫放在 passdb.tdb ,而且這一錯到 RHEL5.2 以前都沒修正,一直到 RHEL5.3 才修正.不過使用 RHEL5.2 之前版本也不用急著更新找到 system-config-samba-1.2.40 的版本就修正了,更新就可以使用了.
https://bugzilla.redhat.com/show_bug.cgi?id=236557
首先選擇你要想分享的目錄這裡我開啟一個 /share 分享目錄,請自行建立(#mkdir /share).建立好目錄還要開檔案的權限(#chmod -R 777 /share),雖然使用者不需要輸入密碼,但是再做存取檔案時還是會受限於 Linux 的檔案權限的影響.再回到 #system-config-samba
新增 Add Share 剛剛建立好的目錄,目前 samba 有使用者存在所以在 Access 可以選擇 "Only allow access to specific users".在 Basic 中分享名稱 Share name 可以依你的需要做修改,預設是使用目錄名稱.我們先來看看剛剛那些動作 samba 的設定檔 /etc/samba/smb.conf 做了哪些設定.
[root@benjr ~]# vi /etc/samba/smb.conf ============================ Share Definitions ============================== [tmp] comment = Temporary file space path = /tmp read only = no public = yes [share] path = /share writeable = yes valid users = bob, john[share] 就是分享的名稱 , path = /share 就是實際在 Linux 的目錄,writable 來決定使用者可以寫入的權限.valid users 就決定誰可以使用這 share folder.
client 查詢 samba server 提供哪些分享目錄
[root@benjr ~]# smbclient -L benjr Password: Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.0.28-0.el5.8] Sharename Type Comment ——— —- ——- share Disk IPC$ IPC IPC Service (Samba Server Version 3.0.28-0.el5.8) Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.0.28-0.el5.8] Server Comment ——— ——- BENJR Samba Server Version 3.0.28-0.el5.8 Workgroup Master ——— ——- MYGROUP LOCALHOST
上面的 passwd 可以不用輸入,直接打 enter 鍵即可跳過
II."mount or smbmount" mount smaba 所提供的 share 目錄
不過系統會依據你目前的使用者來當登入 samba server 的使用者,所以你需要使用不同於目前 Linux 的使用者時必須加入參數 -o username=your user's name ,要不然會得到 mount error 13 = Permission denied
[root@unsvr root]# mount -t cifs //benjr/share /mnt -o username=bob Password: [root@unsvr root]# smbmount //benjr/share /mnountpoint -o username=bob,password=111111
如使用者和密碼無誤時這樣就可以直接使用smaba 所提供的目錄.
Windows client 端需要使用的程式
可以用網路的芳鄰來尋找,或者在 開始/執行 中鍵入 IP 或者電腦名稱(netbios name)輸入使用者帳號和密碼.
就可以看到 samba server 所分享的目錄,此時就可以來存取由 samba server 所提供的檔案了.
透過 net use 可以清除遠端主機的網路密碼.
C:\Documents and Settings\Administrator>net use * /delete
您的遠端連線如下:
\\Linux
\\software
\\IPC$
繼續執行會中斷連線。
要繼續執行這項操作嗎? (Y/N) [N]: y
命令執行成功.