在银河麒麟系统中创建受限用户需执行:1. sudo useradd -m -s /usr/sbin/nologin -c "sftp专用账户" sftpuser;2. sudo passwd sftpuser;3. sudo chown sftpuser:sftpuser /home/sftpuser && sudo chmod 755 /home/sftpuser;验证id sftpuser显示shell为/usr/sbin/nologin,且su - sftpuser立即退出。

您需要在银河麒麟操作系统中创建一个无法执行交互式命令、仅能用于文件传输或服务运行的普通受限用户,避免该账户获得shell访问权限后引发系统安全风险。
用useradd创建禁用shell的受限用户
第一步:打开终端,以管理员身份执行以下命令:
sudo useradd -m -s /usr/sbin/nologin -c "SFTP专用账户" sftpuser
其中 【-s /usr/sbin/nologin】 是关键参数,它将用户默认shell设为不可登录状态;若误用/bin/false,在部分麒麟版本中可能导致PAM认证异常,/usr/sbin/nologin是银河麒麟官方推荐值。
第二步:立即设置密码,否则账户处于锁定状态:
sudo passwd sftpuser
第三步:手动修正家目录权限,防止SFTP服务拒绝访问:
sudo chown sftpuser:sftpuser /home/sftpuser → sudo chmod 755 /home/sftpuser
注意:此处不能设为700,SFTP子系统需其他进程读取目录结构,755是麒麟OS SFTP chroot环境的最小可行权限。
验证受限用户是否生效
执行命令 id sftpuser,确认输出中包含 uid=100X(sftpuser) 且 shell 字段显示为 /usr/sbin/nologin。
尝试切换用户:su - sftpuser,终端应直接退出并返回原提示符,不进入交互环境。
检查登录能力:ssh sftpuser@localhost,连接应被拒绝或立即关闭,不会出现密码输入提示。
附加:限制该用户仅能访问指定目录(可选)
方法一:配置SSH SFTP子系统
编辑 /etc/ssh/sshd_config,末尾添加:
Match User sftpuser
ForceCommand internal-sftp
ChrootDirectory /srv/sftp/%u
AllowTcpForwarding no
X11Forwarding no
方法二:创建隔离根目录(需提前准备):
sudo mkdir -p /srv/sftp/sftpuser/{upload,download}
sudo chown root:sftpuser /srv/sftp/sftpuser
sudo chmod 755 /srv/sftp/sftpuser
sudo chown sftpuser:sftpuser /srv/sftp/sftpuser/{upload,download}
sudo chmod 775 /srv/sftp/sftpuser/{upload,download}
完成后重启SSH服务:
sudo systemctl restart sshd











