公司辦公系統采用windows系統,有大量的數據需要共享。其中需要把辦公數、生產數據分開保存。
我打算采用Samba管理,便有以下的使用過程。在此過程中有參閱以下samba文檔:
http://www.mamicode.com/info-detail-2306907.html
https://www.jianshu.com/p/f2fd9e88077c
https://www.cnblogs.com/Ericshang/p/9070978.html
https://www.cnblogs.com/rusking/p/3993148.html
https://blog.csdn.net/QTM_Gitee/article/details/84060845#3__Samba__288
https://xz.aliyun.com/t/5004#toc-16
https://www.cnblogs.com/fatt/p/5856892.html
概念:
SRV:服務器定位資源記錄,要使活動目錄正常工作,DNS必須支持SRV。活動目錄客戶端和域控制器使用SRV記錄決定域控制器的ip地址。使用SRV記錄決定域控制器的ip地址
samba簡介
Samba,是種用來讓UNIX系列的操作系統與微軟Windows操作系統的SMB/CIFS(Server Message Block/Common Internet File System)網絡協定做連結的自由軟件。
目前samba不僅可存取及分享SMB的資料夾及打印機,本身還可以整合入Windows Server的網域,扮演為網域控制站(Domain Controller)以及加入Active Directory成員。簡而言之,此軟件在Windows與UNIX系列OS之間搭起一座橋梁,讓兩者的資源可互通有無。
1.基礎准備:
A .修改hosts: # vim /etc/hosts
B. 修改dns:# vim /etc/resolv.conf
C.修改selinux : # vim /etc/sysconfig/selinux
修改內存中設定,讓其立即生效: setenforce 0
D. 修改防火牆:# systemctl stop firewalld && systemctl disable firewalld
2. yum安裝samba所需軟件:
yum -y install pam_krb5* krb5-libs* krb5-workstation* krb5-devel* samba samba-winbind* samba-client* samba-swat*
安裝完成后,請啟動相關服務:
systemctl start smb nmb
systemctl start winbind
3. 配置文件說明:
kerberos :
配置文件:# /etc/krb5.conf
作用:一種網絡認證協議,其設計目標是通過客戶端+KDC+服務端提供強大的認證服務。
samba:
配置文件:# /etc/samba/smb.conf
作用:samba的配置文件,通過該文件來管理文件共享、用戶權限,samba服務設置、與winbind交互等。
winbind:
配置文件:
作用:Samba作為域成員運行,則winbindd服務將負責向域操作系統(AD)提供有關域用戶和組的信息。
winbindd服務為用戶和組提供唯一的ID給Linux,必須在samba配置文件(/etc/samba/smb.conf)中配置ID映射。
samba winbind包里包含上面說的做映射的服務庫(NSS library)和客戶端工具。
samba winbind clients包里只含有客戶端工具(wbinfo , ntlm_auth)。
nssiwtch:
配置文件:# /etc/nsswitch.conf
作用: Nsswitch.conf文件通常控制着用戶(在passwd中)、口令(在shadow中)、主機IP和組信息(在group中)的搜索。
PAM模塊接口(模塊管理組)
PAM為認證任務提供四種類型可用的模塊接口,它們分別提供不同的認證服務:
單個PAM庫模塊可以提供給任何或所有模塊接口使用。例如,pam_unix.so提供給四個模塊接口使用
配置文件: /etc/pam.d/system-auth
作用: 用戶身份認證
配置文件: /etc/pam.d/password-auth
作用: 密碼認證
√ auth |
- 認證模塊接口,如驗證用戶身份、檢查密碼是否可以通過,並設置用戶憑據 |
√ account |
- 賬戶模塊接口,檢查指定賬戶是否滿足當前驗證條件,如用戶是否有權訪問所請求的服務,檢查賬戶是否到期 |
√ password |
- 密碼模塊接口,用於更改用戶密碼,以及強制使用強密碼配置 |
√ session |
- 會話模塊接口,用於管理和配置用戶會話。會話在用戶成功認證之后啟動生效 |
配置文件: /etc/security/pam_winbind.conf
作用: 將AD域中用戶連接samba服務器后,限制在samba服務器中的 / home目錄對應的AD用戶目錄下:
例如AD用戶小明連接到samba后,將權限限制在samba中的/home/xiaoming/中(共享目錄除外)
3. 與AD同步時間:
ntpdate 192.168.8.188
4.具體配置:
# /etc/samba/smb.conf(只顯示全局設置)
[global]
workgroup = SILANIC
realm = SILANIC.CN
security = ads
idmap config * : range = 16777216-33554431
template shell = /bin/bash
template homedir = /home/%D/%U
winbind enum users = yes
winbind enum groups =yes
winbind use default domain = true
winbind offline logon = true
server string = PT2CTD
log file =/var/log/samba/log.%m
max log size = 50
passdb backend = tdbsam
encrypt passwords = yes
printing = cups
printcap name = cups
load printers = yes
# /etc/nsswitch.conf (只顯示修改項)
passwd: files winbind
shadow: files winbind
group: files winbind
# /etc/krb5.conf(全部顯示)
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
rdns = false
pkinit_anchors = /etc/pki/tls/certs/ca-bundle.crt
default_realm = SILANIC.CN
default_ccache_name = KEYRING:persistent:%{uid}
[realms]
SILANIC.CN = {
kdc = 172.17.1.11
admin_server = 172.17.1.11
}
[domain_realm]
.example.com = SILANIC.CN
example.com = SILANIC.CN
# /etc/pam.d/system-auth(在末行增加以下內容:)
session required pam_mkhomedir.so
# /etc/pam.d/password-auth(在末行增加以下內容:)
session required pam_mkhomedir.so
# /etc/security/pam_winbind.conf (在末行增加以下內容:)
require_membership_of =S-1-5-21-1111111111-1111111111-1111111111-111
5. 加入AD域:
net ads join -Uadministrator
加入后,請重新服務:
systemctl restart smb
systemctl restart winbind
6.測試winbind
wbinfo -t
wbinfo -u
wbinfo -g
7.測試kerberos
kinit administrator
[root@pt2ctd samba]# kinit administrator
Password for administrator@SILANIC.CN:
[root@pt2ctd samba]#
8. 加入域時各種報錯:
A. 先清理緩存
rm -rf /var/lib/samba/private/secrets.tdb
rm -rf /var/lib/samba/gencache.tdb
B. samba退出域
net ads leave -U cdroot
9.常用命令
A. 重載smbd,nmbd,winbindd的配置,請將reload-config消息類型發送到all目標:
# smbcontrol all reload-config
B.測試samba配置參數:
# testparm /etc/samba/smb.conf
C. 加入AD域命令:
net ads join -U "DOMAIN\administrator"
10.安全防護:
設置SELinux,請在目錄中設置samba_share_t上下文:
# semanage fcontext -a -t samba_share_t "/srv/samba/example(/.*)?"
# restorecon -Rv /srv/samba/example/
打開所需的端口並使用firewall-cmd實用程序重新加載防火牆配置:
# firewall-cmd --permanent --add-service=samba # firewall-cmd --reload
11. samba共享說明
要提供分享資源時,須先把欲分享的資源以 [ ] 符號括住,底下通常會帶指令和參數來表示此資源的設定和存取權限等,詳情如下: 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本網段指定IP