在FTP協(xié)議下使用vsftp進行文件傳,也可以方便從linux傳輸文件到windos藻三,但是這個畢竟是一個主要用來傳輸文件的工具蜓耻,而不是文件共享的工具(不能直接修改文件)。下面介紹一下一個專業(yè)的用于文件分享的軟件
Samba是一款用來在Windows和Linux下共享文件的一款工具,他使用TCP的139號端口
Samba服務的配置文件位于/etc/samba
他的配置文件分為兩部分,全局配置參數(shù)和區(qū)域配置參數(shù)
服務建立
我在centos7基礎設置安裝下下發(fā)現(xiàn)已經(jīng)默認裝好了
yum -y install samba
[root@centos7 samba]# uname -a
Linux centos7 3.10.0-514.el7.x86_64 #1 SMP Tue Nov 22 16:42:41 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
[root@centos7 samba]# pwd
/etc/samba
[root@centos7 samba]# rpm -qa | grep samba
samba-libs-4.4.4-9.el7.x86_64
samba-4.4.4-9.el7.x86_64
samba-common-4.4.4-9.el7.noarch
samba-client-libs-4.4.4-9.el7.x86_64
samba-common-libs-4.4.4-9.el7.x86_64
samba-common-tools-4.4.4-9.el7.x86_64
[root@centos7 samba]# grep -Ev '^$|^[#;]' smb.conf.example > smb.conf
配置
1.配置共享資源 vi /etc/samba/smb.conf
2.創(chuàng)建用于訪問共享資源的賬戶信息samba賬戶 pdbedit -a -u samba
3.重啟動 systemctl restart smb
4.測試 ubuntu&windows10
[root@centos7 samba]# 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
[sam-data]
comment = Do not arbitrarily modify the database file
path = /home/samba
public = no
writable = yes
[root@centos7 samba]# useradd samba
[root@centos7 samba]# pdbedit -a -u samba
new password:
retype new password:
Unix username: samba
NT username:
Account Flags: [U ]
User SID: S-1-5-21-1514789427-945433464-1398532984-1000
Primary Group SID: S-1-5-21-1514789427-945433464-1398532984-513
Full Name:
Home Directory: \\centos7\samba
HomeDir Drive:
Logon Script:
Profile Path: \\centos7\samba\profile
Domain: CENTOS7
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: Tue, 23 Jul 2019 15:05:30 CST
Password can change: Tue, 23 Jul 2019 15:05:30 CST
Password must change: never
Last bad password : 0
Bad password count : 0
root@ubuntus:~# apt install cifs-utils
root@ubuntus:~# cat auth.smb
username=samba
password=1
domain=MYGROUP
root@ubuntus:~# chmod 600 auth.smb
root@ubuntus:/# cat /etc/fstab
UUID=92570294-99b9-11e9-b465-000c29aeee2d / ext4 defaults 0 0
/swap.img none swap sw 0 0
//192.168.0.112/sam-data /mnt cifs credentials=/root/auth.smb 0 0
相對于NFS來說,samba的配置還是用點多挨厚,只在Linux下文件共享的情況下NFS不要太方便!
NFS的建立
yum install nfs-utils
mkdir /nfsfile #nfs的共享目錄
chmod -Rf 777 /nfsfile/
echo 'nfs test'> /nfsfile/nfstest
編寫nfs主配置文件
[alex@centos7 ~]$ cat /etc/exports
/nfsfile *(rw,sync,root_squash)
#共享目錄的路徑 允許訪問的NFS客戶端(共享權限參數(shù))
用于配置 NFS 服務程序配置文件的共享參數(shù)
參數(shù) | 作用 |
---|---|
ro | 只讀 |
rw | 讀寫 |
root_squash | 當 NFS 客戶端以 root 管理員訪問時列吼,映射為 NFS 服務器的匿名用戶 |
no_root_squash | 當 NFS 客戶端以 root 管理員訪問時幽崩,映射為 NFS 服務器的 root 管理員 |
all_squash | 無論 NFS 客戶端使用什么賬戶訪問,均映射為 NFS 服務器的匿名用戶 |
sync | 同時將數(shù)據(jù)寫入到內(nèi)存與硬盤中寞钥,保證不丟失數(shù)據(jù) |
async | 優(yōu)先將數(shù)據(jù)保存到內(nèi)存,然后再寫入硬盤陌选;這樣效率更高理郑,但可能會丟失數(shù)據(jù) |
啟動和啟用 NFS 服務程序
在使用 NFS 服務進行文件共享之前蹄溉,需要使用 RPC(Remote Procedure Call,遠程過程調(diào)用)服務將 NFS 服務器的 IP 地址和端口號等信息發(fā)送給客戶端您炉。因此柒爵,在啟動 NFS 服務之前,還需要順帶重啟并啟用 rpcbind
服務程序赚爵,并將這兩個服務一并加入開機啟動項中
systemctl restart rpcbind
systemctl enable rpcbind
systemctl start nfs-server
systemctl enable nfs-server
測試
在客戶機上首先要裝有nfsyum -y install nfs-utils rpcbind
mount -t nfs 192.168.0.102:/nfsfile/ /mnt/
我們可以使用showmount查看nfs的信息
[root@centos7 /]# showmount -e 192.168.0.102
Export list for 192.168.0.102:
/nfsfile *
[root@centos7 /]# showmount -v
showmount for 1.3.0
[root@centos7 /]# mount -t nfs 192.168.0.102:/nfsfile/ /mnt/
[root@centos7 /]# ll /mnt/
total 4
-rw-r--r--. 1 nfsnobody nfsnobody 10 Jul 23 21:38 nfstest
[root@centos7 /]# cat /mnt/nfstest
nfs test
[root@centos7 /]# echo '192.168.0.102:/nfsfile /mnt nfs defaults 0 0' >> /etc/fstab
autofs自動掛載服務
這里還要介紹一下這個autofs棉胀。把這些遠程掛載點寫入/etc/fstab
的確可行,但是如果機器上掛載點太多也會導致一定的浪費冀膝,autofs的作用就是檢測到用戶需要使用了才會進行掛載唁奢。autofs有著配置文件/etc/auto.master
,引導副配置文件/etc/auto.misc
窝剖。
PS:主文件的掛載點是實際掛載點的上一級目錄
yum install autofs
echo '/media /etc/auto.misc' >> /etc/auto.master
echo "iso -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom" >> /etc/auto.misc
echo " nfs -type=nfs4,rw,sync 192.168.0.102:/nfsfile" >> /etc/auto.misc
systemctl start autofs
systemctl enable autofs
實際使用時會發(fā)現(xiàn)我們查看掛載點時沒有被掛載上麻掸,但是進入掛載點時發(fā)現(xiàn)有文件
PS:
如何清除Windows共享登錄的用戶名密碼
Ubuntu下的NFS共享目錄以及掛載(mount)問題
使用Samba或NFS實現(xiàn)文件共享
shell實現(xiàn)開機自動掛載本地YUM倉庫程序
#!/bin/bash
#自動搭建yum本地倉庫
#
cdrom () {
mount /dev/cdrom /media/cdrom &> /dev/null
[ $? -eq 0 ] && echo "掛載成功"
}
[ -d /media/cdrom ] || mkdir /media/cdrom
mount | grep -q /dev/sr0
if [ $? -eq 0 ]
then
umount /dev/sr0
cdrom
else
cdrom
fi
[ -d /etc/yum.repos.d/bak ] || mkdir /etc/yum.repos.d/bak
ls -l /etc/yum.repos.d/ | grep *repo > /dev/null
if [ $? -ne 0 ]
then
echo "正在移動文件到目錄下"
mv /etc/yum.repos.d/*repo bak
else
echo "文件已經(jīng)移動目錄!"
fi
[ -e /etc/yum.repos.d/centos-media.repo ] || echo "[media]
name=CentOS-$releasever - Media
baseurl=file:///media/cdrom/
gpgcheck=0
enabled=1" > /etc/yum.repos.d/centos-media.repo
echo "清除yum緩存"
yum clean all &> /dev/null
echo "YUM已經(jīng)搭建完成"
echo -n "共有軟件包:"
yum repolist | tail -1 | awk -F':' '{print $2}'
cat /etc/fstab | grep /dev/sr0 &> /dev/null
if [ $? -ne 0 ]
then
echo "正在寫入開機自動掛載光盤"
echo "/dev/sr0 /media/cdrom iso9660 defaults 0 0 ">> /etc/fstab
fi