6,400 瀏覽數

RHEL5 – Samba user 的身分驗證

第二種是 User Level Security : 使用密碼做身份驗證,任何使用者在存取目錄時會詢問密碼.先在 X-windows 下執行 #system-config-samba 選擇 "Authentication Mode" 為 User.
samba_user01
透過 #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 網路芳鄰一樣.
samb_access01
當 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"
system-config-samba05
因為我們只能選擇已經存在的 Linux User 所以在 Unix Username:選擇剛剛新增的 bob 和 john.Windows Username 就設的跟 Unix Username 一樣即可.
system-config-samba06
或是透過 #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).
system-config-samba04
恩!!!!這是怎麼一回事!!不過透過指令方式 #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
samba_user03
新增 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 smbfs  //benjr/share  /mnt -o username=bob
Password:
[root@unsvr root]# smbmount  //benjr/share  /mnountpoint -o username=bob
Password:

如使用者和密碼無誤時這樣就可以直接使用smaba 所提供的目錄.

Windows client 端需要使用的程式
可以用網路的芳鄰來尋找,或者在 開始/執行 中鍵入 IP 或者電腦名稱(netbios name)輸入使用者帳號和密碼.
samba_windows_client
就可以看到 samba server 所分享的目錄,此時就可以來存取由 samba server 所提供的檔案了.

2 個網友的想法 “RHEL5 – Samba user 的身分驗證

  1. 自動參照通知: RHEL5 – Samba(一) 什麼是 Samba | Benjr.tw

  2. 透過 net use 可以清除遠端主機的網路密碼.

    C:\Documents and Settings\Administrator>net use * /delete
    您的遠端連線如下:

    \\Linux
    \\software
    \\IPC$
    繼續執行會中斷連線。

    要繼續執行這項操作嗎? (Y/N) [N]: y
    命令執行成功.

發表迴響