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

  可以看到已经限制用户在家目录,同时该用户也不能登录该机器。

时间: 2025-01-01 17:28:03

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

在Linux上给用户赋予指定目录的读写权限

在上篇文章中我们向您展示了如何在 Linux 上创建一个共享目录.这次,我们会为您介绍如何将 Linux 上指定目录的读写权限赋予用户. 有两种方法可以实现这个目标:第一种是 使用 ACL (访问控制列表) ,第二种是创建用户组来管理文件权限,下面会一一介绍. 为了完成这个教程,我们将使用以下设置. 操作系统:CentOS 7 测试目录:/shares/project1/reports 测试用户:tecmint 文件系统类型:ext4 请确认所有的命令都是使用 root 用户执行的,或者使用 s

在 Linux 上使用 eCryptFS 加密文件和目录

在 Linux 上使用 eCryptFS 加密文件和目录 作为罪犯,你需要为自己的身份保密:而作为中情局成员,你同样也需要为自己的身份保密.但是,你却不是他们其中的任何一员,你只是不想其他人查探到你的金融数据.家庭照片.尚未出版的手稿,或者记录着你能发家致富的最初想法的私密笔记. 我时常听到有人告诉我"我只是个微不足道的人,没人会查探我"或者"我没有什么东西要隐藏的."好吧,告诉你我的想法,即便我没有什么要隐藏的,或者我也可以公开我带着狗的孩子的照片,那我也有权利不

共享访问报"无权限"解决方法

访问报无权限解决方法: 1.设置本地的administrator账户的密码. 2.设置网络访问模式为经典模式. 3.设置允许从网络访问计算机的用户账户(加入Guest组). 4.设置禁止从网络访问计算机的用户账户(删除Guest组). 设置方法: 开始--> 运行gpedit.msc--> 计算机配置--> windows设置--> 安全设置(Security Settings)--> 本地策略(Local Policies)--> 1.:用户权利指派(User Rig

Linux上使用程序相对路径访问文件【转】

转自:http://blog.csdn.net/yinxusen/article/details/7444249 今天一个朋友问我这个问题,说为什么在Windows上跑得很好的应用程序,移植到Linux上后就读不到跟应用程序在同一文件夹下的文件呢,我说,这是linux和Windows在Work directory上设置的不同. 大家都知道,对于Windows而言,应用程序的默认工作目录就是应用程序所在的目录,它一般是不管应用程序是从哪个目录上下文启动的.那么在不更改工作目录的情况下,读文件使用相

【Tomcat】Linux上Tomcat发布-JavaWeb项目-访问时不通过项目名

转载请注明出处:http://blog.csdn.net/qq_26525215 本文源自[大学之旅_谙忆的博客] 一开始自己不知道怎么直接通过域名访问到自己部署的Web项目,发布在Tomcat上的. 因为自己以前写都是后面加了项目名, 然后去百度谷歌,找到了下面的正确方法 如果你不想输入端口号访问,记得把端口号8080改为80哦. apache-tomcat-7.0.73/conf/server.xml文件中 1.把项目名改成ROOT即可(如果有先删除之前的ROOT项目) 2.修改tomcat

如何在Linux上设置RAID 10确保高性能

  RAID 10(又叫RAID 1+0或镜像条带)阵列结合了RAID 0和RAID 1两者的功能特性,从而提供了高性能.容错的磁盘输入/输出操作.在RAID 0中,读取/写入操作跨多个驱动器并路执行;在RAID 1中,一模一样的数据写入到两个或多个驱动器上. 在本教程中,我将介绍如何使用5只相同的8 GiB磁盘,构建一个软件RAID 10阵列.虽然用来构建RAID 10阵列的最大磁盘数量是4只(比如一组条带化的两个镜像),但我们将增添一只额外的备用驱动器,以防其中一个主驱动器出现故障.我们还将

IIS7/IIS7.5中取消目录执行权限的方法

  IIS配置网站时,通常有些目录必须给写入权限,这个时候这些目录就很可能被人写入脚本文件,为了将安全性维护得更好,我们可以关闭这些有写入权限的目录的脚本执行权限. IIS6中,可以很容易找到关闭的地方,而IIS7由于架构的变化,很多人找不到,这里给大家说明一下怎么关闭特定网站目录的脚本执行权限. 第一步,在IIS的左侧 选中该目录,切换到 功能视图. 第二步,打开"处理程序映射"功能. 第三步,打开右侧的"编辑功能权限",将"脚本"这一项取消掉

linux文件上传,给文件或目录添加apache权限的方法_Linux

在LAMP环境中,测试一个简单的php文件上传功能时,发现/var/log/apache2/error.log中出现如下php警告: 1. [Tue Jan 31 09:40:27 2012] [error] [client 127.0.0.1] PHP Warning: move_uploaded_file(/home/leotody/32883679.jpeg): failed to open stream: Permission denied in /var/www/upload_file

如何在Linux上自动设置JAVA_HOME环境变量

问题:我需要在我的 Linux 机器上编译 Java 程序.为此我已经安装了 JDK (Java Development Kit),而现在我正试图设置 JAVA_HOME 环境变量使其指向安装好的 JDK .关于在 Linux 上设置 JAVA_HOME 环境变量,最受推崇的办法是什么? 许多 Java 程序或基于 Java 的集成开发环境 (IDE)都需要设置好 JAVA_HOME 环境变量.该变量应指向 Java 开发工具包 (JDK)或Java 运行时环境 (JRE)的安装目录.JDK 不