Linux下限制用户通过SFTP访问指定目录

1、需求说明:
在一些生产环境中,有部分运营人员需要批量下载并上传专题,配置FTP服务进行权限控制相对比较复杂,也存在安全隐患,为了不让用户浏览除指定目录外得内容,我们可以通过SFTP限制允许访问得目录
2、创建系统用户

# useradd admin && echo ‘admin123‘ | passwd --stdin admin

3、配置sftp的账户权限
修改文件/etc/ssh/sshd_config之前先备份文件cp sshd_config{,.bak}
Subsystem sftp internal-sftp
Match User admin # 需要限制得用户admin
ChrootDirectory /data/www/Appcode # 允许admin用户访问得指定目录
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
效果如图所示:

4、设置允许用户访问目录的权限
Sftp用户访问目录需要设置所有者和所属组的权限均为root,并设置目录的权限为755

# chown -R root:root /data/www/Appcode/
# chmod 755 /data/www/Appcode/
# /etc/init.d/sshd restart

5、通过重新启动SSHD后我们通过SFTP连接服务器


登录后的目录定位到了指定的目录"/data/www/Appcode"目录,不能浏览系统的其他目录,也不能切换目录,用户可正常浏览下载目录中的文件,但是用户无法上传文件。即使在/data/www/Appcode/下属主为admin的目录,用户也无法上传。此时需要在/data/www/Appcode/下建立属主属组为admin的目录,并给/data/www/Appcode目录设置acl权限即可

# mkdir /data/www/Appcode/test
# chown admin:admin /data/www/Appcode/test
# setfacl -m u:admin:rwx /data/www/Appcode

6、setfacl报错Operation not supported
setfacl: /data/www/Appcode: Operation not supported
一般情况下(ext4),默认acl支持都是加载的.但如果遇到二般情况,文件系统加载时没有指定acl.我们可以能过编辑/etc/fstab文件,找到对应得分区指定acl权限,然后重新挂载分区即可。

# mount -o remount /data
# setfacl -m u:admin:rwx /data/www/Appcode

原文地址:https://blog.51cto.com/darren88/2406992

时间: 2024-08-06 19:29:59

Linux下限制用户通过SFTP访问指定目录的相关文章

用ChrootDirectory限制SFTP登录的用户只能访问指定目录且不能进行ssh登录

创建不能ssh登录的用户sftpuser1,密码用于sftp登录: sudo adduser sftpuser1 --home /sftp/sftpuser1 --shell /bin/false sudo nano /etc/ssh/sshd_config (执行man sshd_config查看配置说明) Ubuntu/Debian上把Subsystem sftp /usr/lib/openssh/sftp-server Redhat/CentOS上把Subsystem sftp /usr/

Linux sftp限制用户访问指定目录

一.创建新用户: [root@controller ~]# useradd test[root@controller ~]# passwd testNew password: BAD PASSWORD: The password is a palindromeRetype new password: passwd: all authentication tokens updated successfully. 二.修改sshd配置文件: [root@controller ~]# vi /etc/

vsftpd添加用户并限制目录(指定用户访问指定目录)

开发那边更新速度如果比较快,每天会有无数的文件或者目录交给运维更新上线,这样比较麻烦,干脆给他们搭FTP让他们自己上传修改,但有一问题,就是权限问题,公司五个站点有五个目录,每个人负责不同的站点,如何让各自都不干扰别人,或者说不到别人的目录搞“破坏”!下面解决这个问题! 一.检查Linux中vsftpd的安装情况. 就不啰嗦了 二.将系统中的SELinux关闭,然后重新启动电脑(不关闭的话修改好标签也可以) 关闭SELinux的方法: 修改/etc/selinux/config文件中的SELIN

linux下创建用户

linux下创建用户(一) Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统.用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问:另一方面也可以帮助用户组织文件,并为用户提供安全性保护.每个用户账号都拥有一个惟一的用户名和各自的口令.用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录. 实现用户账号的管理,要完成的工作主要有如下几个方面: · 用户账

linux下创建用户 费元星站长

linux下创建用户(一) Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统.用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问:另一方面也可以帮助用户组织文件,并为用户提供安全性保护.每个用户账号都拥有一个惟一的用户名和各自的口令.用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录. 实现用户账号的管理,要完成的工作主要有如下几个方面:· 用户账号

apache‘禁止指定user_agent’ 和 ‘禁止用户通过浏览器访问某个目录’

禁止指定user_agent 本节介绍如何通过rewrite实现限制指定 user_agent 的请求: 即禁掉不想让那些引擎访问的请求 编辑虚拟主机配置文件 [[email protected] ~]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf (找到"域名301跳转的配置"即"rewrite的mod配置"内写入) RewriteCond %{HTTP_USER_AGENT} ^.*curl.* [NC

linux下添加用户并赋予root权限(转)

转自:http://blog.csdn.net/stormbjm/article/details/9086163 1.添加用户,首先用adduser命令添加一个普通用户,命令如下: #adduser tommy //添加一个名为tommy的用户#passwd tommy   //修改密码 Changing password for user tommy.New UNIX password:     //在这里输入新密码Retype new UNIX password:  //再次输入新密码pas

linux下查看用户及用户组的方法

whois 功能说明:查找并显示用户信息. 语 法:whois [帐号名称] 补充说明:whois指令会去查找并显示指定帐号的用户相关信息,因为它是到Network Solutions 的WHOIS数据库去查找,所以该帐号名称必须在上面注册方能寻获,且名称没有大小写的差别.    whois功能说明:查找并显示用户信息.语 法:whois [帐号名称]补充说明:whois指令会去查找并显示指定帐号的用户相关信息,因为它是到Network Solutions 的WHOIS数据库去查找,所以该帐号名

linux下添加用户到sudo组 并禁止sudo用户修改密码

linux下添加用户到sudo组 创建用户  useradd hanli 为新用户设置密码  passwd hanli 创建用户组  groupadd  op 将用户添加到用户组  usermod -G op hanli 查看用户属于哪个组  groups hanli 查看用户组成员    groupmems -g wheel -l  (wheel是组名) 查看所有用户组   cat /etc/group   cat /etc/gshadow 查看所有用户       cat /etc/pass