通过受限bash创建只读用户

受限bash

  • bash本身也有一定的限制功能,就是通过其(受限shell) restricted shell 功能。
  • 如果bash是以rbash为名启动,或者使用-r选项运行,它就称为受限shell。
  • 受限bash所做的限制包括:
    • 阻止用户改变目录和环境变量
    • 重定向输出
    • 使用绝对路径运行命令
    • 使用exec命令和其它一些操作

限制的操作

受限shell能够使系统环境更好控制。如果启动受限shell,以下操作将被禁止:

  1. 使用cd命令切换目录;
  2. 设置或者取消SHELL、PATH、ENV或者BASH_ENV环境变量;
  3. 以绝对路径运行命令(即命令名中不能包含目录分隔符“/”);
  4. 以绝对路径指定的文件名作为内置命令”.”的参数;
  5. 在启动时通过 shell 环境导入函数定义;
  6. 在启动时通过 shell 环境解析 SHELLOPTS 的值;
  7. 使用>、>|、>&、&>和>>等重定向操作重定向输出;
  8. 使用exec命令使其它的命令代替当前shell;
  9. 通过enable内置命令的 -f 和 -d 选项增加或删除内置命令;
  10. 执行内置命令command时加上 -p 选项;
  11. 通过 set +r 或 set +o restricted 关闭受限模式;

配置步骤

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
ln -sv /bin/bash /bin/rbash
# 为限制用户创建rbash

install -cdv /work/
# 创建主工作目录

useradd -d /work/ -s /bin/rbash loveyou
# 创建限制用户,指定家目录为/work,跳过skel文件复制,指定shell为/bin/rbash

passwd loveyou
# 为限制用户创建密码

mkdir -pv /work/subin
# 为限制用户创建允许使用的命令目录

test `/usr/bin/id -g` -eq 500 && export PATH=/work/subin
# 修改环境变量/etc/profile,判断组ID,使可用命令为家目录下的subin目录

ln -sv /bin/su /work/subin/su
ln -sv /bin/cat /work/subin/cat
# 创建允许使用的命令

alias su='su -l'
# 在/etc/profile前面定义别名
有钱任性,请我吃包辣条
0%