linux 限制用户执行命令

linux怎么限制用户只能执行一个命令比如telnet这个命令其它的命令都不行... linux 怎么限制用户只能执行一个命令比如telnet这个命令其它的命令都不行 展开
 我来答
sunyqg
推荐于2017-10-01 · TA获得超过1084个赞
知道小有建树答主
回答量:477
采纳率:75%
帮助的人:632万
展开全部
只要用户能登录到系统的shell,就可以执行shell集成的若干命令,如export, set等,另外他还可以通过在环境变量PATH中添加/bin目录,获得/bin下的所有执行文件的执行权(系统已放开给所有用户执行)。
所以要限制他只能执行一条命令,只有将用户登录的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
zhanzc1
2012-07-12 · 超过60用户采纳过TA的回答
知道小有建树答主
回答量:97
采纳率:0%
帮助的人:81.2万
展开全部
把用户登录的shell改成那维一的 telnet程序可以.
也可以把shell改成一个脚本之类的东西. 限制它.
再或是建个受限shell环境.

这是由简单到复杂.我想到的三种办法.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式