Samba伺服器安裝和配置 1:安裝Samba伺服器軟體包 [root@localhost ~]# rpm -qa | grep samba [root@localhost ~]# yum -y install samba [root@localhost ~]# yum -y install sam ...
Samba伺服器安裝和配置
1:安裝Samba伺服器軟體包
[root@localhost ~]# rpm -qa | grep samba
[root@localhost ~]# yum -y install samba
[root@localhost ~]# yum -y install samba-client
2:/etc/samba/smb.conf文件詳解
[root@localhost ~]# cat /etc/samba/smb.conf
# See smb.conf.example for a more detailed config file or
# read the smb.conf manpage.
# Run 'testparm' to verify the config is correct after
# you modified it.
[global] \\設置全局參數內容
workgroup = SAMBA
security = user
passdb backend = tdbsam
printing = cups
printcap name = cups
load printers = yes
cups options = raw
[homes] \\文件共用
comment = Home Directories
valid users = %S, %D%w%S
browseable = No
read only = No
inherit acls = Yes
[printers] \\印表機共用
comment = All Printers
path = /var/tmp
printable = Yes
create mask = 0600
browseable = No
[print$]
comment = Printer Drivers
path = /var/lib/samba/drivers
write list = root
create mask = 0664
directory mask = 0775
註釋:[global]
samba伺服器的全局設置,對整個伺服器有效。
workgroup
語法:workgtoup = <工作組群>;
預設:workgroup = MYGROUP
說明:設定 Samba Server 的工作組
例:workgroup = workgroup 和WIN2000S設為一個組,可在網上鄰居可中看到共用。
server string
語法:server string = <說明>;
預設:sarver string = Samba Server
說明:設定 Samba Server 的註釋
其他:支持變數 t%-訪問時間 I%-客戶端IP m%-客戶端主機名 M%-客戶端功能變數名稱 S%-客戶端用戶名
例:server string = this is a Samba Server 設定出現在Windows網上鄰居的 Samba Server 註釋為 this is a Samba Server
hosts allow
語法:hosts aoolw = <IP地址>; ...
預設:; host allow = 192.168.1. 192.168.2. 127.
說明:限制允許連接到 Samba Server 的機器,多個參數以空格隔開。表示方法可以為完整的IP地址,如 192.168.0.1 網段,如 192.168.0.
例:hosts allow = 192.168.1. 192.168.0.1 表示允許 192.168.1 網段的機器網址為 192.168.0.1 的機器連接到自己的 samba server
printcap name
語法:printcap name = <印表機配置文件>;
預設:printcap name = /etc/printcap
說明:設定 samba srever 印表機的配置文件
例:printcap name = /etc/printcap 設定 samba srever 參考 /etc/printcap 檔的印表機設定。
load printers
語法:load printers = <yes/no>;
預設:load printers = yes
說明:是否在開啟 samba server 時即共用印表機。
printing
語法:printing = <印表機類型>;
預設:printing = lprng
說明:設定 samba server 印表機所使用的類型,為目前所支持的類型。
guest account
語法:guert account = <帳戶名稱>;
預設:guert account = pcguest
說明:設定訪問 samba server 的來賓帳戶(即訪問時不用輸入用戶名和密碼的帳戶),若設為pcguest的話則為預設為"nobody"用戶。
例:guert account = andy 設定設定訪問 samba server 的來賓帳戶以andy用戶登陸,則此登陸帳戶享有andy用戶的所有許可權。
log file
語法:log file = <日誌文件>;
預設:log file = /var/log/samba/%m.log
說明:設定 samba server 日誌文件的儲存位置和文件名(%m代表客戶端主機名)
max log size
語法:max log size = <??KB>;
預設:max log size = 0
說明:設定日子文件的最大容量,單位KB 這裡的預設值0代表不做限制。
security
語法:security = <等級>;
預設:security = user
說明:設定訪問 samba server 的安全級別共有四種:
share---不需要提供用戶名和密碼。
user----需要提供用戶名和密碼,而且身份驗證由 samba server 負責。
server--需要提供用戶名和密碼,可指定其他機器(winNT/2000/XP)或另一臺 samba server作身份驗證。
domain--需要提供用戶名和密碼,指定winNT/2000/XP域伺服器作身份驗證。
password server
語法:password server = <IP地址/主機名>;
預設:password server = <NT-Server-Name>;
說明:指定某台伺服器(包括windows 和 linux)的密碼,作為用戶登入時驗證的密碼。
其他:此項需配合 security = server時,才可設定本參數。
password level
語法:password level = <位數>;
username level = <位數>;
預設:password level = 8
username level
username level = 8
說明:設定用戶名和密碼的位數,預設為8位字元。
encrypt passwords
語法:encrypt passwords = <yes/no>;
預設:encrypt passwords = yse
說明:設定是否對samba的密碼加密。
smb passwd file
語法:smb passwd file = <密碼文件>;
預設:smb passwd file = /etc/samba/smbpasswd
說明:設定samba的密碼文件。
local master
語法:local master = <yes/no>;
預設:local master = no
說明:設定 samba server 是否要擔當LMB角色(LMB負責收集本地網路的Browse List資源),通常無特殊原因設為no
os level
語法:os level = <數字>;
預設:os level = 33
說明:設定 samba server的os level. os level從 0 到 255 . winNT的os level為33, win95/98的os level 是 1 .若要拿samba server 當LMB或DMB則它的os level至少要大於NT的33以上。
domain master
語法:domain master = <yes/no>;
預設:domain master = yes
說明:設定 samba server 是否要擔當DMB角色(DMB會負責收集其他子網的Browse List資源),通常無特殊原因設為no
preferred master
語法:preferred master = <yes/no>;
預設:preferred master = yes
說明:設定 samba server 是否要擔當PDC角色(PDC會負責追蹤網路帳戶進行的一切變更),通常無特殊原因設為no,(同一網段內不可有兩個PDC,他們會每5分鐘搶主控權一次)
wins support
語法:wins support = <yes/no>;
預設:wins support = yes
說明:設定samba server 是否想網路提供WINS服務,通常無特殊原因設為no。除非所處網路上沒有主機提供WINS服務且需要此台samba server提供WINS服務是才設yes,其他 wins support 和 wins server 只能選擇一個
wins server
語法:wins server = <IP地址>;
預設:wins server = w.x.y.z
說明:設定samba server 是否要使用別台主機提供的WINS服務,通常無特殊原因設為no。除非所處網路上有一臺主機提供WINS服務才要設yes,其他 wins support 和 wins server
例:wins server = 192.168.0.1 表示samba server要使用192.168.0.1提供的WINS服務
#============================== Share Definitions =============================
[homes]
comment = Home Directories
browseable = no
writable = yes
valid users = %S
使用者本身的"家"目錄,當使用者以samba使用者身份登入samba server 後,samba server 底下會看到自己的家目錄,目錄名稱是使用者自己的帳號。
[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no
writable = no
printable = yes
設置了samba伺服器中列印共用資源的屬性,samba伺服器除了可以提供文件共用,還可以提供列印共用。
[分享的資源名稱]
<指令1>; = (參數)
<指令2>; = (參數)
要提供分享資源時,須先把欲分享的資源以 [ ] 符號括住,底下通常會帶指令和參數來表示此資源的設定和存取許可權等,詳情如下:
comment---------註釋說明
path------------分享資源的完整路徑名稱,除了路徑要正確外,目錄的許可權也要設對
browseable------是yes/否no在瀏覽資源中顯示共用目錄,若為否則必須指定共用路徑才能存取
printable-------是yes/否no允許列印
hide dot ftles--是yes/否no隱藏隱藏文件
public----------是yes/否no公開共用,若為否則進行身份驗證(只有當security = share 時此項才起作用)
guest ok--------是yes/否no公開共用,若為否則進行身份驗證(只有當security = share 時此項才起作用)
read only-------是yes/否no以只讀方式共用當與writable發生衝突時也writable為準
writable--------是yes/否no不以只讀方式共用當與read only發生衝突時,無視read only
vaild users-----設定只有此名單內的用戶才能訪問共用資源(拒絕優先)(用戶名/@組名)
invalid users---設定只有此名單內的用戶不能訪問共用資源(拒絕優先)(用戶名/@組名)
read list-------設定此名單內的成員為只讀(用戶名/@組名)
write list------若設定為只讀時,則只有此設定的名單內的成員才可作寫入動作(用戶名/@組名)
create mask-----建立文件時所給的許可權
directory mask--建立目錄時所給的許可權
force group-----指定存取資源時須以此設定的群組使用者進入才能存取(用戶名/@組名)
force user------指定存取資源時須以此設定的使用者進入才能存取(用戶名/@組名)
allow hosts-----設定只有此網段/IP的用戶才能訪問共用資源
allwo hosts = 網段 except IP
deny hosts------設定只有此網段/IP的用戶不能訪問共用資源
allow hosts=本網段指定IP指定IP
deny hosts=指定IP本網段指定I
3:samba共用目錄配置實例
1:允許匿名用戶讀取/jishu目錄
[root@localhost ~]# vi /etc/samba/smb.conf
在末尾添加:
[jishu]
comment=jishu
path=/jishu
public=yes
read only=yes
2:允許匿名用戶讀寫/jishu目錄
[root@localhost ~]# vi /etc/samba/smb.conf
在末尾添加:
[jishu]
comment=jishu
path=/jishu
guest ok=yes
writable=yes
3:只有用戶zhangsan和組jishu的用戶訪問/jishu目錄
[jishu]
comment=jishu
path=/jishu
valid users=@jishu,zhangsan
public=no
create mask=0765
broseable=no
4:只允許用戶zhangsan和組技術的用戶讀寫/jishu目錄
[jishu]
comment=jishu
path=/jishu
valid users=d@jishu,zhangsan
public=no
writable=yes
三:samba伺服器配置實例1:share級別的samba伺服器配置
1:在伺服器端安裝軟體包
[root@localhost ~]# yum -y install samba samba-client
2:創建共用目錄
[root@localhost ~]# mkdir /jishu
[root@localhost ~]# chmod -R 757 /jishu
3:編輯配置文件
(1) share級別的samba伺服器配置
不要提供用戶名和密碼即可訪問
[root@localhost ~]# vi /etc/samba/smb.conf
[global]
workgroup = workgroup
security = user
map to guest = Bad User \\新版的samba已經取消了share級別的服務,需要此參數
netbios name = rhel
passdb backend = tdbsam
max log size = 50000
log file =/var/log/samba/log.%m
[jishu]
comment=jishu
path=/jishu
public=yes
writable=yes
4:設置/jishu目錄的selinux的布爾值或禁用selinux
[root@localhost ~]# semanage fcontext -a -t samba_share_t '/jishu(/.*)?'
[root@localhost ~]# restorecon -vvFR /jishu
restorecon reset /jishu context unconfined_u:object_r:default_t:s0->system_u:object_r:samba_share_t:s0
restorecon reset /jishu/aaaaa context unconfined_u:object_r:default_t:s0->system_u:object_r:samba_share_t:s0
5:設置firewalld防火牆(設置防火牆策略或關閉防火牆)
[root@localhost ~]#firewall-cmd --permanent --zone=public --add-service=samba
[root@localhost ~]#firewall-cmd --reload
6:開啟服務
[root@localhost ~]# systemctl start smb
[root@localhost ~]# systemctl start nmb
7:windows客戶端測試
運行中直接輸入\\伺服器的IP
8:linux客戶端
(1) 安裝客戶端軟體包
[root@localhost ~]# yum -y install samba-client
(2) 顯示samba伺服器上的共用資源
[root@localhost ~]# smbclient -L192.168.10.202
Enter root's password:
Domain=[WORKGROUP] OS=[Windows 6.1] Server=[Samba 4.4.4]
Sharename Type Comment
--------- ---- -------
jishu Disk jishu
IPC$ IPC IPC Service (Samba 4.4.4)
Domain=[WORKGROUP] OS=[Windows 6.1] Server=[Samba 4.4.4]
Server Comment
--------- -------
RHEL Samba 4.4.4
Workgroup Master
--------- -------
WORKGROUP
(3) 掛載
[root@localhost ~]# mkdir /mnt/jishu
[root@localhost ~]# mount -o username=root //192.168.10.202/jishu /mnt/jishu
Password for root@//192.168.10.202/jishu: \\空密碼
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# cd /mnt/jishu
[root@localhost jishu]# ls
新建文件夾 新建文本文檔.txt
四:samba伺服器配置實例2:user級別的samba伺服器配置
1:在伺服器端安裝軟體包
[root@localhost ~]# yum -y install samba samba-client
3:創建系統用戶
[root@localhost ~]# useradd zhangsan
[root@localhost ~]# passwd zhangsan
Changing password for user zhangsan.
New password:
BAD PASSWORD: The password is a palindrome
Retype new password:
passwd: all authentication tokens updated successfully.
4:創建samba賬戶
[root@localhost ~]# smbpasswd -a zhangsan
New SMB password:
Retype new SMB password:
Added user zhangsan.
2:創建共用目錄
[root@localhost ~]# mkdir /jishu
[root@localhost ~]# chown -R zhangsan:zhangsan /jishu
3:編輯配置文件
[root@localhost ~]# vi /etc/samba/smb.conf
[global]
workgroup = workgroup
security = user
netbios name = rhel
passdb backend = tdbsam
max log size = 50000
log file =/var/log/samba/log.%m
[jishu]
comment=jishu
path=/jishu
public=no
writable=yes
write list = @jishuzu,zhangsan
4:設置/jishu目錄的selinux的布爾值或禁用selinux
[root@localhost ~]# semanage fcontext -a -t samba_share_t '/jishu(/.*)?'
[root@localhost ~]# restorecon -vvFR /jishu
restorecon reset /jishu context unconfined_u:object_r:default_t:s0->system_u:object_r:samba_share_t:s0
restorecon reset /jishu/aaaaa context unconfined_u:object_r:default_t:s0->system_u:object_r:samba_share_t:s0
5:設置firewalld防火牆(設置防火牆策略或關閉防火牆)
[root@localhost ~]#firewall-cmd --permanent --zone=public --add-service=samba
[root@localhost ~]#firewall-cmd --reload
6:開啟服務
[root@localhost ~]# systemctl start smb
[root@localhost ~]# systemctl enable smb
[root@localhost ~]# systemctl start nmb
[root@localhost ~]# systemctl enable nmb
7:windows客戶端測試
運行中直接輸入\\伺服器的IP
測試讀寫許可權
8:linux客戶端
(1) 安裝客戶端軟體包
[root@localhost ~]# yum -y install samba-client
(2) 顯示samba伺服器上的共用資源
[root@localhost ~]# smbclient –L 192.168.10.202
Enter root's password:
Domain=[WORKGROUP] OS=[Windows 6.1] Server=[Samba 4.4.4]
Sharename Type Comment
--------- ---- -------
jishu Disk jishu
IPC$ IPC IPC Service (Samba 4.4.4)
Domain=[WORKGROUP] OS=[Windows 6.1] Server=[Samba 4.4.4]
Server Comment
--------- -------
RHEL Samba 4.4.4
Workgroup Master
--------- -------
WORKGROUP
(3) 以zhangsan的身份登錄samba伺服器
[root@localhost ~]# smbclient //192.168.10.202/jishu -U zhangsan
Enter zhangsan's password: \\輸入zhangsan的密碼
Domain=[WORKGROUP] OS=[Windows 6.1] Server=[Samba 4.4.4]
smb: \> ls
. D 0 Wed Mar 29 09:59:02 2017
.. DR 0 Wed Mar 29 09:50:22 2017
新建文件夾 D 0 Wed Mar 29 09:59:02 2017
95427048 blocks of size 1024. 92237564 blocks available
smb: \> exit
(4) 掛載
[root@localhost ~]# mkdir /mnt/jishu
[root@localhost ~]# mount -o username=zhangsan,password=aaa //192.168.10.202/jishu /mnt/jishu
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# cd /mnt/jishu
[root@localhost jishu]# ls
新建文件夾 新建文本文檔.txt
[root@localhost jishu]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/rhel-root 52403200 3162356 49240844 7% /
devtmpfs 917760 0 917760 0% /dev
tmpfs 933632 140 933492 1% /dev/shm
tmpfs 933632 9692 923940 2% /run
tmpfs 933632 0 933632 0% /sys/fs/cgroup
/dev/sda1 1038336 176556 861780 18% /boot
/dev/mapper/rhel-home 49250820 41208 49209612 1% /home
tmpfs 186728 28 186700 1% /run/user/0
/dev/sr0 3704296 3704296 0 100% /media/cdrom
//192.168.10.201/jishu 95427048 3212024 92215024 4% /mnt/jishu
五:同時使用user級別和share級別
訪問jishu目錄需要驗證;訪問it目錄不需要驗證
[root@localhost ~]# vi /etc/samba/smb.conf
[global]
workgroup = workgroup
security = user
netbios name = rhel
map to guest = Bad User
passdb backend = smbpasswd
max log size = 50000
log file =/var/log/samba/log.%m
encrypt passwords = yes
smb passwd file = /etc/samba/smbpasswd
username map = /etc/samba/smbusers
[jishu]
comment=jishu
path=/jishu
public=no
writable=yes
[it]
comment=it
path=/it
public=yes
writable=yes
[root@localhost ~]# systemctl restart smb
六:samba伺服器高級配置
1:設置samba加密口令
(1) 確保samba伺服器為user安全級別
[root@localhost jishu]# vi /etc/samba/smb.conf
[global]
workgroup = workgroup
security = user
netbios name = rhel
passdb backend = smbpasswd
max log size = 50000
log file =/var/log/samba/log.%m
encrypt passwords = yes
smb passwd file = /etc/samba/smbpasswd
(2) 重啟samba服務
[root@localhost jishu]# systemctl restart smb
[root@localhost jishu]# systemctl restart nmb
(3) 創建samba賬戶
[root@localhost jishu]# useradd -s /sbin/nologin lisi
[root@localhost jishu]# smbpasswd -a lisi
New SMB password:
Retype new SMB password:
Added user lisi.
[root@localhost jishu]# cat /etc/samba/smbpasswd
lisi:1002:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:E24106942BF38BCF57A6A4B29016EFF6:[U ]:LCT-58DB208C:
2:映射samba用戶賬戶
(1) 編輯配置文件
[root@localhost ~]# vi /etc/samba/smb.conf
[jishu]
comment=jishu
path=/jishu
public=no
writable=yes
username map = /etc/samba/smbusers
(2) 創建用戶賬戶映射文件
[root@localhost ~]# vi /etc/samba/smbusers
lisi=lisi2
(3) 重啟服務
[root@localhost ~]# systemctl restart smb
[root@localhost ~]# systemctl restart nmb
(4) 客戶端測試
[root@localhost jishu]# smbclient //192.168.10.202/jishu -U lisi2
Enter lisi2's password:
Domain=[WORKGROUP] OS=[Windows 6.1] Server=[Samba 4.4.4]
smb: \> ls
. D 0 Wed Mar 29 09:59:02 2017
.. DR 0 Wed Mar 29 09:50:22 2017
新建文件夾 D 0 Wed Mar 29 09:59:02 2017
95427048 blocks of size 1024. 92214644 blocks available
七:管理samba伺服器
1:顯示當前連接報告
使用smbstatus命令可以顯示當前連接報告
[root@localhost ~]# smbstatus -b
Samba version 4.4.4
PID Username Group Machine Protocol Version Encryption Signing
----------------------------------------------------------------------------------------------------------------------------------------
54463 lisi lisi 192.168.10.10 (ipv4:192.168.10.10:49277) SMB2_10 - -
54473 lisi lisi 192.168.10.202 (ipv4:192.168.10.202:50954) NT1
2:管理samba用戶資料庫
使用pdbedit命令可以管理SAM資料庫,中的用戶賬戶。
pdbedit命令選項含義:
-L:列出所有在samba用戶資料庫中的用戶賬戶
-u:指定使用的用戶名
-v:啟用冗長列表格式
-h:指定用戶的主目錄網路路徑
例:列出所有samba用戶資料庫的賬戶
[root@localhost ~]# pdbedit -L
lisi:1002:
例:創建samba用戶賬戶wangwu(可以用wangwu登錄samba進行測試)
[root@localhost ~]# useradd -s /sbin/nologin wangwu
[root@localhost ~]# pdbedit -a -u wangwu
[root@localhost ~]# pdbedit -L
lisi:1002:
wangwu:1003: