一、Samba的簡介
Samba是在Linux和UNIX系統上實現SMB協議的一個免費軟件,由服務器及客戶端程序構成。
SMB(Server Messages Block,信息服務塊)是一種在局域網上共享文件和打印機的一種通信協議,它爲局域網內的不同計算機之間提供文件及打印機等資源的共享服務。SMB協議是客戶機/服務器型協議,客戶機通過該協議可以訪問服務器上的共享文件系統、打印機及其他資源。通過設置“NetBIOS over TCP/IP”使得Samba不但與局域網絡主機分享資源,還能與全世界的電腦分享資源。
二、Samba服務配置
1、安裝軟件
yum -y install samba 安裝samba包
2、啓動服務
systemctl restart smb
3、Samba賬號的管理
Samba用戶:
(1)提前建立同名的系統用戶,可不設置密碼
(2)採用獨立於系統的密碼
管理工具:pdbedit
pdbedit -a 添加用戶
pdbedit -L 查詢用戶
pdbedit -x 刪除用戶
useradd -s /sbin/nologin smb1 創建用戶,並設置shell useradd -s /sbin/nologin smb2 useradd -s /sbin/nologin smb3 pdbedit -L 查看已存在的smb賬號
smbpasswd -a smb1 設置密碼 已存在的系統用戶通過smbpasswd命令設置爲smb用戶 smbpasswd -a smb2 smbpasswd -a smb3
pdbedit -L 再次查看smb賬號 設置smb賬號已添加
systemctl stop firewalld.service 清除防火牆 systemctl disable firewalld.service iptables -L 查看防火牆策略
4、同臺機器不同終端測試
ifconfig ens34 查詢ens34 的ip地址
smbclient -L //192.168.230.131 客戶端測試
smbclient -L //192.168.230.131 -U smb1%centos smbclient只用於測試,實際生產過程中並不常用
5、windows系統測試
可以看到其家目錄文件
6、配置文件及參數
vim /etc/samba/smb.conf Samba服務的配置文件
宏定義:
%m :客戶端主機的NetBIOS名
%H :當前用戶家目錄路徑
%g :當前用戶所屬組
%L :samba服務器的NetBIOS名
%T :當前日期和時間
%M :客戶端主機的FQDN
%U :當前用戶用戶名
%h :samba服務器的主機名
%I :客戶端主機的IP
%S :可登錄的用戶名
systemctl restart smb 重啓smb服務 (只要修改過配置文件就要重啓服務)
7、測試前的環境準備
mkdir /app/gongxiang 創建共享目錄/app/gongxiang cd /app/gongxiang/ 進入該目錄 cp /etc/issue . 將/etc/issue 文件複製到本地 setenforce 0 關閉selinux iptables -F 關閉防火牆
chmod 775 gongxiang 其他人的權限至少爲5
setfacl -m u:smb1:rwx gongxiang 爲該文件設置特殊權限
8、上傳文件(客戶端)
ssh 172.18.251.127 遠程連接工具
ifconfig ens33 查詢ens33網卡的地址
smbclient //172.18.251.86/gongxiang -U smb1 用另一臺機器當作客戶端進行測試,ip爲服務器地址
vim /etc/fstab 增加一行內容
mkdir /app/gongxiang1 創建目錄 (爲測試環境做準備) mount -a 新寫入/etc/fstab文件中的掛載內容,通過mount -a 可實現自動掛載 df 查看掛載情況 可看到已自動掛載
su - smb2 切換到用戶smb2,進行各項測試
三、Samba配置參數小總結
[global]
netbios name = HARDY 設置服務器的netbios名字
server string = my server 對samba服務器的描述
workgroup = DEBIAN_FANS samba服務器屬於哪個工作組名或域名
encrypt passwords = yes 密碼需要加密
message command = /bin/sh -c 'xedit %s ; rm %s' & 當winpopup向網絡用戶發消息時,此參數可用來接收消息,可惜沒有發送
security = user 用於登陸域,或用戶驗證登陸
wins support = yes 設置本地爲wins服務器,當WINS SERVER沒有啓動,SAMBA利用廣播來進行名字解析,而WINS SERVER是通過udp協議來進行包的傳送和不同網絡中的路由.因此在不同的網絡中進行NETbios解析,要打開wins server
remote browse sync 用來和遠程的local master browser進行信息的同步
name resolve order = wins lmhosts hosts bcast # 解析netbios的順序 (lmhosts-lan manager file)(hosts-unix的/etc/hosts,dns,nis)(wins)(bcast,廣播)
wins server = 192.168.0.22 指定wins服務器的網絡地址
wins proxy = yes 如果指定的wins服務器在不同的網斷,就需要打開
dns proxy = yes 當wins服務器在wins中找不到名字的話,就會查找dns
admin users = hardy samba的管理用戶,默認是root
add user script = /usr/sbin/useradd -d /dev/null -g 100 -s /bin/false %u 代替手工的添加計算機賬號(看pdc配置文件)
prefered master = yes 強制使samba成爲local master
local master = yes 使nmbd試着在子網中成爲master browse(儲存子網中所有的netbios name 所對應ip的列表)
domain master = yes 使nmbd成爲廣域網的netbios name 所對應ip的列表,任務是同步所有子網中local master的列表。因此使各終端得到整個域的瀏覽列表,如果設置了domain logons = yes 那麼domain master默認是yes
os level = 33 操作系統級別,winNT4.0服務器-33 如果數值高於33,samba就成爲local master browers不管網絡中是否存在winNT4.0
winNT3.51服務器-32
winNT4.0客戶機-17
winNT3.51客戶機-16
win98 - 2
win95 - 1
win3.1- 1
time server = yes nmbd將會告知windows的客戶端自己是作爲smb的時間服務器,可以用net time /yes /set 來同步時間
domain logons = yes 設置samba爲win98/95所登陸的域服務器
printer admin = hardy
username map = /etc/samba/smbusers 用戶別名文件
logon path = 看[profiles]的說明
logon drive = Z: 把用戶的home目錄映射成z:盤,只適用於NT
logon home = 指定客戶端登陸的home目錄的位置,當然[homes]目錄需要定義,爲了同時支持9x和nt登陸.該項要設置成爲, 並且指定logon path =
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 據說可以提高samba性能
password server = 其他的NT 服務器,或samba服務器但security=server或domain 的ntbios 名字
hosts allow = 192.168.0. 指定那些主機或網絡段可以訪問
hosta deny = 192.168.8. 指定那些主機或網絡段不可以訪問
interfaces = 192.168.0.100/255.255.255.0 設置samba將對哪些網絡接口進行服務
bind interface only = yes 如果設置成是,samba只對這幾個網絡接口服務
socket address = 192.168.0.10 強制samba只在該端口監聽
netbios aliases = yao xiao ping 設置3個samba虛擬服務器
include = /etc/samba/smb.conf.another 包括另外的samba配置文件
show add printer wizard= yes 當用戶添加打印機時,顯示安裝嚮導
printcap name = /etc/printcap
load printers = yes
log file = /var/log/samba/%m.log 日誌文件
max log size = 0 日誌文件的大小
log level = 0 日誌級別 0 表示沒有,3 一般比較合理
syslog = 2 syslog的日誌級(0,err)(1,warning)(2,notice)(3,ifno)(4或以上,debug)
syslog only = yes 只使用系統日誌,關閉samba日誌
smb passwd file = /etc/samba/smbpasswd
unix password sync = yes 當用戶改變samba加密的密碼時,SAMBA會試着更新UNIX用戶密碼
passwd program = /usr/bin/passwd %u 指定更改密碼的命令
passwd chat = *New*password* %n\n *Retype*new*password* %n\n *passwd:*all*authentication*tokens*updated*successfully* 更改密碼時的對話
password level = "數字" 在win9x下密碼最多出現大寫字母的個數,因爲9X是使用平文傳送密碼的。
null password = yes 是否允許空密碼
pam password change = no 爲samba打開pam改變密碼控制機制的支持
obey pam restrictions = no 當encrypt passwords = yes 時,samba 會忽略pam的驗證,因爲pam不支持(挑戰/回答)驗證機制,他只用來做平文密碼的驗證
nt acl support = yes 允許NT用戶修改unix文件的屬性
announce as = NT 告訴客戶端,samba是以winNT的身份來運行的
announce version = 4.0 告訴客戶端,samba是以4.0版本來運行的
remote announce = 192.168.33.33/DEBIAN_FANS 子網和工作組,允許SAMBA和子網同步瀏覽(local master)
browse list = yes samba將在服務器上生成瀏覽列表
remote browse sync = 192.168.222.22 # samba 將會同步在其他子網(local master)的列表,但子網的(LOCAL MASTER)必須是SAMBA服務器
unix realname 在客戶端是否採用unix全文件名
nis homedir = yes SAMBA 採用NIS的/etc/nsswitch.conf 文件,而不用/etc/passwd,來找用戶的home目錄
logon script = %U.bat 指定客戶端登陸文件名
[netlogon]
path = /home/samba/netlogon 該目錄中存放用戶登陸腳本(logon script = %U.bat)
writable = no
guest ok = yes
share modes = no 打開dos的鎖全文件的方式,在比較繁忙的服務器上關閉它,會提高性能
;write list = hardy,root 指定哪些用戶可以在該只讀共享文件上有寫的權限
[profiles] 設置每個登陸用戶的環境,包括桌面的屬性,開始菜單上應用程序,以及其他項目。它是儲存在服務器的
path = /home/samba
writable = yes 允許寫操作
browsable = yes 允許該目錄被顯示在系統資源中
create mask = 0600
directory mask = 0700
[printers]
path = /var/spool/samba
guest ok = yes
browseable = yes
printable = yes
read only = yes
[cdrom]
path = /mnt/cdrom
read only = yes
gue st ok = yes
locking = no 由於是隻讀文件
public = yes
preexec = /bin/mount /dev/cdrom 在鏈接共享文件之前,要執行的命令
postexec = /bin/umount /dev/cdrom 在斷開共享文件之前,要執行的命令 但我不知道什麼時候纔算斷開
[homes]
comment = Home
magic script = hardy.sh 當用戶打開該共享文件hardy.sh將被執行,結果將被重定向到客戶端
magic output = /var/log/magicoutput 指定結果輸出到該文件
volume = user-at-home dos的盤符卷標
read list = badguy 限制這些用戶在可寫文件上的些操作權限
valid users = %S 可登陸用戶
invalid users = root 不可登陸用戶
max connections = 0 最大連接數
read only = no
writable = yes
create mode = 0777
directory mode = 0775
browseable = no
[public]
path = /var/ftp
dont descend = etc bin lib 指定這些在/var/ftp目錄下的目錄是不可訪問的
follow symlinks = yes 指定是否允許文件的鏈接
wide links = yes 指定是否可以鏈接到/var/ftp以外的文件或目錄
hide dot files = yes 是否隱藏點文件
hide files = /*.java/*.cpp/ 隱藏指定文件
veto files = /*config/*secret/ 完全隱藏文件,比隱藏要強硬。重要文件使用
delete veto files = no 當用戶刪除有veto files的目錄時, 是否允許刪除veto files以及目錄
delete readonly = no 是否允許dos用戶刪除只讀文件
security mask = 0777 0 表示允許修改,1 表示不允許
create mask = 0777 如果上面的(security mask)沒設,則按照這個模式
force security mode = 0 當修改文件的屬性,指定哪些模式必須設置
force create mode = 0 如果上面的(force security mode)沒設,則按照這個模式的設置
directory security mask = 0777 目錄,同上
directory mask = 0777
force directory security mode = 0777
force directory mode =0777
case sensitive = no 是否區分文件名的大小寫(windows 是不區分的)
default case = upper/lower 設置默認的是大寫還是小寫
preserve case = yes 不進行大小寫的轉換,不轉換成默認(default case)
short preserve case = yes 將文件名轉成8.3的dos端文件名
locking = yes 由於文件只能同時被打開一次,當文件打開時,samba會自動讓其他訪問守候,爲了文件不被破壞
oplocks = no 本地緩存,如果設置成yes,會提高samba的速度,據說在linux-2.5以前的版本有bug,所以在2.4中還是設置成no
level2 oplocks = no 同上