Linux sftp新建用户限制指定目录和配置权限

本文介绍了如何在Linux系统中创建用户并限制其仅能通过sftp访问指定目录。首先创建用户aaaa,设定默认目录为/home/wwwroot/aaaa,并调整权限。接着,设置用户权限,确保目录所有者为root且无群组写入权限。在sshd_config文件中进行sftp配置,限制用户只能访问自己的目录。最后,通过sftp测试验证配置效果。

1、创建用户

创建一个例名为 aaaa 的用户,指定它的默认目录为 /home/wwwroot/aaaa,并设置它的密码。

#创建用aaaa
~]# useradd -d /home/aaaa -m aaaa

#设置aaaa的密码,输入以下指令回车后输入密码即可
~]# passwd aaaa

后期想修改目录的话可以通过这个命令指定
usermod -d /home/wwwroot/test aaaa

如果不想让用户aaaa使用ssh登陆,安全性考虑用如下命令设置不允许登陆,但可以sftp访问

~]# usermod -s /sbin/nologin aaaa

恢复ssh登陆可用以下命令:
usermod -s /sbin/bash aaaa

2、权限设置与新建可写目录

用户授权,设置目录权限,aaaa的用户组为root,据网上资料sftp用户访问目录需要设置所有者和所属组的权限均为root,并设置目录的权限为755,即注意两点:
(1)、ChrootDirectory(下面第3步会设置到这个目录) 的目录及其所有上级目录的所有者都只能为 root 
(2)、ChrootDirectory 的目录及其所有上级目录都不可以具有群组写入权限(最大权限 755)

#设置用户组为root
~]# chown -R root:aaaa /home/aaaa

#设置权限为755
~]# chmod 755 /home/aaaa

新建一个子目录,这个子目录,用户可以进行读写操作,权限可以设置到777由你定,一般新建时默认755可以了。

#新建子目录
~]# mkdir /home/aaaa/wwwroot

#为用户aaaa添加子目录的操作权
#设置所有者为aaaa,用户group为root,
~]# chown -R aaaa:root /home/aaaa/wwwroot

上面的第二句chown语句如果不设置的话,用户在wwwroot写入文件会提醒:Couldn't create directory: Permission denied
chown的详细说明访问:http://www.runoob.com/linux/linux-comm-chown.html

3、sftp设置

修改配置文件 “sshd_config”  一般路径:/etc/ssh/sshd_config
执行命令:

~]# vi /etc/ssh/sshd_config

查找这一行:Subsystem    sftp    /usr/libexec/openssh/sftp-server,注释掉它。不然等一下重启会报错,接着往文件的末尾处添加以下代码,最好在末尾处添加

Subsystem sftp internal-sftp
UsePAM yes
Match user aaaa
ForceCommand internal-sftp
ChrootDirectory /home/aaaa

添加多个目录请重复这三句代码

Match user aaaa2
ForceCommand internal-sftp
ChrootDirectory /home/aaaa2

保存配置,下面两条指令自由选择一条执行重启sshd:

# reload:不间断服务重启
~]# /etc/init.d/sshd reload

# 或者用下面这条,先stop 再 start,间断服务重启
~]# /etc/init.d/sshd restart

4、测试sftp

使用终端测试sftp,连接成功后,试着进入其它目录,可以看到提醒不存在的,因为限定了这个用户就只能访问自身的目录。

~]# sftp aaaa@192.168.1.286
Connecting to 116.62.190.22...
dukedb@116.62.190.22's password:
sftp> pwd
Remote working directory: /
sftp> cd /home
Couldn't canonicalise: No such file or directory
sftp> cd ../
sftp> pwd
Remote working directory: /

也可以使用,客户端工具进行测试,例如:WinSCP,这里就不截图了,你们自己试试。

<think> 我们当前的任务是:新建用户yy,并配置sshd_config允许该用户通过SFTP登录。 根据之前的历史,我们知道配置SFTP用户需要编辑sshd_config文件,设置SubsystemMatch规则。 同时,新建用户可以使用`useradd`命令。 步骤: 1. 创建用户yy(如果不存在) 2. 设置用户yy的密码(可选,但为了密码登录需要) 3. 修改sshd_config,添加针对yy用户SFTP配置 4. 设置Chroot目录(如果需要限制用户到特定目录) 5. 重启sshd服务 注意:我们允许密码登录,所以需要确保全局或匹配规则中PasswordAuthentication为yes。 具体步骤: </think> ### 新建用户yy并配置SFTP登录的完整步骤 #### 1. 创建用户yy ```bash sudo useradd -m yy # 创建用户并生成家目录 sudo passwd yy # 设置用户密码 ``` > 提示:输入两次密码完成设置[^2] #### 2. 配置sshd_config文件 ```bash sudo vim /etc/ssh/sshd_config ``` 在文件末尾添加: ```plaintext # SFTP配置开始 Subsystem sftp internal-sftp Match User yy ForceCommand internal-sftp PasswordAuthentication yes ChrootDirectory /home/yy # 限制用户到自己的家目录 PermitTTY no # 禁止终端访问 X11Forwarding no # 禁止图形转发 AllowTcpForwarding no # 禁止端口转发 # SFTP配置结束 ``` > 按`:wq`保存退出[^2] #### 3. 设置目录权限 ```bash sudo chown root:root /home/yy # 必需步骤! sudo chmod 755 /home/yy # 必需权限! sudo mkdir /home/yy/upload # 创建用户可写目录 sudo chown yy:yy /home/yy/upload # 赋予用户所有权 ``` #### 4. 重启SSH服务 ```bash sudo systemctl restart sshd # Ubuntu/Debian # 或 sudo systemctl restart sshd # CentOS/RHEL ``` #### 5. 验证配置 ```bash sftp -P 22 yy@localhost # 输入密码测试连接 ``` 成功连接后应显示: ```plaintext sftp> ``` ### 配置原理说明 $$ \begin{array}{|c|c|} \hline \text{配置项} & \text{安全作用} \\ \hline \texttt{ChrootDirectory} & \text{将用户锁定在家目录} \\ \hline \texttt{PermitTTY no} & \text{禁止Shell访问} \\ \hline \texttt{PasswordAuthentication} & \text{启用密码验证} \\ \hline \texttt{internal-sftp} & \text{使用内置SFTP模块} \\ \hline \end{array} $$ ### 故障排查技巧 1. 检查权限: ```bash ls -ld /home/yy # 应显示 root root & 权限755 ``` 2. 查看日志: ```bash journalctl -u sshd -n 50 --since "1 min ago" ``` 3. 测试配置: ```bash sudo sshd -t # 检查配置文件语法 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值