linux 限制用户执行命令
2个回答
展开全部
只要用户能登录到系统的shell,就可以执行shell集成的若干命令,如export, set等,另外他还可以通过在环境变量PATH中添加/bin目录,获得/bin下的所有执行文件的执行权(系统已放开给所有用户执行)。
所以要限制他只能执行一条命令,只有将用户登录的shell换成这个命令(telnet):
vim /etc/passwd
test:x:1006:1008::/temp/test:/usr/bin/telnet
从而使他登录到系统只能执行一次此命令,便退出。
所以要限制他只能执行一条命令,只有将用户登录的shell换成这个命令(telnet):
vim /etc/passwd
test:x:1006:1008::/temp/test:/usr/bin/telnet
从而使他登录到系统只能执行一次此命令,便退出。
追问
大侠,那我要是只让他执行ssh该怎么设置?
追答
复杂一点吧:
一、方法一:
1、建立用户
useradd test -s /home/test/bin/login.sh -m
2、创建用户的命令目录
mkdir /home/test/bin
chown test.test -R /home/test
3、创建登录脚本
vim /home/test/bin/login.sh
#!/bin/sh
stty erase ^H
stty kill ^U
echo -en "SSH to Host :"
read host
echo -en "UserName: "
read username
/usr/bin/ssh $host -l $username
给脚本加上执行权限:
chmod +x /home/test/bin/login.sh
注意:
^U 是Ctrl+v、Ctrl+u组合输入的
^H 是Ctrl+v、Ctrl+Backspace输入的
这2个命令是为ssh登录时编辑输入的内容用的。
这个login.sh中可以增加其它参数,修改它还可以运行其它命令。
二、方法二
用这个登录脚本的内容覆盖其他用户的home目录下的.profile文件,就可以限制那个用户了,需要注意的是在输入状态用户用Ctrl+C可以退出脚本,进入Shell,所以还要加上信号处理:
#!/bin/sh
stty erase ^H
stty kill ^U
# signal handler
exit_()
{
echo -e "\nSSH Interrupted."
logout
}
# Signal handler
trap exit_ SIGINT SIGTERM SIGQUIT
echo -en "SSH to Host :"
read host
echo -en "UserName: "
read username
/usr/bin/ssh $host -l $username
logout
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询