linux配置xftp
需求如下
1.创建两个ftp用户,用户的工作目录位于 /sftp 目录下
2.该用户无法进入其他用户的目录
3.创建一个公共目录,允许所有用户上传,但不能删除其他人的文件
4.创建一个团队目录,允许上传和删除其他人的文件
具体实现如下
创建一个名为sftpusers的新用户组。这个组将用于管理SFTP用户。
groupadd sftpusers
创建一个名为ftp01和ftp02的新用户,并将其添加到sftpuser组中,-G选项用于指定用户所属的附加组
adduser ftp01 -G sftpusers
adduser ftp02 -G sftpusers
使用echo命令和管道|将密码Admin@123传递给passwd, --stdin ftp01命令,以设置ftp01和ftp02用户的密码
echo "Admin@123" | passwd --stdin ftp01
echo "Admin@123" | passwd --stdin ftp02
为ftp01和ftp02用户创建目录
mkdir -p /sftp/ftp01/home
mkdir -p /sftp/ftp02/home
将/sftp/ftp01目录及其所有子目录和文件的所有权更改为ftp01用户和ftp01组,ftp02同理
chown -R ftp01:ftp01 /sftp/ftp01
chown -R ftp02:ftp02 /sftp/ftp02
将/sftp/ftp01目录及其所有子目录和文件的权限设置为770,这意味着所有者(ftp01用户)和所属组(ftp01组)可以读、写和执行,而其他用户没有任何权限, ftp2同理
chmod -R 770 /sftp/ftp01
chmod -R 770 /sftp/ftp02
创建一个名为/sftp/team和 /sftp/pub的新目录
mkdir /sftp/team
mkdir /sftp/pub
将/sftp/team目录的所有权更改为root用户和sftpusers组
chown root:sftpuser /sftp/team/
将/sftp/team目录的权限设置为2770。这里的2意味着在该目录下创建的新文件和目录将继承组的所有权(即sftpuser组)。
770意味着所有者(在这个例子中是root)和所属组(sftpuser组)可以读、写和执行,而其他用户没有任何权限
chmod 2770 /sftp/team/
将/sftp/pub目录的权限设置为1777。这里的1(粘滞位)意味着只有文件的所有者、目录的所有者或具有超级用户权限的用户才能删除或重命名该目录中的文件。
777意味着所有者、所属组的成员和所有其他用户都可以读、写和执行(但由于粘滞位,普通用户不能删除其他用户的文件)
chmod 1777 /sftp/pub
然后修改 /etc/ssh/sshd_config 配置文件, 注释调原来的 Subsystem sftp /usr/libexec/openssh/sftp-server 这行配置,复制修改成如下内容
#Subsystem sftp /usr/libexec/openssh/sftp-server
Subsystem sftp internal-sftp -d %u/home
最后重启sshd服务
systemctl restart sshd
这些命令共同配置了一个SFTP环境,其中每个用户有自己的主目录(/sftp/ftp01/home和/sftp/ftp02/home),并且有一个共享的team目录,其中的文件可以被sftpuser组的所有成员访问和修改,还有一个公共的pub目录,其中用户可以放置文件供其他用户访问,但不能删除其他用户的文件。