12.1 SAMBA文件共享服务
FTP文件传输服务确实可以让主机之间的文件传输变得简单方便,但是FTP协议的本质是传输文件,而非共享文件。
1991年,当时还在读大学的Tridgwell,为了解决Linux系统与Windows系统之间的文件共享问题,基于SMB协议开发出了SMBServer服务程序。
Samba服务程序 一款开源的文件共享软件,经过简单配置就能够实现Linux系统与Windows系统之间的文件共享工作。
[root@linuxprobe ~ ]# yum install samba Loaded plugins: langpacks, product-id, subscription-manager ………………省略部分输出信息………………
[root@linuxprobe ~]# cat /etc/samba/smb.conf # This is the main Samba configuration file. For detailed information about the
[root@linuxprobe ~]# mv /etc/samba/smb.conf /etc/samba/smb.conf.bak [root@linuxprobe ~]# cat /etc/samba/smb.conf.bak | grep -v "#" | grep -v ";" | grep -v "^$" > /etc/samba/smb.conf [root@linuxprobe ~]# cat /etc/samba/smb.conf
第1步:创建用于访问共享资源的账户信息。
[root@linuxprobe ~]# id linuxprobe uid=1000(linuxprobe) gid=1000(linuxprobe) groups=1000(linuxprobe) [root@linuxprobe ~]# pdbedit -a -u linuxprobe new password:此处输入该账户在Samba服务数据库中的密码 retype new password:再次输入密码进行确认 Unix username: linuxprobe NT username: Account Flags: [U ]
第2步:创建用于共享资源的文件目录
[root@linuxprobe ~]# mkdir /home/database [root@linuxprobe ~]# chown -Rf linuxprobe:linuxprobe /home/database [root@linuxprobe ~]# semanage fcontext -a -t samba_share_t /home/database [root@linuxprobe ~]# restorecon -Rv /home/database restorecon reset /home/database context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:samba_share_t:s0
第3步:设置SELinux服务与策略,使其允许通过Samba服务程序访问普通用户家目录。执行getsebool命令,筛选出所有与Samba服务程序相关的SELinux域策略,根据策略的名称(和经验)选择出正确的策略条目进行开启即可:
[root@linuxprobe ~]# getsebool -a | grep samba samba_create_home_dirs --> off samba_domain_controller --> off samba_enable_home_dirs --> off samba_export_all_ro --> off samba_export_all_rw --> off samba_portmapper --> off samba_run_unconfined --> off samba_share_fusefs --> off samba_share_nfs --> off sanlock_use_samba --> off use_samba_home_dirs --> off virt_sandbox_use_samba --> off virt_use_samba --> off [root@linuxprobe ~]# setsebool -P samba_enable_home_dirs on
第4步:在Samba服务程序的主配置文件中,根据表12-2所提到的格式写入共享信息。
[root@linuxprobe ~]# 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
第5步:Samba服务程序的配置工作基本完毕。接下来重启smb服务(Samba服务程序在Linux系统中的名字为smb)并清空iptables防火墙,然后就可以检验配置效果了。
[root@linuxprobe ~]# systemctl restart smb [root@linuxprobe ~]# systemctl enable smb ln -s '/usr/lib/systemd/system/smb.service' '/etc/systemd/system/multi-user.target.wants/smb.service' [root@linuxprobe ~]# iptables -F [root@linuxprobe ~]# service iptables save iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
12.2 NFS网络文件系统
NFS(网络文件系统)服务可以将远程Linux系统上的文件共享资源挂载到本地主机的目录上,从而使得本地主机(Linux客户端)基于TCP/IP协议,像使用本地主机上的资源那样读写远程Linux系统上的共享文件。
清空NFS服务器上面iptables防火墙的默认策略,以免默认的防火墙策略禁止正常的NFS共享服务。
[root@linuxprobe ~]# iptables -F [root@linuxprobe ~]# service iptables save iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
第2步:在NFS服务器上建立用于NFS文件共享的目录,并设置足够的权限确保其他人也有写入权限。
[root@linuxprobe ~]# mkdir /nfsfile [root@linuxprobe ~]# chmod -Rf 777 /nfsfile [root@linuxprobe ~]# echo "welcome to linuxprobe.com" > /nfsfile/readme
第3步:NFS服务程序的配置文件为/etc/exports,默认情况下里面没有任何内容。我们可以按照“共享目录的路径 允许访问的NFS客户端(共享权限参数)”的格式,定义要共享的目录与相应的权限。
注意,NFS客户端地址与权限之间没有空格。
[root@linuxprobe ~]# vim /etc/exports /nfsfile 192.168.10.*(rw,sync,root_squash)
第4步:启动和启用NFS服务程序。
[root@linuxprobe ~]# systemctl restart rpcbind [root@linuxprobe ~]# systemctl enable rpcbind [root@linuxprobe ~]# systemctl start nfs-server [root@linuxprobe ~]# systemctl enable nfs-server ln -s '/usr/lib/systemd/system/nfs-server.service' '/etc/systemd/system/nfs.target.wants/nfs-server.service'
NFS客户端的配置步骤也十分简单。先使用showmount命令(以及必要的参数,见表12-8)查询NFS服务器的远程共享信息,其输出格式为“共享的目录名称 允许使用客户端地址”。
[root@linuxprobe ~]# showmount -e 192.168.10.10 Export list for 192.168.10.10: /nfsfile 192.168.10.*
然后在NFS客户端创建一个挂载目录。使用mount命令并结合-t参数,指定要挂载的文件系统的类型,并在命令后面写上服务器的IP地址、服务器上的共享目录以及要挂载到本地系统(即客户端)的目录。
[root@linuxprobe ~]# mkdir /nfsfile [root@linuxprobe ~]# mount -t nfs 192.168.10.10:/nfsfile /nfsfile
挂载成功后就应该能够顺利地看到在执行前面的操作时写入的文件内容了。如果希望NFS文件共享服务能一直有效,则需要将其写入到fstab文件中:
[root@linuxprobe ~]# cat /nfsfile/readme welcome to linuxprobe.com [root@linuxprobe ~]# vim /etc/fstab # # /etc/fstab # Created by anaconda on Wed May 4 19:26:23 2017 # # 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=812b1f7c-8b5b-43da-8c06-b9999e0fe48b /boot xfs defaults 1 2 /dev/mapper/rhel-swap swap swap defaults 0 0 /dev/cdrom /media/cdrom iso9660 defaults 0 0 192.168.10.10:/nfsfile /nfsfile nfs defaults 0 0
12.3 AutoFs自动挂载服务
[root@linuxprobe ~]# yum install autofs Loaded plugins: langpacks, product-id, subscription-manager This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register. rhel | 4.1 kB 00:00
子配置文件需要用户自行定义,文件名字没有严格要求,但后缀建议以.misc结束。具体的配置参数如第7行的加粗字所示。
[root@linuxprobe ~]# 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 #
[root@linuxprobe ~]# vim /etc/iso.misc iso -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom [root@linuxprobe ~]# systemctl start autofs [root@linuxprobe ~]# systemctl enable autofs ln -s '/usr/lib/systemd/system/autofs.service' '/etc/systemd/system/multi-user.target.wants/autofs.service'
来源:oschina
链接:https://my.oschina.net/u/4496331/blog/4296743