1,207 瀏覽數

Samba-User Level Security

Step0:前言

當 samba server security 選 user 安全等級時是用本身這台 samba server 做身份驗證.
而使用者要有何種權限才能存取檔案呢,權限的先後順序如下:
samba61
所以下面要講到關於 samba server 做身份驗證時 
I.使用者登入帳號密碼(Samba User Right)
II.分享檔案的權限存取(Linux File Permission) 
I." /etc/samba/smbpasswd " 存放使用者登入 samba server 時所需的使用者帳號以及密碼

[root@benjr ~]#cat /etc/samba/smbpasswd
---------------------------------------------------------------------------------------------------------------------------------------------
admin:500:E8450C7E07112982AAD3B435B51404EE:2D7F1A5A61D3A96FB5159B5EEF17ADC6:[UX]:LCT-3D8876ED:
user1:500:FC26CDB2863917C1AAD3B435B51404EE:00B2C85DDFBD8CC81602D6FC7340EB0B:[UX]:LCT-3D7D0F54:

說明:
admin: 使用者名稱
500: 使用者ID(參考 /etc/passwd 的 uid)
E8450C7E07112982AAD3B435B51404EE: Lanman Password Hash
使用 32 hex digits,使用 DES 編碼,與 Windows 95/ Windows 98 使用的編碼方式同.
2D7F1A5A61D3A96FB5159B5EEF17ADC6: NT Password Hash
使用 32 hex digits,使用 MD4 編碼,與 Windows NT 使用的編碼方式同.

 以下為關於 Windows 驗證機制的快速摘要:

驗證類型 支援的用戶端 附註
LANMan  全部 WFW 和 Win 9x 必須使用這種方法 但這種方法可能容易受到竊聽
NTLM  NT4、2000  比 LANMan 的安全性更加強固
NTLM v2  NT4 Post-SP4、2000 比 NTLM 更安全,建議用於異質 NT4/2000 環境
Kerberos  只適用於 Win 2000 比 NTLM 更複雜,但在安全性方面具有更長的追蹤記錄

samba 要到 3.0 才有支援 Kerberos 的加密

[UX]: Account Flags
 U: 代表為一般的帳號(無法登入 samba PDC )
 N: 表示這個帳號不使用密碼
 D: 表示這個帳號已經停用
 W: 表示你允許這個帳號能登入 samba PDC
LCT-3D8876ED: LCT(Last Change Time) ,"3D8876ED"  表示這個帳號最後被修改的時間(自 1970 年開始計算並以秒單位)
以上的檔案 (/etc/samba/smbpasswd )只和使用者登入samba server 時有關,而 samba server 分享目錄(Share folder)的存取權限,還是要看以下的兩個檔案
II. " /etc/passwd " 存放 share folder 設定存取權限時所需的使用者名稱 
     " /etc/group "     存放 share folder 設定存取權限時所需的群組名稱

Step1:samba的設定檔

[root@benjr ~]#vi /etc/samba/smb.conf 
---------------------------------------------------------------
[global]
   workgroup = MYGROUP
   server string = Samba Server
   netbios name = unsvr
   security = user
..................略.................................................
#======== Share Definitions ==========
[share1]
  comment = For smbuser Group Directories
  path = /share1
  writable = yes
  public = yes
  valid users = @smbgroup
[share2]
  comment = for user1 Only
  path = /share2
  writable = yes
  public = yes
  valid users = user1
------------------------------------------------------
service smb restart
Starting SMB services:                   [ OK ]
Starting NMB services:                   [ OK ]

說明:
share1 的分享目錄的 " valid user = @smbuser ","@"代表是群組,所以要參考 /etc/group , 所有屬於 smbuser 這個 group 皆有權限讀寫 (writable = yes)
share2 的分享目錄的 " valid user = user1 ",代表是個人,所以要參考 /etc/passwd , 只有 smbuser1 使用者有權限讀寫 (writable = yes)

Step2.為 samba server 加入使用者,以及群組的設定

建立使用者帳號密碼至 samba server,密碼存在 /etc/samba/smbpasswd ,但使用者必先存在於 /etc/passwd

[root@benjr ~]#adduser user1
[root@benjr ~]#adduser user2
[root@benjr ~]#adduser user3
[root@benjr ~]#passwd user1
[root@benjr ~]#passwd user2
[root@benjr ~]#passwd user3

[root@unsvr root]#smbpasswd -a user1
New SMB password:
Retype new SMB password:
Added user user1.

or 使用下列的程式來新增使用者,同樣使用者必先存在於 /etc/passwd 檔中.

[root@unsvr root]# smbadduser user:user
Adding: user to /etc/samba/smbpasswd
Added user user.
----------------------------------------------------------
ENTER password for user
New SMB password:
Retype new SMB password:
Password changed for user user.
Password changed for user user.

[root@unsvr root]#smbpasswd -a user2
New SMB password:
Retype new SMB password:
Added user user2.
[root@unsvr root]#smbpasswd -a user3
New SMB password:
Retype new SMB password:
Added user user3.

群組的設定

[root@unsvr root]#groupadd smbgroup
[root@unsvr root]#vi /etc/group
smbgroup:x:503:user2,user3

Step 3:目錄的建立以及權限設定

先建立剛剛我們要分享的目錄吧

[root@unsvr root]#mkdir /share1
[root@unsvr root]#mkdir /share2

建立完權限還要修改目錄的權限,使用者除了要有 samba 的使用權限外,還需要有目錄的存取權限.
目錄 "/share1" 目錄群組擁有者要改成 smb 並且權限要開成群組有讀寫執行的權限.

[root@unsvr root]#chown root:smbgroup /share1
[root@unsvr root]#chmod -R g+rwx /share1
[root@unsvr root]#chmod -R o-rwx /share1
[root@unsvr root]#ll /share1
drwxrwx---    2 root     smbgroup          4096 Aug  3 23:37 share1

drwxrwx—    2 root     smbgroup          4096 Aug  3 23:37 share1
而目錄 "/share2 " 目錄使用者以及群組擁有者要改成 user1

[root@unsvr root]#chown user1:user1 /share2
[root@unsvr root]#chmod -R og-rwx /share2
[root@unsvr root]#ll /share2
drwx------    2 user1 user1     4096 Aug  3 23:28 share2

這樣的檔案權限設定才大功告成

Step4 :Client 端

"share1" 的分享目錄的,所有屬於 smbgroup(user2,user3) 這個 group 皆有權限讀寫.
"share2" 的分享目錄的,只有 user1 使用者有權限讀寫 .

網友的想法

  1. 自動參照通知: samba | Benjr.tw

發表迴響