linux 实现普通用户只允许使用部分命令

网友投稿 875 2023-03-09

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

linux 实现普通用户只允许使用部分命令

linux 实现普通用户只允许使用部分命令

由于公司奇葩需求,需要给所有开发用户开通所有服务器的只能查看权限,结合现有jumpserver实现扩展,搭建jumpserver省略,推送一个普通用户

接下来的操作都是在系统里,这里我写了一个脚本用于实现,只允许check_user用户执行 cat ls tail tailf命令

#!/bin/bashUser="check_user"Command="cat ls tail tailf" ln -s /bin/bash /bin/rbashUser_alive=`cat /etc/passwd | grep check_user|wc -l`if [ $User_alive -eq 1 ]then    sed -i "/$User/s/\/bin\/bash/\/bin\/rbash/" /etc/passwd    mkdir /home/$User/bin    touch /home/$User/.bash_profile    if [ -f /home/$User/.bash_profile ]    then        chown root. /home/$User/.bash_profile        chmod 755 /home/$User/.bash_profile        echo > /home/$User/.bash_profilecat >> /home/$User/.bash_profile <<EOF # .bash_profile # Get the aliases and functionsif [ -f ~/.bashrc ]; then        . ~/.bashrcfi # User specific environment and startup programs PATH=\$HOME/binEOF    else        echo "profile is not exist"        exit "6"    fielse    echo "User is not exist"    exit 5fifor i in $Commanddo    dir=`whereis $i | awk "{print $2}"`    ln -s $dir /home/$User/bindone

#!/bin/bashUser="check_user"Command="cat ls tail tailf" ln -s /bin/bash /bin/rbashUser_alive=`cat /etc/passwd | grep check_user|wc -l`if [ $User_alive -eq 1 ]then sed -i "/$User/s/\/bin\/bash/\/bin\/rbash/" /etc/passwd mkdir /home/$User/bin touch /home/$User/.bash_profile if [ -f /home/$User/.bash_profile ] then chown root. /home/$User/.bash_profile chmod 755 /home/$User/.bash_profile echo > /home/$User/.bash_profilecat >> /home/$User/.bash_profile <

实现后发现后续问题目前还没有解决

1,本想把cd加上,但是centos是可以,ubuntu是不可以,因为cd在ubuntu里不算命令是内置内核里的,不知怎么解决

2,tab补全功能有的机器可以,有的不可以不知道为什么

这边测试了直接cd 不行

centos7和centos6的cd位置也不一样

后面发现cd 需要先执行一下bash才可以,而且必须是root切换到read_user才可以。

在/usr/bin下查看cd 还是需要bash执行。

只能修改Command="bash cd cat ls tail tailf",这样用户会有执行bash的权限。还是要根据实际情况设置。

上一篇:Nginx网站架构实战——01、nginx介绍及编译安装
下一篇:“深入浅出”来解读Docker网络核心原理
相关文章

 发表评论

暂时没有评论,来抢沙发吧~