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

2 篇文章 0 订阅

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

基本思路:建立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.csdn.net/download/ioryhm/13101523

 

 

Linux,您可以使用以下方法限制SSH登录用户: 1. 使用`/etc/ssh/sshd_config`文件:编辑SSH服务器的配置文件`sshd_config`,通常位于`/etc/ssh/`目录下。找到并修改以下行: - `AllowUsers`:在该行后添加要允许登录的用户名列表,仅这些用户将被允许登录。例如: ``` AllowUsers john jane ``` - `DenyUsers`:在该行后添加要拒绝登录的用户名列表,这些用户将被禁止登录。例如: ``` DenyUsers test ``` - `AllowGroups`:在该行后添加要允许登录的用户组列表,仅属于这些用户组的用户将被允许登录。例如: ``` AllowGroups sshusers ``` - `DenyGroups`:在该行后添加要拒绝登录的用户组列表,属于这些用户组的用户将被禁止登录。例如: ``` DenyGroups ftpusers ``` 保存文件并重新启动SSH服务以使更改生效。 2. 使用`/etc/hosts.allow`和`/etc/hosts.deny`文件:您可以使用这两个文件来限制SSH登录。编辑`/etc/hosts.allow`文件,添加以下行: ``` sshd: <允许登录的IP地址或IP地址范围> ``` 编辑`/etc/hosts.deny`文件,添加以下行: ``` sshd: ALL ``` 这将拒绝除了在`hosts.allow`文件指定的IP地址之外的所有SSH连接。 3. 使用防火墙:配置防火墙以仅允许特定IP地址或IP地址范围进行SSH连接。您可以使用iptables命令(如`iptables -A INPUT -p tcp --dport 22 -s <允许登录的IP地址> -j ACCEPT`)或其他防火墙工具来实现。 请注意,在进行任何更改之前,请确保您具有足够的权限,并备份相关文件以防止意外错误。另外,确保不要将自己锁定在系统外部,以免无法远程登录。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值