Linux上设置用户通过SFTP访问目录的权限的方法

如题所述

sftp和ftp是两种协议是不同的,sftp是ssh内含的协议,只要sshd服务器启动了,它就可用,它本身不需要ftp服务器启动。

1.查看openssh软件版本,想sftp服务用户只能访问特定的文件目录,版本需要4.8以上

代码如下:

[root@localhost ftp]# rpm -qa | grep openssh

openssh-server-5.3p1-81.el6_3.x86_64

openssh-5.3p1-81.el6_3.x86_64

openssh-clients-5.3p1-81.el6_3.x86_64

2.新增用户,限制用户只能通过sftp访问

代码如下:

[root@localhost ftp]# useradd -m -d /opt/ftp/dave -s /sbin/nologin dave

3.限制用户通过sftp登录进来时只能进入主目录,修改/etc/ssh/sshd_config文件

代码如下:

[root@localhost ftp]# vim /etc/ssh/sshd_config

#Subsystem sftp /usr/libexec/openssh/sftp-server

Subsystem sftp internal-sftp

Match User dave

ChrootDirectory /opt/ftp/dave

X11Forwarding no

AllowTcpForwarding no

ForceCommand internal-sftp

重启ssh

4.测试访问

代码如下:

root@10.1.1.200:test# sftp -oPort=22 dave@10.1.6.175

Connecting to 10.1.6.175...

dave@10.1.6.175's password:

Read from remote host 10.1.6.175: Connection reset by peer

Couldn't read packet: Connection reset by peer

发现连接不上,查看日志

代码如下:

[root@localhost ftp]# tail /var/log/messages

Jan 6 11:41:41 localhost sshd[4907]: fatal: bad ownership or modes for chroot directory "/opt/ftp/dave"

Jan 6 11:41:41 localhost sshd[4905]: pam_unix(sshd:session): session closed for user dave

解决方法:

目录权限设置上要遵循2点:

ChrootDirectory设置的目录权限及其所有的上级文件夹权限,属主和属组必须是root;

ChrootDirectory设置的目录权限及其所有的上级文件夹权限,只有属主能拥有写权限,权限最大设置只能是755。

如果不能遵循以上2点,即使是该目录仅属于某个用户,也可能会影响到所有的SFTP用户。

代码如下:

[root@localhost ftp]# ll

total 4

drwxr-xr-x 3 dave dave 4096 Jan 5 13:06 dave

[root@localhost ftp]# chown root:root dave

[root@localhost ftp]# chmod 755 dave

[root@localhost ftp]# ll

total 4

drwxr-xr-x 3 root root 4096 Jan 5 13:06 dave

然后在测试通过

代码如下:

root@10.1.1.200:test# sftp -oPort=22 dave@10.1.6.175

Connecting to 10.1.6.175...

dave@10.1.6.175's password:

sftp ls

test

sftp cd ..

sftp ls

test

sftp cd test

sftp ls

1.txt

sftp get 1.txt

Fetching /test/1.txt to 1.txt

/test/1.txt

可以看到已经限制用户在家目录,同时该用户也不能登录该机器。
温馨提示:内容为网友见解,仅供参考
无其他回答

Linux上设置用户通过SFTP访问目录的权限的方法
[root@localhost ftp]# useradd -m -d \/opt\/ftp\/dave -s \/sbin\/nologin dave 3.限制用户通过sftp登录进来时只能进入主目录,修改\/etc\/ssh\/sshd_config文件 代码如下:[root@localhost ftp]# vim \/etc\/ssh\/sshd_config Subsystem sftp \/usr\/libexec\/openssh\/sftp-server Subsystem sftp internal-...

Linux怎么设置用户通过SFTP访问目录的权限
确定了一个文件的访问权限后,用户可以利用Linux系统提供的chmod命令来重新设定不同的访问权限。也可以利用chown命令来更改某个文件或目录的所有者。利用chgrp命令来更改某个文件或目录的用户组。下面分别对这些命令加以介绍。

Linux下如何进行SFTP用户权限设置
1、打开Linux文件查看有哪些权限。2、使用chown 命令,修改文件test1.txt的所有者为demo1_1,所有组为group_1。使用chmod 命令,修改文件权限为 0750(- rwx r-x r-x)。3、切换用户demo2,对文件test1.txt,应该没有任何权限。4、切换用户demo1_1,对文件test1.txt,应该有所有权限。5、权限修改...

linux的sftp命令
1. 连接SFTP服务器:通过输入`sftp 用户名@主机地址`命令,可以连接到SFTP服务器。系统将要求输入用户的密码进行身份验证。2. 文件操作:在SFTP会话中,可以使用各种命令进行文件操作,如`put`用于上传文件,`get`用于下载文件,`ls`用于列出目录中的文件等。这些命令的使用方式与在本地文件系统上的操作...

如何在 Linux 服务器上安装和使用 SFTP?
接下来,为 SFTP 服务创建一个专用的用户组和用户,例如“sftpuser”。新用户仅允许访问 SFTP 服务器,且不能通过 SSH 登录。设置强密码并将其添加到“sftpgroup”组。然后,为 SFTP 用户创建一个受限的 chroot 目录,确保所有权为“root”,并给予组读取和执行权限,但禁止写入操作。这有助于限制...

linux怎么限制用户ssh登录允许sftp登录
passwd文件中abc用户 abc:x:510:511::\/home\/abc:\/bin\/bash 改为 abc:x:510:511::\/home\/abc:\/usr\/libexec\/openssh\/sftp-server

怎么开启linux服务器的sftp服务
可以按照如下方式进行设置:1、创建sftp组,groupadd sftp,创建完成之后使用cat \/etc\/group命令组的信息。2、创建一个sftp用户mysftp并加入到创建的sftp组中,同时修改mysftp用户的密码,useradd -g sftp -s \/bin\/false mysftp,passwd mysftp 。3、新建\/data\/sftp\/mysftp目录,并将它指定为mysftp组...

怎么使用Chroot文件系统限制SFTP登录用户访问文件夹权限
最简单的方法就是给SFTP权限创建chrooted文件系统. 这种方法在所有的Unix\/Linux操纵系统上都是可以通用的. 使用chrooted我们可以限制用户在他们自己的home文件夹或者制定的文件夹 Restrict Users to Home Directories In this section, we will create new group calledsftpgroupand assign correct ownership ...

linux怎么限制用户ssh登录允许sftp登录
1、打开sshd的配置文件 vi \/etc\/ssh\/sshd_config2、修改该配置文件,增加或修改如下行 禁止用户user1登陆,多个空格分隔DenyUsers user1 # 禁止用户组group1的所有用户登录,多个空格分隔DenyGroups group13、保存配置后,重启sshd \/etc\/rc.d\/init.d\/sshd restart 完成上面的配置后,就可以禁止用户...

...还有就是如何限制某个用户SFTP下载及下载的速率
自然也没有使用sftp的权限了。注意仅仅在sshd_config禁止掉sftp-server是不够的,因为只要用户还能通过 ssh登录就可以用其他user space 的工具如scp上传下载文件,效果其实跟sftp是一样的。至于限速问题,既然是内网,为什么要跑sftp?配个vsftpd,配置文件里可以直接做限速和链接数的啊 ...

相似回答
大家正在搜