以下內容轉載自http://hi.baidu.com/jyj888/blog/item/0f95dc35b16c3a5b241f1463.html
第一部分:Samba服務的控制選項
使用者控制
public = no 不允許匿名使用者存取
browseable = yes 不隱藏目錄(知道目錄同樣可以訪問) (系統預設yes,可以不寫)
valid users = 使用者或列表或@使用者組
writable = yes 可寫(目錄本身要可寫)
writable list = 使用者或列表或@使用者組
readonly = yes 是否設定唯讀(系統預設yes,可以不寫)
create mask = 0744 控制客戶機建立檔案的許可權(系統預設0744)
directory mask = 0744 控制客戶機建立目錄的許可權(系統預設0755)
存取控制
max connections = 最大串連數目
deadtime = 斷掉連線時間(分鐘)0為不限制
註:在全域裡增加
hosts deny = .sale.com .net free 表示禁止.sale.com域和.net域及主機名稱為free的用戶端訪問
hosts deny = All 表示所有用戶端,並不是說允許主機名稱為ALL的用戶端可以訪問。常用的萬用字元還有“*”,“?”,“LOCAL”等
hosts allow = 192.168.0. EXCEPT 192.168.0.100 192.168.0.78 表示允許192.168.0.0網段IP地址訪問,但是192.168.0.100和192.168.0.78除外
註:在可在全域與局部裡增加
註::允許優先
第二部分:幾個關鍵字段
根據需要增加在全域裡面。雖然簡單,但功能不簡單,大家在用到的時候慢慢來體會。
include = /etc/samba/%G.smb.conf 調用使用者組相關的設定檔
include = /etc/samba/%U.smb.conf 調用使用者相關的設定檔
username map = /etc/samba/smbusers 調用映射使用者帳號的設定檔
第三部分:和Samba有關的一些命令
批量增加SMB使用者(很多人想要的東東)
# for user in 使用者列表
>do
>useradd -g group -s shell $user
>smbpasswd -a $user
>done
編輯SMB的使用者帳號相關命令
smbpasswd
smbpasswd -a 增加一個帳號
smbpasswd -d 禁用一個帳號
smbpasswd -e 啟用一個帳號
smbpasswd -x 刪除一個帳號
smbpasswd 更改使用者密碼
pdbedit
pdbedit -L 列出SMB中的帳號
pdbedit -a 增加一個帳號
pdbedit -x 刪除一個帳號
註:上面兩個命令,大家根據需要選擇
Linux用戶端的訪問工具
smbtree 顯示區域網路中的所有共用主機和目錄列表
smbtree -D 只顯示區域網路中的工作群組或網域名稱。後面可以加上-U username%passwd ,則表示是相關使用者的存取權限
nmblookup 某個主機的netbios主機名稱或工作群組。 # 顯示相應的IP
smbclient命令格式
smbclient -L //主機名稱或IP地址 -U 登入使用者名稱 # 列出目標主機共用資源列表
smbclient //主機名稱或IP地址/共用目錄名 -U 登入使用者名稱 # 使用共用資源
mount命令格式
mount //目標IP地址或主機名稱/共用目錄名稱 掛載點 -o username=使用者名稱 # 掛載共用
umount 掛載點 # 卸載共用
smbtar -s server –u user –p passwd –x shareneam –t output.tar # 把遠端內容備份到本地
tar tvf *.tar # 查看TAR檔案包裡面的的內容
第四部分:執行個體詳解
【執行個體1】員工可以在公司內流動辦公,無論在任何一台機器上工作,都能把自己的檔案放到伺服器裡,同時不能使用伺服器上的SHELL。(註解:SMB中有關於使用者家目錄的默共用設定,我們只要設定USER層級,然後再增加使用者和指定停用SHELL)
smb.conf設定檔更改的內容如下
security = user
[homes]
comment = Home Directories
browseable = no
writable = yes
valid users = %S
配置好後,就重新啟動SMB服務
# useradd user -s /dev/null
# smbpasswd -a user
增加好使用者和密碼後,就可以直接測試了!這個不用重新啟動SMB服務了哦!
【執行個體2】建立共用目錄student,它的本機路徑為“/home/student”,只有teachers組的使用者可以讀寫該目錄,students 使用者組只能讀取。(註解:這個關鍵是不同組對同一個目錄的使用權限設定,student這個目錄屬於students使用者組,並設定他的OTHER 許可權為7,我們通過這個OTHER許可權來實現teachers組對student目錄的訪問,通過SMB的設定檔來限制使用者訪問)
# mkdir /home/student
# groupadd students
# groupadd teachers
# useradd -g students user
# useradd -g teachers user
# smbpasswd -a user
# chgrp students /home/student
# chmod 757 /home/student
# chmod g+s /home/student
smb.conf設定檔更改的內容如下
security = user
[student]
path = /home/student
comment = student
write list = @teachers
valid users = @teachers @students
重新啟動SMB服務,進行測試。
【執行個體3】公司有二個部門( sales market ),銷售部和市場部有自己單獨的共用目錄,只可以總經理和相應部門員工訪問,並且公司員工禁止訪問非本部門的共用目錄。(註解:這一個內容與第二個類似,只是使用者組變成使用者,多了一個使用者組,只需要把檔案夾所有者給總經理,所屬組為使用者組就OK)
# mkdir /home/sales
# mkdir /home/market
# groupadd sales
# groupadd market
# useradd -g sales user
# useradd -g market user
# smbpasswd -a user
# chgrp sales /home/sales
# chgrp market /home/market
# chown ceo /home/sales
# chown ceo /home/market
# chmod 770 /home/sales
# chmod 770 /home/market
# chmod g+s /home/sales
# chmod g+s /home/market
smb.conf設定檔更改的內容如下
security = user
[sales]
path = /home/sales
comment = sales
write list = @sales ceo
valid users = @sales ceo
create mask = 0770
directory mask = 0770
[market]
path = /home/market
comment = market
write list = @market ceo
valid users = @market ceo
create mask = 0770
directory mask = 0770
重新啟動SMB服務,進行測試。
【執行個體4】實現在登陸的時候只能看到自己的共用目錄,沒有許可權訪問的看不到。
(註解:其實實現這個主要靠載入獨立的設定檔來實現,只要把獨立的檔案設定好相應的許可權就OK,SMB主設定檔中加入獨立的設定檔,其他不用設定)
關於使用者的增加我這裡就不寫出來了,和上面的沒有區別。(略過)
首先把源始的smb.conf COPY 出來,後面加上相應的使用者或者組,如:smb.conf.user smb.conf.group
然後配置各己的設定檔
如:smb.conf.ceo
[sales]
comment = sales
path = /home/sales
writeable = yes
valid users = ceo
create mask = 0770
directory mask = 0770
[markets]
comment = markets
path = /home/markets
writeable = yes
valid users = ceo
create mask = 0770
directory mask = 0770
如:smb.conf.sales
[sales]
comment = sales
path = /home/sales
writeable = yes
valid users = @sales
create mask = 0770
directory mask = 0770
如:smb.conf.markets
[markets]
comment = markets
path = /home/markets
writeable = yes
valid users = @markets
create mask = 0770
directory mask = 0770
主設定檔如下:
security = user
include = /etc/samba/smb.conf.%G
include = /etc/samba/smb.conf.%U
最後說說如果開啟SElinux:
samba伺服器啟動後,能看到共用目錄,但是不能訪問共用目錄,告知許可權不夠。此時可以通過如下命令:
tail /var/log/message看到如此提示:
'/home/lyy' does not exist or permission denied when connecting to [lyy] Error was 許可權不夠
SELinux is preventing the samba daemon from reading users home directories. For complete SELinux messages. run sealert -l a0c1c154-bc37-44f5-a6eb-cfc88fed18b9
根據提示運行:
sealert -l a0c1c154-bc37-44f5-a6eb-cfc88fed18b9
可看到另外更詳細的提示,再根據提示
Allowing Access
If you want samba to share home directories you need to turn on the
samba_enable_home_dirs boolean: "setsebool -P samba_enable_home_dirs=1"
The following command will allow this access:
setsebool -P samba_enable_home_dirs=1
運行:
setsebool -P samba_enable_home_dirs=1
等運行成功後,就能正常訪問目錄了。-P參數是永久有效意思。
注意setsebool放在/usr/sbin中,如果系統提示setsebool命令找不到,加入上述路徑即可。
另外http://xingxing5421.blog.163.com/blog/static/11944631920108309309395/ 也有參考價值。