温馨提示×

如何在Debian SFTP中禁用某些命令

小樊
54
2025-07-21 05:37:48
栏目: 智能运维

在Debian系统中,SFTP服务器通常是通过OpenSSH提供的

  1. 打开SSH配置文件:

使用文本编辑器打开/etc/ssh/sshd_config文件。例如,你可以使用nano编辑器:

sudo nano /etc/ssh/sshd_config
  1. 修改或添加以下行:

sshd_config文件中,找到或添加以下行:

Subsystem sftp internal-sftp
Match Group sftpusers
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no
    X11Forwarding no

这里,我们创建了一个名为sftpusers的新组,并将所有SFTP用户添加到此组。我们还限制了这些用户的chroot环境,禁止TCP和X11转发。

  1. 创建一个新组并添加SFTP用户:

创建一个名为sftpusers的新组,并将需要限制SFTP命令的用户添加到此组。例如,如果你想将用户username添加到此组,请执行以下命令:

sudo groupadd sftpusers
sudo usermod -aG sftpusers username
  1. 更改用户的默认shell:

为了使更改生效,需要将用户的默认shell更改为/bin/false/usr/sbin/nologin。这将阻止用户通过SSH登录,但仍然允许他们使用SFTP。要将用户username的默认shell更改为/bin/false,请执行以下命令:

sudo usermod -s /bin/false username
  1. 重启SSH服务:

保存对sshd_config文件的更改,并重启SSH服务以使更改生效:

sudo systemctl restart ssh

现在,SFTP用户将受到限制,只能使用允许的命令。如果需要允许特定命令,可以考虑使用command=选项在sshd_config文件中为特定用户或组设置允许的命令。例如:

Match Group sftpusers
    ChrootDirectory %h
    ForceCommand internal-sftp,ls,cat

这将允许sftpusers组的用户使用lscat命令。

0