1,484 瀏覽數

samba-ACL

samba(ACL)
一般由samba server 分享出來的檔案無法直接在 windows 的檔案總管中進行權限設定,如下圖
winbind11
所以分享權限必須要修改 /etc/samba/smb.conf 檔案.所以這邊是要介紹如何讓 samba server 分享的檔案可以直接經由 windows 的檔案總管來修改權限.
下圖是 Linux 與 Windows 之間的比較
samba62

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)
winbind100
這些工具還會修改到 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<br />
#separate domain and username with &#39;+&#39; ,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&nbsp;(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 所分享的路徑,並且修改權限
user1user2
回到 Linux 下看權限是否修改了

[root@benjr ~]# cd /fs1
[root@benjr ~]# ll
total 28
-rw-r--r--&nbsp;&nbsp;&nbsp; 1 root&nbsp;&nbsp;&nbsp;&nbsp; root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 Sep&nbsp; 8 09:45 1.txt
drwxrwxrwx&nbsp;&nbsp;&nbsp; 2 root&nbsp;&nbsp;&nbsp;&nbsp; root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 16384 Sep&nbsp; 7 13:27 lost+found
drwxr-xr-x&nbsp;&nbsp;&nbsp; 2 user1&nbsp;&nbsp;&nbsp; Domain Users&nbsp;&nbsp;&nbsp;&nbsp; 4096 Sep&nbsp; 8 09:44 user1
drwxrwx---+&nbsp;&nbsp; 2 Administrator Domain Users&nbsp;&nbsp;&nbsp;&nbsp; 4096 Sep&nbsp; 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 個網友的想法 “samba-ACL

  1. 自動參照通知: RHEL5 – Samba(一) 什麼是 Samba | Benjr.tw

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

發表迴響