關于Linux上SAMBA服務的權限問題(多用戶掛載)

簡介:本文探討關于Samba服務在客戶端進行多用戶掛載的問題,以及對cifscreds命令的使用效果.

安裝配置:

(服務器配置要求如下,配置過程在本博客中<關于Linux上SAMBA服務的權限問題(普通掛載)>,本文省略配置過程)

要求

在客戶端desktop0配置進行多用戶掛載:

1.安裝cifs-utils軟件包以支持samba的掛載(否則即使掛載沒有報錯也無法正常使用)

[root@desktop0 ~]# yum -y install cifs-utils

2.創建掛載點

[root@desktop0 ~]# mkdir /mnt/multiuser

3.把掛載條目寫入/etc/fstab以使開機自動掛載

[root@desktop0 ~]# vim /etc/fstab
//server0/common    /mnt/multiuser    cifs    credentials=/root/smb.cred,multiuser,sec=ntlmssp,_netdev,defaults    0 0

注解:

  • credentials=/root/smb.cred 用于指定包含掛載用戶信息文件,此用戶一般是samba服務器里對共享目錄具有較低權限的用戶(本文使用的rob用戶對共享目錄權限為只讀),文件包含username,password

  • multiuser 關鍵選項,用于指定使用多用戶掛載

  • sec=ntlmssp 指定認證方式(kernel3.8之后是默認選項)

  • _netdev 關鍵選項,否則系統會啟動失敗;不寫入/etc/fstab文件時,次選項可省略

  • defaults 用于指定掛載后的默認屬性,但權限還受samba服務器約束

4.創建并編寫/etc/smb.cred文件,出于安全性考慮應該修改此文件的權限為600

[root@desktop0 ~]# vim /root/smb.cred
username=rob
password=redhat
[root@desktop0 ~]# chmod 600 /root/smb.cred

5.執行掛載操作

[root@desktop0 ~]# mount -a
[root@desktop0 ~]# mount | grep /mnt/multiuser
//server0/common on /mnt/multiuser type cifs (rw,relatime,vers=1.0,sec=ntlmssp,cache=strict,multiuser,domain=SERVER0,uid=0,noforceuid,gid=0,noforcegid,addr=172.25.0.11,unix,posixpaths,serverino,acl,noperm,rsize=1048576,wsize=65536,actimeo=1)

6.進入掛載點進行權限測試

[root@desktop0 ~]# cd /mnt/multiuser/
[root@desktop0 multiuser]# touch 11
touch: cannot touch ‘11’: Permission denied

結論是:

  • 文件的掛載用戶是rob,故只有只讀權限,沒有寫入權限

7.在root用戶下使用cifscreds命令把指定用戶的用戶名和密碼加入內核密鑰環

[root@desktop0 ~]# cifscreds add server0 -u brian
Password:redhat
[root@desktop0 ~]# cd /mnt/multiuser/
[root@desktop0 multiuser]# touch 22
touch: cannot touch ‘22’: Permission denied

結論是:

  • 由于一開始是root用戶以rob用戶的角色進行目錄的掛載(root的環境變量已改變)

  • 再在root用戶下使用cifscreds命令把指定用戶的用戶名和密碼加入內核密鑰環會不生效

8.在其他用戶下使用cifscreds命令把指定用戶的用戶名和密碼加入內核密鑰環

[root@desktop0 ~]# su - user1
[user1@desktop0 ~]$ cifscreds add server0 -u brian
Password:
[user1@desktop0 ~]$ cd /mnt/multiuser/
[user1@desktop0 multiuser]$ touch 33
#####在user1用戶下把brian用戶的用戶名和密碼加入內核密鑰環后成功獲得寫入權限#####成功
[user1@desktop0 multiuser]$ cd
[user1@desktop0 ~]$ cifscreds clearall
[user1@desktop0 ~]$ cifscreds add server0 -u rob
Password:
[user1@desktop0 ~]$ cd /mnt/multiuser/
[user1@desktop0 multiuser]$ touch 44
#####在user1用戶下把rob用戶的用戶名和密碼加入內核密鑰環后效果并沒有改變,還是有寫入權限,正常應該只有讀權限#####失敗,沒有生效

結論是:

  • 切換到其他用戶后(除root外),第一次使用cifscreds命令把brian(rw)的用戶名和密碼加入內核密鑰環,成功地獲得了brian(rw)所對應的權限

  • 第二次使用cifscreds命令把rob(ro)的用戶名和密碼加入內核密鑰環,并沒有獲得rob(ro)所對應的權限,此時實際權限還是第一次加入密鑰環的brian用戶所對應的權限

  • 經實驗,使用cifscreds clearall 命令清除內核密鑰環的數據后不會馬上生效,大概5分鐘后才回清除,此后可以成功把其他用戶加入到內核密鑰環中并生效

  • 切換到其他用戶(如:su - user2),第一次把指定的samba用戶名和密碼加入到內核密鑰環中即可成功,但是第二次加入內核密鑰環的信息會不生效(解決方法如上一條結論)

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容