samba原理-usernames

SAMBA是在Linux服務器上部署共享文件服務,然後在Windows上進行訪問。對於訪問時用戶的驗證Linux不同於Windows。

1. Linux用戶模式

Linux一般分爲以下幾種用戶模式:

  • 0:關機
  • 1:單用戶模式
  • 2:無網絡支持的多用戶模式
  • 3:有網絡支持的多用戶模式
  • 4:保留,未使用
  • 5:有網絡支持有X-Window支持的多用戶模式
  • 6:重新引導系統,即重啓

Linux 系統處於正常狀態時,服務器主機開機(或重新啓動)後,能夠由系統引導器程序自動引導 Linux 系統啓動到多用戶模式,並提供正常的網絡服務。特注:進入單用戶模式,沒有開啓網絡服務,不支持遠程連接

Linux 系統中不同的運行級別(Run Level)代表了系統的不同運行狀態,例如 Linux 服務器正常運行時處於運行級別3,是能夠提供網絡服務的多用戶模式;而運行級別 1 只允許管理員通過服務器主機的單一控制檯進行操作,即“單用戶模式”。

2. Linux文件權限

Linux文件的元數據中保存了該文件的權限mod,創建該文件的UID,GID。

[u1@localhost test]# stat file1 
  File: ‘file1’
  Size: 2           Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 134382061   Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2017-09-19 01:38:17.517410401 -0700
Modify: 2017-09-19 01:38:14.854274421 -0700
Change: 2017-09-19 01:38:14.854274421 -0700
 Birth: -
You have new mail in /var/spool/mail/root
[u1@localhost test]#

如上面文件file1的用戶具有讀寫權限,用戶組和其他用戶具有讀權限。同時也應該注意到uid/gid保存在文件的元數據中。如果切換其他用戶,並進行寫該文件,將報錯。

[root@localhost test]# su u1
[u1@localhost test]$ ll
total 4
-rw-r--r-- 1 root root 2 Sep 19 01:38 file1

[u1@localhost test]$ echo "1" > file1
bash: file1: Permission denied
[u1@localhost test]$ 

上述用戶u1就是Linux多用戶模式中,一個用戶。因此如果從網絡(windows客戶端)訪問Linux,那麼也需要提供用戶名。
但是我們也應該注意到,在Linux本地訪問時,已經登錄到u1用戶狀態,u1發起的讀寫操作將把u1的UID/GID作爲請求的一部分與元數據中的要訪問文件的UID/GID做比較,做權限鑑定。那麼網絡來的請求該如何做用戶的權限鑑定呢?

3.SAMBA用戶鑑權

請求從windows客戶端來,Linux服務器上的smbd進程接收請求。由於不同請求中可能包含了不同的用戶名,權限,因此smbd需要提供一個轉換功能。即將windows 訪問請求中的用戶轉換爲uid並保存下來。如windows用戶admin1在smaba共享目錄中創建了一個文件,那麼該文件的元數據中應該保存admin1在smbd中轉換出來的uid/gid。

不過進行用戶轉換功能的組件不是smbb,而是其他的組件,後續將進行逐步說明。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章