SSH用户限制在固定的目录下面

centos设置

一 需求:

Ssh使普通用户登陆后锁定到特定的目录下

二 系统平台:

CentOS release 6.3 (Final) x86_64

OpenSSH_5.3p1

OpenSSL 1.0.0-fips

三 实现过程:

根据sshd_config的man中所述,实现chroot功能需要配置"ChrootDirectory"这个参数。

ChrootDirectory:定义了用户通过认证以后的chroot目录,此目录及其所有子目录的属主必须是root,且这些目录只有root帐号可以进行写操作,其他任何组和帐号都不可写。chroot以后,sshd会将用户的工作目录转到chroot目录中用户自己的主目录。如果ChrootDirectory定义的目录下没有相应的/home/username目录,则会直接转到chroot的/目录下

准备工作:

1 首先要关闭selinux  setenforce 0 或者修改vim /etc/selinux/config  SELINUX=disabled

2 将用户www锁定在/var/chroot下

详细实现过程

1新增用户web_test(不创建其缺省家目录)

  #useradd –M web_test
   #passwd  web_test

  

2修改/etc/ssh/sshd_config文件

 #vim /etc/ssh/sshd_config    增加以下内容

 Match User web_test

 ChrootDirectory /var/chroot

  

3搭建基本的chroot环境

小贴士:一个最基本的chroot环境至少有一个shell(例如sh,bash)和一些必要的系统设备文件(例如/dev/null,/dev/zero),如果要允许用户执行一些命令,那么还要准备相应的命令可执行文件和命令依赖的库文件。

#mkdir /var/chroot

#cd /var/chroot

#mkdir {bin,dev,lib64,etc,home}

# mknod dev/null c 1 3

#mknod dev/zero c 1 5

#可选,这两个文件ssh命令需要,如缺少会报告:PRNG is not seeded

#mknod dev/random c 1 8

#mknod dev/urandom c 1 9

#可选,ssh命令需要,如缺少会报告:Host key verification failed

#mknod dev/tty c 5 0

#修改/var/chroot及其子目录的属主,并修改权限

#chown –R root.root /var/chroot

# chmod –R 755 /var/chroot

#允许用户写这些设备文件,不可写会有些命令报错

# chmod 0666 dev/{null,zero,tty}

复制/etc/passwd和/etc/group文件到/var/chroot/etc中,并删除用户自己和root以外的所有帐号。如果没有这两个文件,用登录以后会报“I have no name!”

#cp –p /etc/passwd  /var/chroot/etc/

#cp -p /etc/group  /var/chroot/etc/

4建立chroot目录中用户主目录

#mkdir /var/chroot/home/web_test

#chown –R www.www /var/chroot/home/web_test

#chmod 700 /var/chroot/home/web_test

5拷贝一些简单的命令以下可以使用脚本:

# /bin/bash

# 要允许执行的文件列表

cmdlist="/bin/bash /bin/ls /bin/cp /bin/mkdir /bin/mv /bin/rm /bin/rmdir"

# chroot路径

chroot_path="/var/chroot"

# 判断依赖的库文件

lib_1=`ldd $cmdlist | awk ‘{ print $1 }‘ | grep "/lib" | sort | uniq`

lib_2=`ldd $cmdlist | awk ‘{ print $3 }‘ | grep "/lib" | sort | uniq`

# 复制命令文件

for i in $cmdlist

do

cp -a $i $chroot_path/bin/ && echo "$i done"

done

# 复制依赖的库文件(因为是i386,所以是lib,如果是x86_64,则是lib64,)

for j in $lib_1

do

cp -f $j $chroot_path/lib64/ && echo "$j done"

done

for k in $lib_2

do

cp -f $k $chroot_path/lib64/ && echo "$k done"

done

(这一些我是直接所把整个目录/lib ,放到/var/chroot/lib/目录下面,这样的坏处是,只要有人把相关的命令传到/var/chroot/bin目录下面就可以执行了。)

6拷贝一些设置环境变量的文件

系统级别:

cp /etc/bashrc /var/chroot/etc/

用户级别:

cp /home/joyway/.bashrc /var/chroot/home/web_test/

cp /home/joyway/.bash_profile /var/chroot/home/web_test

解决I have no name

vim /etc/bashrc

#service sshd restart     重启ssh服务

SSH用户限制在固定的目录下面,布布扣,bubuko.com

时间: 2024-08-10 02:11:58

SSH用户限制在固定的目录下面的相关文章

Linux启动与禁止SSH用户及IP的登录

以下就针对SSH方面讨论一下.假设有人特别关注Linux环境的安全性,第一就从login方面来进行讨论 1:Linux启动或禁止SSH root用户的登录 2:Linux限制SSH用户 事实上这些东西就是改动一个系统的配置文件 [[email protected] ~]# vi /etc/ssh/sshd_config 我们能够查看 #PermitRootLogin yes 把前面的#号去掉,yes改动为no就可以 yes 就是能够使用SSH方式的root登录 no就是禁止使用SSH方式的roo

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

《自动共享LDAP用户并且访问其家目录》RHEL6

实验的目的: 实现ldap服务器上的ldap用户被客户端访问,自动挂载到客户端,并且可以访问ldap用户的家目录. 服务端: 1.只需要配置文件: Iptables –F       关闭selinux Vim /etc/exports 客户端的配置: 2.需要安装几个软件包: 3.安装完成后启动nfs服务: 4.时间同步:编辑ntp.conf 5.重启ntp服务,使服务器与客户端时间同步: 6.ip解析:解析的是你的ldap服务器的域名 7.测试下ldap用户是否可以共享: 8.编辑自动挂载文

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

添加删除用户、组,分配目录权限

一.用户.组部分 1.添加删除用户(并分配到组) useradd -g preferred -G supplement username -g 登陆首选组 -G 其他补充组 username 用户名 2.添加删除组 groupadd groupname groupmod -n newgroupname(切换到新的组名) groupdel groupname 3.查看用户的组情况 id user id root 4.改变用户的组 usermod -g privategroup -G supplem

ubuntu server vsftpd 匿名用户上传下载及目录设置

ubuntu server vsftpd 匿名用户上传下载及目录设置 1:vsftpd服务器安装: sudo apt-get install vsftpd #安装 cd /srv/ #切换到默认匿名用户ftp目录: 运行 ls -l 我们可以看到 默认的 ftp目录是,虚拟用户ftp的根目录,并且此目录是匿名用户管理的根目录, 无论是对 ftp,改组,改用户,改权限都不能在ftp根目录下,上传东西,要么就是ftp匿名无法连接,要么就是不能上传:折腾了几天,终于明白了! ftp 作为匿名用户根目录

为VSFTP用户指定登录后的目录.原创测试通过.

VSFTP用户目录指定1修改VSFTP配置文件Vi /etc/vsftpd/vsftp.conf  #启动chroot列表chroot_list_enable=YES#指定列表位置chroot_list_file=/etc/vsftpd/chroot_list所有用户将被锁定在定义的目录  userlist_enable=yes禁止文件/etc/vsftpd/user_list文件中的用户登陆FTP  添加读取用户配置目录(注:本行配置默认没有需要手动输入)user_config_dir=/et

根据当前登录域账号 获取AD用户姓名和所在OU目录

根据当前登录域账号 获取AD用户姓名和所在OU目录 #region 根据当前登录域账号 获取AD用户姓名和所在OU目录 /// <summary> /// 根据当前登录域账号 获取AD用户姓名和所在OU目录 返回域用户是否存在 /// </summary> /// <param name="searchUser">要搜索的当前用户名</param> /// <param name="paths">out返回

19、vftpd基于PAM_MYSQL进行虚拟用户的认证且每个用户有自己的独立目录及不同的访问权限

1.vsftp相关介绍FTP 是File Transfer Protocol(文件传输协议)的英文简称 两个连接:命令连接.数据连接(相对服务器来讲)FTP连接支持两种模式:主动模式(Port模式).被动模式(Passive模式)主动模式:服务器端通过20端口主动连接客户端,客户端监听在与服务器端建立命令连接的端口+1上,服务器工作在TCP/20被动模式:客户端使用自己与服务器端建立命令连接的端口+1上连接服务器端的随机端口,该随机端口在建立命令连接的时候已发给客户端 vsftp的用户有三种类型