經過Yum軟件倉庫來安裝Samba服務程序node
[root@zhangjh ~]# yum install samba -y
Samba 配置文件註釋信息較多,爲了便於配置,所以先把主配置文件改個名字,而後使用cat命令讀入主配置文件,再在grep命令後面添加-v參數(反向選擇),分別去掉全部以井號(#)和分號(;)開頭的註釋信息行,python
對於剩餘的空白行可使用^$參數來表示並進行反選過濾,最後把過濾後的可用參數信息經過重定向符覆蓋寫入到原始文件名稱中。linux
[root@zhangjh ~]# mv /etc/samba/smb.conf /etc/samba/smb.conf.bak [root@zhangjh ~]# cat /etc/samba/smb.conf.bak | grep -v "#" | grep -v ";" | grep -v "^$" > /etc/samba/smb.conf [root@zhangjh ~]# cat /etc/samba/smb.conf [global] workgroup = MYGROUP server string = Samba Server Version %v log file = /var/log/samba/log.%m max log size = 50 security = user passdb backend = tdbsam load printers = yes cups options = raw [homes] comment = Home Directories browseable = no writable = yes [printers] comment = All Printers path = /var/spool/samba browseable = no guest ok = no writable = no printable = yes
Samba服務程序中的參數以及做用:數據庫
[global] | #全局參數。 | |
workgroup = MYGROUP | #工做組名稱 | |
server string = Samba Server Version %v | #服務器介紹信息,參數%v爲顯示SMB版本號 | |
log file = /var/log/samba/log.%m | #定義日誌文件的存放位置與名稱,參數%m爲來訪的主機名 | |
max log size = 50 | #定義日誌文件的最大容量爲50KB | |
security = user | #安全驗證的方式,總共有4種 | |
#share:來訪主機無需驗證口令;比較方便,但安全性不好 | ||
#user:需驗證來訪主機提供的口令後才能夠訪問;提高了安全性 | ||
#server:使用獨立的遠程主機驗證來訪主機提供的口令(集中管理帳戶) | ||
#domain:使用域控制器進行身份驗證 | ||
passdb backend = tdbsam | #定義用戶後臺的類型,共有3種 | |
#smbpasswd:使用smbpasswd命令爲系統用戶設置Samba服務程序的密碼 | ||
#tdbsam:建立數據庫文件並使用pdbedit命令創建Samba服務程序的用戶 | ||
#ldapsam:基於LDAP服務進行帳戶驗證 | ||
load printers = yes | #設置在Samba服務啓動時是否共享打印機設備 | |
cups options = raw | #打印機的選項 | |
[homes] | #共享參數 | |
comment = Home Directories | #描述信息 | |
browseable = no | #指定共享信息是否在「網上鄰居」中可見 | |
writable = yes | #定義是否能夠執行寫入操做,與「read only」相反 | |
[printers] | #打印機共享參數 | |
comment = All Printers | ||
path = /var/spool/samba | #共享文件的實際路徑(重要)。 | |
browseable = no | ||
guest ok = no | #是否全部人可見,等同於"public"參數。 | |
writable = no | ||
printable = yes |
配置共享資源:vim
Samba服務程序的主配置文件包括全局配置參數和區域配置參數。安全
全局配置參數用於設置總體的資源共享環境,對裏面的每個獨立的共享資源都有效。區域配置參數則用於設置單獨的共享資源,且僅對該資源有效。服務器
用於設置Samba服務程序的參數以及做用:網絡
參數 | 做用 |
[database] | 共享名稱爲database |
comment = Do not arbitrarily modify the database file | 警告用戶不要隨意修改數據庫 |
path = /home/database | 共享目錄爲/home/database |
public = no | 關閉「全部人可見」 |
writable = yes | 容許寫入操做 |
第1步:建立用於訪問共享資源的帳戶信息。app
在RHEL 7系統中,Samba服務程序默認使用的是用戶口令認證模式(user)。這種認證模式能夠確保僅讓有密碼且受信任的用戶訪問共享資源,並且驗證過程也十分簡單。不過,只有創建帳戶信息數據庫以後,才能使用用戶口令認證模式。另外,Samba服務程序的數據庫要求帳戶必須在當前系統中已經存在,不然日 後建立文件時將致使文件的權限屬性混亂不堪,由此引起錯誤。less
pdbedit命令用於管理SMB服務程序的帳戶信息數據庫,格式爲「pdbedit [選項] 帳戶」。在第一次把帳戶信息寫入到數據庫時須要使用-a參數,之後在執行修改密碼、刪除帳戶等操做時就再也不須要該參數了。
用於pdbedit命令的參數以及做用:
參數 | 做用 |
-a 用戶名 | 創建Samba用戶 |
-x 用戶名 | 刪除Samba用戶 |
-L | 列出用戶列表 |
-Lv | 列出用戶詳細信息的列表 |
[root@zhangjh ~]# pdbedit -a -u jianghua new password: retype new password: Unix username: jianghua NT username: Account Flags: [U ] User SID: S-1-5-21-3165414194-1039364885-2898766718-1000 Primary Group SID: S-1-5-21-3165414194-1039364885-2898766718-513 Full Name: Home Directory: \\zhangjh\jianghua HomeDir Drive: Logon Script: Profile Path: \\zhangjh\jianghua\profile Domain: ZHANGJH Account desc: Workstations: Munged dial: Logon time: 0 Logoff time: Wed, 06 Feb 2036 23:06:39 CST Kickoff time: Wed, 06 Feb 2036 23:06:39 CST Password last set: Thu, 14 Jun 2018 16:58:13 CST Password can change: Thu, 14 Jun 2018 16:58:13 CST Password must change: never Last bad password : 0 Bad password count : 0 Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
第2步:建立用於共享資源的文件目錄。
注意關閉SElinux。
[root@zhangjh ~]# mkdir /home/database [root@zhangjh ~]# chown -Rf jianghua:jianghua /home/database/ [root@zhangjh ~]# setenforce 0
第3步:在Samba服務程序的主配置文件中,寫入共享信息。在原始的配置文件中,[homes]參數爲來訪用戶的家目錄共享信息,[printers]參數爲共享的打印機設備。這兩項若是在從此的工做中不須要,能夠手動刪除。
[root@zhangjh ~]# vim /etc/samba/smb.conf [global] workgroup = MYGROUP server string = Samba Server Version %v log file = /var/log/samba/log.%m max log size = 50 security = user passdb backend = tdbsam load printers = yes cups options = raw [database] comment = Do not arbitrarily modify the database file path = /home/database public = no writable = yes
第4步:重啓Samba 並清空iptables防火牆,而後就能夠檢驗配置效果了。
[root@zhangjh ~]# systemctl restart smb [root@zhangjh ~]# systemctl enable smb ln -s '/usr/lib/systemd/system/smb.service' '/etc/systemd/system/multi-user.target.wants/smb.service' [root@zhangjh ~]# iptables -F [root@zhangjh ~]# service iptables save iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
Windows掛載共享
如今能夠在共享目錄建立文件以及文件夾,能夠修改文件,刪除文件的操做。
Linux掛載共享
linux客戶端安裝支持文件共享服務的軟件包(cifs-utils)。
[root@zhangjh ~]# yum install cifs-utils -y
在Linux客戶端,按照Samba服務的用戶名、密碼、共享域的順序將相關信息寫入到一個認證文件中。
爲了保證不被其餘人隨意看到,最後把這個認證文件的權限修改成僅root管理員纔可以讀寫:
[root@zhangjh ~]# vim auth.smb username=jianghua password=password domain=MYGROUP [root@zhangjh ~]# chmod -Rf 600 auth.smb
在Linux客戶端上建立一個用於掛載Samba服務共享資源的目錄,並把掛載信息寫入到/etc/fstab文件中,以確保共享掛載信息在服務器重啓後依然生效:
[root@zhangjh ~]# mkdir /database [root@zhangjh ~]# vim /etc/fstab # # /etc/fstab # Created by anaconda on Sun May 6 05:50:56 2018 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # /dev/mapper/rhel-root / xfs defaults 1 1 UUID=d33701cc-d80c-40b5-aa87-c07011414e1d /boot xfs defaults 1 2 /dev/mapper/rhel-swap swap swap defaults 0 0 #/dev/md0 /raid_mount ext4 defaults 0 0 #/dev/storage/zjh_dir /root/linshiceshi ext4 defaults 0 0 /dev/cdrom /media/cdrom iso9660 defaults 0 0 //192.168.38.251/database /database cifs credentials=/root/auth.smb 0 0 [root@zhangjh ~]# mount -a
Linux客戶端成功地掛載了Samba服務的共享資源。
進入到掛載目錄/database後就能夠看到Windows系統訪問Samba服務程序時留下來的文件了(即文件1111.txt)。也能夠對文件進行編輯,刪除操做。
[root@zhangjh ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/rhel-root 18G 3.1G 15G 18% / devtmpfs 909M 0 909M 0% /dev tmpfs 918M 80K 918M 1% /dev/shm tmpfs 918M 8.9M 909M 1% /run tmpfs 918M 0 918M 0% /sys/fs/cgroup /dev/sr0 3.5G 3.5G 0 100% /media/cdrom /dev/sda1 497M 119M 379M 24% /boot //192.168.38.251/database 18G 3.1G 15G 18% /database [root@zhangjh ~]# cd /database/ [root@zhangjh database]# ls 新建文件夾 [root@zhangjh database]# cd 新建文件夾/ [root@zhangjh 新建文件夾]# ls 1111.txt [root@zhangjh 新建文件夾]# cat 1111.txt 111111 [root@zhangjh 新建文件夾]#
NFS(網絡文件系統)服務能夠將遠程Linux系統上的文件共享資源掛載到本地主機的目錄上,從而使得本地主機(Linux客戶端)基於TCP/IP協議,像使用本地主機上的資源那樣讀寫遠程Linux系統上的共享文件。
安裝NFS軟件包:
[root@zhangjh ~]# yum install nfs-utils -y
第1步:清空NFS服務器上面iptables防火牆的默認策略,以避免默認的防火牆策略禁止正常的NFS共享服務。
[root@zhangjh ~]# iptables -F [root@zhangjh ~]# service iptables save iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
第2步:在NFS服務器上創建用於NFS文件共享的目錄,並設置足夠的權限確保其餘人也有寫入權限。
[root@zhangjh ~]# mkdir /nfsfile [root@zhangjh ~]# chmod -Rf 777 /nfsfile/ [root@zhangjh ~]# echo "welcome to nfspublic files" > /nfsfile/readme
第3步:NFS服務程序的配置文件爲/etc/exports,默認狀況下里面沒有任何內容。咱們能夠按照「共享目錄的路徑 容許訪問的NFS客戶端(共享權限參數)」的格式,定義要共享的目錄與相應的權限
用於配置NFS服務程序配置文件的參數:
參數 | 做用 |
ro | 只讀 |
rw | 讀寫 |
root_squash | 當NFS客戶端以root管理員訪問時,映射爲NFS服務器的匿名用戶 |
no_root_squash | 當NFS客戶端以root管理員訪問時,映射爲NFS服務器的root管理員 |
all_squash | 不管NFS客戶端使用什麼帳戶訪問,均映射爲NFS服務器的匿名用戶 |
sync | 同時將數據寫入到內存與硬盤中,保證不丟失數據 |
async | 優先將數據保存到內存,而後再寫入硬盤;這樣效率更高,但可能會丟失數據 |
[root@zhangjh ~]# vim /etc/exports /nfsfile 192.168.38.*(rw,sync,root_squash)
第4步:啓動和啓用NFS服務程序。
因爲在使用NFS服務進行文件共享以前,須要使用RPC(Remote Procedure Call,遠程過程調用)服務將NFS服務器的IP地址和端口號等信息發送給客戶端。所以,在啓動NFS服務以前,還須要順帶重啓並啓用rpcbind服務程序,並將這兩個服務一併加入開機啓動項中。
[root@zhangjh ~]# systemctl restart rpcbind.service [root@zhangjh ~]# systemctl enable rpcbind.service [root@zhangjh ~]# systemctl start nfs-server [root@zhangjh ~]# systemctl enable nfs-server ln -s '/usr/lib/systemd/system/nfs-server.service' '/etc/systemd/system/nfs.target.wants/nfs-server.service'
第5步:linux客戶端配置
使用showmount命令(以及必要的參數)查詢NFS服務器的遠程共享信息,其輸出格式爲「共享的目錄名稱 容許使用客戶端地址」。
showmount命令中可用的參數以及做用:
參數 | 做用 |
-e | 顯示NFS服務器的共享列表 |
-a | 顯示本機掛載的文件資源的狀況NFS資源的狀況 |
-v | 顯示版本號 |
[root@zhangjh ~]# showmount -e 192.168.38.251 Export list for 192.168.38.251: /nfsfile 192.168.38.*
而後在NFS客戶端建立一個掛載目錄。使用mount命令並結合-t參數,指定要掛載的文件系統的類型,並在命令後面寫上服務器的IP地址、服務器上的共享目錄以及要掛載到本地系統(即客戶端)的目錄。
[root@zhangjh ~]# mkdir /nfsfile [root@zhangjh ~]# mount -t nfs 192.168.38.251:/nfsfile/ /nfsfile/
能夠訪問服務端的共享文件了
[root@zhangjh ~]# cd /nfsfile/ [root@zhangjh nfsfile]# ls readme [root@zhangjh nfsfile]# cat readme welcome to nfspublic files
若是但願NFS文件共享服務能一直有效,則須要將其寫入到fstab文件中:
[root@zhangjh ~]# vim /etc/fstab # /etc/fstab # Created by anaconda on Sun May 6 05:50:56 2018 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # /dev/mapper/rhel-root / xfs defaults 1 1 UUID=d33701cc-d80c-40b5-aa87-c07011414e1d /boot xfs defaults 1 2 /dev/mapper/rhel-swap swap swap defaults 0 0 #/dev/md0 /raid_mount ext4 defaults 0 0 #/dev/storage/zjh_dir /root/linshiceshi ext4 defaults 0 0 /dev/cdrom /media/cdrom iso9660 defaults 0 0 192.168.38.251:/nfsfile /nfsfile nfs defaults 0 0
autofs服務程序是一種Linux系統守護進程,當檢測到用戶試圖訪問一個還沒有掛載的文件系統時,將自動掛載該文件系統。
安裝autofs:
[root@zhangjh ~]# yum install autofs -y
在autofs服務程序的主配置文件中須要按照「掛載目錄 子配置文件」的格式進行填寫。
[root@zhangjh ~]# vim /etc/auto.master # # Sample auto.master file # This is an automounter map and it has the following format # key [ -mount-options-separated-by-comma ] location # For details of the format look at autofs(5). # /media /etc/iso.misc #增長一行 /misc /etc/auto.misc # # NOTE: mounts done from a hosts map will be mounted with the # "nosuid" and "nodev" options unless the "suid" and "dev" # options are explicitly given. # /net -hosts # # Include /etc/auto.master.d/*.autofs # +dir:/etc/auto.master.d # # Include central master map if it can be found using # nsswitch sources. # # Note that if there are entries for /net or /misc (as # above) in the included master map any keys that are the # same will not be seen as the first read key seen takes # precedence. # +auto.master
在子配置文件中,應按照「掛載目錄 掛載文件類型及權限 :設備名稱」的格式進行填寫。
例如,要把光盤設備掛載到/media/iso目錄中,可將掛載目錄寫爲iso,而-fstype爲文件系統格式參數,iso9660爲光盤設備格式,ro、nosuid及nodev爲光盤設備具體的權限參數,/dev/cdrom則是定義要掛載的設備名稱。配置完成後再順手將autofs服務程序啓動並加入到系統啓動項中:
[root@zhangjh ~]# vim /etc/iso.misc iso -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom [root@zhangjh ~]# systemctl start autofs [root@zhangjh ~]# systemctl enable autofs ln -s '/usr/lib/systemd/system/autofs.service' '/etc/systemd/system/multi-user.target.wants/autofs.service'
接下來將發生一件很是有趣的事情。咱們先查看當前的光盤設備掛載狀況,確認光盤設備沒有被掛載上,並且/media目錄中根本就沒有iso子目錄。
可是,咱們卻可使用cd命令切換到這個iso子目錄中,並且光盤設備會被當即自動掛載上。咱們也就能順利查看光盤內的內容了。
[root@zhangjh ~]# df -h df: ‘/media/cdrom’: No such file or directory Filesystem Size Used Avail Use% Mounted on /dev/mapper/rhel-root 18G 3.1G 15G 18% / devtmpfs 909M 0 909M 0% /dev tmpfs 918M 80K 918M 1% /dev/shm tmpfs 918M 8.9M 909M 1% /run tmpfs 918M 0 918M 0% /sys/fs/cgroup /dev/sda1 497M 119M 379M 24% /boot //192.168.38.251/database 18G 3.1G 15G 18% /database [root@zhangjh ~]# cd /media/ [root@zhangjh media]# ls [root@zhangjh media]# cd iso [root@zhangjh iso]# ls -l total 812 dr-xr-xr-x. 4 root root 2048 May 7 2014 addons dr-xr-xr-x. 3 root root 2048 May 7 2014 EFI -r--r--r--. 1 root root 8266 Apr 4 2014 EULA -r--r--r--. 1 root root 18092 Mar 6 2012 GPL dr-xr-xr-x. 3 root root 2048 May 7 2014 images dr-xr-xr-x. 2 root root 2048 May 7 2014 isolinux dr-xr-xr-x. 2 root root 2048 May 7 2014 LiveOS -r--r--r--. 1 root root 108 May 7 2014 media.repo dr-xr-xr-x. 2 root root 774144 May 7 2014 Packages dr-xr-xr-x. 24 root root 6144 May 7 2014 release-notes dr-xr-xr-x. 2 root root 4096 May 7 2014 repodata -r--r--r--. 1 root root 3375 Apr 1 2014 RPM-GPG-KEY-redhat-beta -r--r--r--. 1 root root 3211 Apr 1 2014 RPM-GPG-KEY-redhat-release -r--r--r--. 1 root root 1568 May 7 2014 TRANS.TBL [root@zhangjh iso]# df -h df: ‘/media/cdrom’: No such file or directory Filesystem Size Used Avail Use% Mounted on /dev/mapper/rhel-root 18G 3.1G 15G 18% / devtmpfs 909M 0 909M 0% /dev tmpfs 918M 80K 918M 1% /dev/shm tmpfs 918M 8.9M 909M 1% /run tmpfs 918M 0 918M 0% /sys/fs/cgroup /dev/sda1 497M 119M 379M 24% /boot //192.168.38.251/database 18G 3.1G 15G 18% /database /dev/sr0 3.5G 3.5G 0 100% /media/iso