Skip to content

Linux文件共享配置

sftp共享配置

linux使用ssh协议共享文件,多用户共享,设置用户不能ssh登录到命令行,只能访问特定的共享文件。

bash
groupadd dnc103sftp
useradd -MN -G dnc103sftp dnc103sftp01    //-M 不创建用户的主目录,-N 不创建与用户同名的组,-G 指定用户组。
passwd dnc103sftp01

mkdir /dnc103/sftp103/dnc103sftp01    //用户的共享目录

chown dnc103sftp01:root /dnc103/sftp103/dnc103sftp01
chmod 755 /dnc103/sftp103
chmod 770 /dnc103/sftp103/dnc103sftp01

配置chroot限制用户到指定目录: 使用chroot将用户的访问限制在其主目录下,阻止用户访问系统的其他部分。

bash
vim /etc/ssh/sshd_config

在文件末尾添加以下内容,限制dnc103sftp0的目录访问:

shell
AllowUsers cdn dnc103sftp01 dnc103sftp02

Match Group dnc103sftp    //添加dnc103sftp用户。用户添加方法:Match User dnc103sftp01
    ChrootDirectory /dnc103/sftp103
    ForceCommand internal-sftp
    AllowTcpForwarding no
bash
systemctl restart sshd

1)Match User dnc103sftp01
这行代码是一个条件语句,指定后续配置仅适用于dnc103sftp01用户。
Match User用来匹配特定用户,使得仅对该用户应用一些特定配置。
后续的配置(缩进部分)将仅对dnc103sftp01生效,而不影响其他用户。

2)ChrootDirectory /dnc103/sftp103
ChrootDirectory用于指定dnc103sftp01的根目录为/dnc103/sftp103
设置了该指令后,user1在登录后只能访问该目录(或该目录下的子目录),无法访问其他系统文件。
这种配置通常用于增强安全性,特别是限制SFTP用户的文件访问范围。

3)ForceCommand internal-sftp
这行配置强制user1用户只能使用SFTP服务,而不能执行其他SSH命令。
internal-sftpOpenSSH内置的SFTP子系统,性能和安全性更高,适合设置SFTP-only的环境。
配置此选项后,user1无法通过SSH运行其他命令,只能使用SFTP

4)AllowTcpForwarding no
这行代码禁用了TCP转发功能,限制dnc103sftp01通过SSH进行端口转发。
TCP转发用于允许SSH客户端通过服务器转发流量(如动态代理、端口隧道等),禁用它可以减少潜在的安全风险。

配置示例功能总结:
dnc103sftp01的访问权限进行了严格的限制:
dnc103sftp01只能访问指定的目录/dnc103/sftp103
只能使用SFTP协议进行文件传输,无法运行其他SSH命令;
无法进行端口转发。

这种配置通常用于限制用户访问,只开放文件传输功能,是较为常见的SFTP配置方案。

Linux中挂载sftp共享文件

bash
sudo yum -y install sshfs
mkdir ~/remote_sftp
sshfs -p 22 user1@192.168.1.8:/remote/path ~/remote_sftp

/remote/path:服务器上的路径。
~/remote_sftp:本地挂载点路径。

如果需要卸载挂载的SFTP文件系统,可以使用以下命令:

bash
fusermount -u ~/remote_sftp

Windows中访问sftp共享文件

软件:Winscp

CentOS搭建smb(samba)文件共享

smb(samb)

bash
yum -y install samba samba-client samba-common    //安装smb服务
mkdir -p /date/smb104

vim /etc/samba/smb.conf
[share104]
   path = /date/smb104
   valid users = @smb104g
   read only = no
   browsable = yes
   writable = yes

groupadd smb104g
useradd -M -s /sbin/nologin -G smb104g smb104ucdn
useradd -M -s /sbin/nologin -G smb104g smb104u1
useradd -M -s /sbin/nologin -G smb104g smb104u2

分别创建了3个用户smb104ucdn、smb104u1、smb104u2
-M:没有/home下的家目录。
-s: 设置新用户的登录shell
/sbin/nologin:表示该用户无法登录系统,尝试登录时会显示一条消息。
这样设置可以防止用户通过终端或SSH登录到系统,但仍然可以通过Samba访问共享。
-G:添加到smb104g组。

bash
smbpasswd -a smb104ucdn    //smb104ucdn
smbpasswd -a smb104u1    //smb104u1
smbpasswd -a smb104u2    //smb104u2

chown smb104ucdn:smb104g /date/smb104
chmod 1775 /date/smb104

systemctl start smb
systemctl enable smb

RockyLinux9上挂载Windows共享的文件

1、在Windows上开启文件共享

2、RockyLinux9上配置

bash
dnf install cifs-utils -y    //安装必备工具
mkdir -p /dndncc    //创建本地挂载点
chmod 755 /dndncc

vim /etc/smb-user.txt    //创建凭据文件,能连接Windows文件共享的账号密码文件,格式如下
username=user
password=passwd
domain=WORKGROUP    //如果Windows是工作组模式

chmod 600 /etc/smb-user.txt

mount -t cifs //192.168.1.8/共享名 /dndncc -o credentials=/etc/smb-user.txt,vers=3.0    //手动测试挂载

df -h | grep /dndncc    //检查挂载

vim /etc/fstab    //配置开机自动挂载
//192.168.1.8/共享名 /dndncc cifs credentials=/etc/smb-user.txt,_netdev,vers=3.0,uid=1000,gid=1000,file_mode=0755,dir_mode=0755 0 0

mount -a    //测试挂载配置

vers=3.0:指定SMB协议版本(根据Windows版本调整,如失败可试vers=2.1vers=1.0
uid=1000,gid=1000:替换为你的Linux用户ID(通过id命令查看)
file_mode/dir_mode:设置文件/目录权限

3、主网络经常换会遇到的问题

由于我是笔记本使用virtualbox虚拟机安装的rockylinux9,笔记本的网络会经常换,所以需要做以下配置

1)网络1:桥接模式,做DHCP,用来连接外网和局域网等。网络2:仅主机模式,固定ip,用来和主机通信传输共享文件等。
2)所以在rockylinux9挂载时需要使用网络2的ip通信。