SAMBA 文件共享服务
1987年,微软公司和英特尔公司共同制定了SMB(Server Messages Block)服务器消息块协议,旨在解决局域网内的文件或打印机等资源的共享问题,这也使得在多个主机之间共享文件变得越来越简单。到了1991年,当时还在读大学的Tridgwell为了解决Linux系统与Windows系统之间的文件共享问题,基于SMB协议开发出了SMBServer服务程序。这是一款开源的文件共享软件,经过简单配置就能够实现Linux系统与Windows系统之间的文件共享工作。
1 | # 安装samba 服务程序和客户端 |


在最早期的Linux系统中,samba服务使用的是pam模块调用本地账号和密码信息,后来在5、6版本时替。换成了用smbpasswd命令设置独立的samba服务账号和密码口令。到了RHEL 7/8版本时则又进行了一次改革,将传统的验证方式换成了tdbsam数据库,这是一个专门用于保存samba服务账号口令的数据库,用户需要用pdbedit命令进行独立的添加操作.
配置共享资源
包括全局配置参数和区域配置参数
1 | vim /etc/samba/smb.conf |

创建用于访问共享资源的账户信息。在RHEL8系统中,Samba服务程序默认使用的是用户口令认证模式(user)。这种认证模式可以确保仅让有密码且受信任的用户访问共享资源,而且验证过程也十分简单。不过,只有建立账户信息数据库之后,才能使用用户口令认证模式。另外,Samba服务程序的数据库要求账户必须在当前系统中已经存在,否则日后创建文件时将导致文件的权限属性混乱不堪,由此引发错误。
pdbedit命令用于管理samba服务程序的账户信息数据库,格式为“pdbedit [选项]账户”。在第一次把账户信息写入到数据库时需要使用-a参数,以后在执行修改密码、删除账户等操作时就不再需要该参数了。

1 | pdbedit -a -u slacr |
设置SELinux服务与策略,使其允许通过Samba服务程序访问普通用户家目录
1 | getsebool -a | grep samba |
1 | # 消除防火墙限制 |
1 | subclient -U slacr -L 192.168.128.5 |
REHL9 中会出错 Reconnecting with SMB1 for workgroup listing. 到配置文件中可以看到客户端需要支持 SMB2 或 SMB3. 参考解决方法

1 | vim /etc/samba/smb.conf |
Windows 挂载共享
要在Windows系统中访问共享资源,只需要点击开始按钮后输入两个反斜杠,然后再加服务器的IP地址即可.

Linux 挂载共享
我用另一台 debian 12, 在客户端安装支持文件共享服务的软件包(cifs-utils)。
1 | sudo apt-get install cifs-utils |
可以按照Samba服务的用户名、密码、共享域的顺序将相关信息写入到一个认证文件中,然后让/etc/fstab文件和系统自动的加载它。为了保证不被其他人随意看到,最后把这个认证文件的权限修改为仅root管理员才能够读写
1 | vi auth.smb |
NFS 网络共享文件
NFS网络文件系统服务可以将远程Linux系统上的文件共享资源挂载到本地主机的目录上,从而使得本地主机(Linux客户端)基于TCP/IP协议,像使用本地主机上的资源那样读写远程Linux系统上的共享文件。
这个协议之支持Linux之间, 测试了下WSL也用不了.

1 | dnf install nfs-utils |
NFS服务程序的配置文件为/etc/exports, 默认情况下里面没有任何内容。可以按照“共享目录的路径 允许访问的NFS客户端 (共享权限参数) ”的格式,定义要共享的目录与相应的权限。

1 | vi /etc/exports |
使用showmount命令查询NFS服务器的远程共享信息

1 | # apt-get install nfs-common |
AutoFs 自动挂载服务
无论是Samba服务还是NFS服务,都要把挂载信息写入到/etc/fstab中,这样远程共享资源就会自动随服务器开机而进行挂载。虽然这很方便,但是如果挂载的远程资源太多,则会给网络带宽和服务器的硬件资源带来很大负载。如果在资源挂载后长期不使用,也会造成服务器硬件资源的浪费。
autofs服务程序是一种Linux系统守护进程,当检测到用户试图访问一个尚未挂载的文件系统时,将自动挂载该文件系统。autofs服务程序在用户需要使用该文件系统时才去动态挂载,从而节约了网络资源和服务器的硬件资源。
1 | dnf install autofs |
1 | df -h |
- 自动挂载nfs
1 | umount /nfsfile |
其他
忘记或者没设置 root 密码怎么办
1 | sudo passwd root |
cifs
CIFS是“Common Internet File System”的缩写,它是一种用于在计算机之间共享文件和打印机的网络协议。CIFS最初是由微软开发的,后来成为了一种开放标准,并被许多操作系统和设备所支持。
CIFS协议基于客户端-服务器架构,客户端可以通过CIFS协议与远程服务器通信,访问和操作共享的文件和打印机。
CIFS协议提供了以下功能:
文件访问和共享:允许客户端从服务器读取、写入、修改和删除文件。
访问控制:支持对文件和目录的权限控制,可以限制用户对文件的访问权限。
文件锁定:允许客户端对共享文件进行锁定,以防止其他客户端同时修改同一文件。
名字解析:提供了一种方式来将计算机名解析为IP地址,以便客户端可以连接到远程服务器。
打印机共享:允许多台计算机共享打印机资源,从而可以在网络上打印文件。
CIFS协议通常在局域网(LAN)或广域网(WAN)上使用,它可以在不同的操作系统之间进行文件共享和协作,例如在Windows、Linux、macOS等操作系统之间共享文件和打印机。
在Linux系统中,使用CIFS协议可以通过挂载网络共享来访问远程文件系统,这可以通过mount命令来实现。
alias 永久有效
编辑~/.bashrc 或 ~/.bash_aliases
1 | vi ~/.bashrc |
参考