在日常业务运维工作中,经常需要为非运维人员开通系统账号,方便他们查询日志或查看代码。为了确保系统安全并防止误操作,通常会将账号权限限制到最低。下面详细介绍在Linux环境下,如何通过受限bash(rbash)创建具有指定权限的账号,操作步骤如下:
[root@mq-server ~]# ln -s /bin/bash /bin/rbash
[root@mq-server ~]# useradd -s /bin/rbash wangshibo
[root@mq-server ~]# passwd wangshibo
[root@mq-server ~]# mkdir /home/wangshibo/bin
[root@mq-server ~]# chown root. /home/wangshibo/.bash_profile
[root@mq-server ~]# chmod 755 /home/wangshibo/.bash_profile
[root@mq-server ~]# vim /home/wangshibo/.bash_profile //复制下面的内容覆盖原内容
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$HOME/bin
export PATH
[root@mq-server ~]# ln -s /bin/cat /home/wangshibo/bin/cat
[root@mq-server ~]# ll /home/wangshibo/
total 4
drwxr-xr-x 2 root root 4096 Nov 25 23:38 bin
[root@mq-server ~]# ll /home/wangshibo/bin/
total 0
lrwxrwxrwx 1 root root 8 Nov 25 23:12 cat -> /bin/cat
完成上述配置后,你会注意到新创建的wangshibo用户,其家目录下的所有文件权限均归属于root.root。这里仅授予了cat命令的权限,并且该用户只能使用cat查看自己家目录 /home/wangshibo 内的文件。除cat外,其他任何命令都无法执行。
[wangshibo@mq-server ~]$ cat /var/log/messages cat: /var/log/messages: Permission denied [wangshibo@mq-server ~]$ ls -rbash: /home/wangshibo/bin/ls: No such file or directory [wangshibo@mq-server ~]$ touch test -rbash: /home/wangshibo/bin/touch: No such file or directory
如果希望该账号在家目录下具备执行其他命令的权限,则需要将这些命令的软链接添加到 /home/wangshibo/bin 目录中(可以使用 which 命令查找二进制命令的完整路径)。
[root@mq-server ~]# ln -s /bin/ls /home/wangshibo/bin [root@mq-server ~]# ln -s /bin/touch /home/wangshibo/bin [root@mq-server ~]# ln -s /bin/mkdir /home/wangshibo/bin [root@mq-server ~]# ln -s /usr/bin/vim /home/wangshibo/bin/ [root@mq-server ~]# ll /home/wangshibo/bin/ total 0 lrwxrwxrwx 1 root root 8 Nov 25 23:12 cat -> /bin/cat lrwxrwxrwx 1 root root 7 Nov 25 23:44 ls -> /bin/ls lrwxrwxrwx 1 root root 10 Nov 25 23:45 mkdir -> /bin/mkdir lrwxrwxrwx 1 root root 10 Nov 25 23:44 touch -> /bin/touch lrwxrwxrwx 1 root root 12 Nov 25 23:45 vim -> /usr/bin/vim
经过上述操作,wangshibo用户便获得了所列命令的执行权限:
[root@mq-server ~]# su - wangshibo [wangshibo@mq-server ~]$ ls bin [wangshibo@mq-server ~]$ touch test [wangshibo@mq-server ~]$ mkdir ops [wangshibo@mq-server ~]$ vim test [wangshibo@mq-server ~]$ cat test dsfdsafsadf [wangshibo@mq-server ~]$ rm -f test -rbash: rm: command not found [wangshibo@mq-server ~]$ ls /usr/bin etc games include lib lib64 libexec local sbin share src tmp [wangshibo@mq-server ~]$ cat /var/log/messages cat: /var/log/messages: Permission denied
采用这种方案,既能满足非运维人员的基本操作需求,又能有效降低潜在的安全风险。在实际部署中,可以根据具体需求灵活添加或移除命令的软链接,从而实现精细化的权限控制。
