samba(ACL)
一般由samba server 分享出來的檔案無法直接在 windows 的檔案總管中進行權限設定,如下圖
所以分享權限必須要修改 /etc/samba/smb.conf 檔案.所以這邊是要介紹如何讓 samba server 分享的檔案可以直接經由 windows 的檔案總管來修改權限.
下圖是 Linux 與 Windows 之間的比較
Step 0:你必須先要了解的知識.
為了讓 samba server 分享的檔案可以直接經由 windows 的檔案總管來修改權限.你必須要先了解一些知識.
1.檔案的 ACL(Access Control Lists)
2.如何將 samba server 加入 Winodws 的網域.
3.Winbind 的設定.
你可以參考下面的網站,或者直接看接下來的簡單設定.
1. Winbind 的使用與設定
2. samba server 加入網域
3. 檔案的 Access Control List
Step 2.檔案的 ACL(Access Control Lists)
掛載要用 samba server 分享的磁區 你可以用下列的方式掛載磁區
[root@benjr ~]# mkdir /fs1 [root@benjr ~]# chmod 777 /fs1 [root@benjr ~]# mount -t ext3 -o acl /dev/sda1 /fs1
你也可以直接寫在 /etc/fstab 檔案中,這樣就可以在 O.S 開機後支援 ACL 的功能
[root@benjr ~]# vi /etc/fstab ……….略………………. LABEL=/fs1 /fs1 ext3 acl 1 2
詳細的 ACL 使用方式請參考下列網站
ACL(Access Control Lists)
Step 3.如何將 samba server 加入 Winodws 的網域.
假設我的網域為 SUN.COM
1.samba 的設定
[root@benjr ~]#vi /etc/samba/smb.conf workgroup = SUN netbios name = unsvr01 realm = SUN.COM security = ads password server = sun.com encrypt password = yes nt acl support = yes
上面最主要有加上一行 nt acl support = yes,是要讓 samba server 支援 ACL 的檔案格式.
[root@benjr ~]# chkconfig smb on [root@benjr ~]# service smb restart
2.Authentication Configuration 的設定
為了使用 kerberos 來做身分驗證,我們要先設定一下認證模式,RedHat 提供工具來設定 Authentication configuration (#authconfig)
這些工具還會修改到 PAM 的設定檔 /etc/pam.d/system-auth ,以及 /etc/krb5.conf , /var/kerberos/krb5kdc/kdc.conf
3.加入 AD
[root@benjr ~]# net join -U administrator administrator password:
輸入密碼後,應該就會顯示成功訊息~
Joined 'SUN01' to realm 'SUN.COM'
關於加入 Windows 的網域請參考下列網址
samba Joined Domain
Step 4.Winbind 的設定
1.NSS 的設定檔
[root@benjr ~]#vi /etc/nsswitch passwd: files winbind shadow: files group: files winbind
2.Winbind 設定檔 winbind 與 samba 使用同一個設定檔,也就是 /etc/samba/smb.conf
[root@benjr ~]# vi /etc/samba/smb.conf #use uids from 10000 to 20000 for domain users idmap uid = 10000-20000 #use gids from 10000 to 20000 for domain groups idmap gid = 10000-20000 #separate domain and username with '+' ,like DOMAIN+username winbind separator = + #Users without a domain component winbind use default domain = yes #allow enumeration of winbind users and groups winbind enum users = no winbind enum groups = no #give winbind users a real shell and home directory (only needed if they have telnet access) template homedir = /home/%D%U template shell =/bin/bash #cache user and group information before querying Windows NT server again winbind cache time = 300 [root@benjr ~]# chkconfig winbind on [root@benjr ~]# service winbind restart
關於 Winbind 設定使用請參考下列網址
samba(winbind)
Step 5:分享目錄的設定
[root@benjr ~]# vi /etc/samba/smb.conf [share] path = /fs1 public = yes writableable = yes admin users = SUN\Administrator [root@benjr ~]#service smb restart
Step 6:大工告成,試試看吧!
在 windows 端打上 samba server 所分享的路徑,並且修改權限
回到 Linux 下看權限是否修改了
[root@benjr ~]# cd /fs1 [root@benjr ~]# ll total 28 -rw-r--r-- 1 root root 0 Sep 8 09:45 1.txt drwxrwxrwx 2 root root 16384 Sep 7 13:27 lost+found drwxr-xr-x 2 user1 Domain Users 4096 Sep 8 09:44 user1 drwxrwx---+ 2 Administrator Domain Users 4096 Sep 7 14:09 user2 #getfacl user2/ # file: user2 # owner: Administrator # group: Domain Users user::rwx user:user1:rwx user:user2:rwx group::r-x mask::rwx other::--- default:user::rwx default:user:user1:rwx default:user:user2:rwx default:group::--- default:mask::rwx default:other::---
可以很明顯的看到 user1,user2 皆有權限讀寫
2 thoughts on “Linux – samba ACL”