用户ssh登陆后限制在指定目录中,linux创建只读用户

应用场景:建立只读用户,只让该用户访问特定的日志目录,则该用户登陆后只在该目录下,只能查看该目录下的一些内容,无法向上切换目录。

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

说明:下面所用命令测试基于redhat7或centos7版本

我们现在建立一个用户rouser,并把它限定在/home/readonly目录下

1、建立用户,并修改ssh参数使用户登陆后限制在某个目录中

mkdir -p /home/readonly    #要限制用户登陆时的目录,已有的就不需要新建了。

useradd -M rouser    #建立用户,不需要建立家目录

echo "rouser" | passwd --stdin rouser    #为用户设置登陆密码

/etc/ssh/sshd_config中最后添加

    Match User rouser

    ChrootDirectory /home/readonly    #指定限制的目录

2、在给定的目录中建立chroot监狱环境,创建用户登陆必要的文件

mkdir /home/readonly/{bin,dev,lib64,etc}

mknod /home/readonly/dev/null c 1 3

mknod /home/readonly/dev/zero c 1 5

mknod /home/readonly/dev/random c 1 8

mknod /home/readonly/dev/urandom c 1 9

mknod /home/readonly/dev/tty c 5 0

chmod 0666 /home/readonly/dev/{null,zero,tty}

将/etc/passwd和/etc/group中root和rouser两行分别添加到/home/readonly//etc/passwd和/home/readonly//etc/group中

3、拷贝命令,用于给只读用户添加一些常用的命令

# 要允许执行的文件列表
cmdlist="/bin/bash /bin/ls /bin/vi /bin/vim /bin/pwd /bin/more /bin/less /bin/cat /bin/tail /bin/head"
#chroot路径
chroot_path=/home/readonly/
# 判断依赖的库文件
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

4、设置环境变量和selinux上下文

cp /etc/bashrc /home/readonly/etc/
echo 'export PATH=$PATH:/bin' >> /home/readonly/etc/profile
## 升级openssh版本并开启selinx的话,需要更改以下几项,否则会出现用户无法登陆的情况。
chcon -R -t bin_t /home/readonly/bin
chcon -R -t lib_t /home/readonly/lib64
chcon -R -t etc_t /home/readonly/etc
chcon -R -t device_t /home/readonly/dev
chcon -R -t tty_device_t /home/readonly/dev/*

按照惯例一键部署脚本已配置好,有需要点下面链接进行下载

https://download.youkuaiyun.com/download/ioryhm/13101523

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值