MySQL, Oracle, Linux, 软件架构及大数据技术知识分享平台

网站首页 > linux / 正文

linux上一个简单限制用户命令方法

2024-11-26 16:20 huorong linux 4 ℃ 0 评论

linux 限制用户命令方法

linux 上想限制用户可以执行的命令,有很多种方法,今天说一个简单通过配置环境变量方式来限制用户执行的命令。

环境变量的方式

将下面脚本放在 /etc/profile.d/ 下,每个用户登入的时候都会执行这里的环境变量脚本。
脚本中判断当前用户,root 用户不受权限。

vim /etc/profile.d/login.sh

#!/bin/bash
m=`whoami`

if [[ "${m}" != "root" ]];then
    echo -e "\e[01;33m* ** 你目前登录的账户是: \e[01;31m$LOGNAME\e[00m  ** \e[00m"
    echo -e "\e[01;33m* ** 可以登入你申请的主机\e[00m"
    mkdir -p $HOME/bin
    rm -f $HOME/bin/*
    ln -s /bin/ls $HOME/bin
    ln -s /bin/ping $HOME/bin
    ln -s /usr/bin/ssh $HOME/bin/
    ln -s /usr/bin/ssh-copy-id $HOME/bin/
    ln -s /usr/bin/ssh-keygen $HOME/bin/
    ln -s /usr/bin/expect $HOME/bin/
    ln -s /bin/grep $HOME/bin/
    ln -s /usr/sbin/ifconfig $HOME/bin/
    ln -s /usr/sbin/ip $HOME/bin/
    cat << EOF > $HOME/.newbash_profile
PATH=$HOME/bin
export PATH
EOF
    chown ${m}:${m} $HOME/.newbash_profile
    exec bash --restricted --noprofile --rcfile $HOME/.newbash_profile
fi

这里的--restricted是将用户的shell变为受限制的shell,--noprofile是不加载系统的profile文件,--rcfile是加载我们自定义的profile文件

当用户登入的时候,用户bash就会变了,可以执行的命令都是用户家目录的bin下。

bash-4.2$ ls bin/
expect  grep  ifconfig  ip  ls  ping  ssh  ssh-copy-id  ssh-keygen
bash-4.2$ 

如果想添加新的命令,就在将命令放在 $HOME/bin/ 目录下,就可以了, 很简单,也很灵活。甚至可以根据用户来设置,多一些 if 判断就可以了。

用户要是执行没有执行的命令,就会报命令没有找到

bash-4.2$ whoami
bash: whoami: command not found

如果用户是指定命令的绝对路径执行, 那也不行。

bash-4.2$ /usr/bin/whoami
bash: /usr/bin/whoami: restricted: cannot specify `/' in command names

想切换目录的话也是不行的

bash-4.2$ cd /var/log
bash: cd: restricted

所以这种方式还是很不错的!

Tags:linux创建用户命令

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言