网站首页 > linux / 正文
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创建用户命令
猜你喜欢
- 2024-11-26 以其他用户的身份执行Linux命令
- 2024-11-26 Linux常用指令简介(1):用户和权限管理
- 2024-11-26 Linux记录用户操作命令
- 2024-11-26 Linux开机自启动程序配置,适用于webman命令行启动的程序
- 2024-11-26 Linux建立软/硬链接文件(ln命令)
- 2024-11-26 Linux基础之创建运行脚本
- 2024-11-26 Linux系统如何设置开机自动运行脚本?
- 2024-11-26 Linux创建新用户并使用证书远程登录
- 2024-11-26 linux批量添加用户
- 2024-11-26 每日一个Linux命令解析——newusers