簡介:本文探討關于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用戶名和密碼加入到內核密鑰環中即可成功,但是第二次加入內核密鑰環的信息會不生效(解決方法如上一條結論)