首页 / 小白资源

(3) Linux运维脚本-特权管理模块

发布时间:2023-11-20 08:34:53

书接上回,把上次关于 sudo 提权的配置脚本化,需求如下:

一、 方法实现

1. 查看拥有sudo权限的用户,分为非免密和免密两种     

# 查看用户function ViewPrivi () {  clear  $Blue "如下账号可以sudo 提权: " $End  for i in `grep -vE '^\s*$|^#|NOPASS' /etc/sudoers | grep 'ALL='| awk '{print $1}'` ;  do     $Yellow "$i" $End  done  $Cyan "如下账号可以免密sudo提权: " $End  for i in `grep -vE '^\s*$|^#' /etc/sudoers | grep 'NOPASS'| awk '{print $1}'` ;  do     $Pink "$i" $End  done}

执行效果:

 2. 授权用户sudo权限

function AddPrivi() {  clear  adduser=$1  if grep -q ${adduser} /etc/passwd; then    sed -i "/${adduser}/d" /etc/sudoers    echo "${adduser}  ALL=(ALL)   ALL" >> /etc/sudoers    $Yellow "${adduser} 已经具备sudo 能力!" $End#   ViewPrivi  else    $Red "${adduser} 用户不存在!" $End  fi}

执行效果:

 3. 取消用户sudo权限

function DelPrivi() {  clear  adduser=$1  if grep -q ${adduser} /etc/passwd; then    sed -i "/${adduser}/d" /etc/sudoers    $Red "${adduser} 已经失去sudo 能力!" $End#   ViewPrivi  else    $Red "${adduser} 用户不存在!" $End  fi}

执行效果:

、 交互菜单实现
     采用while循环和read来获取用户选择(输入)再用case来匹配用户的输入,根据匹配情况调用对应的函数,从而获得更好的用户体验。

1. 用户交互菜单如下

# 提权管理sudo_management() {    while true; do        $Red "===== 提权管理 ====="$End    while true; do        $Red "===== 提权管理 ====="$End        $Yellow "1. 查看sudo用户"$End        $Yellow "2. 禁止用户sudo"$End        $Yellow "3. 允许用户sudo"$End        $Blue "0. 返回菜单"$End
read -p "请选择操作 (0-3): " sudo_option
case $sudo_option in 1) ViewPrivi ;;            2)                 SelectUser read -p "请输入要禁止sudo的用户名: " nosudo_user DelPrivi ${nosudo_user} ;; 3) SelectUser read -p "请输入要允许sudo的用户名: " yessudo_user AddPrivi ${yessudo_user} ;; 0) break ;; *) echo "无效的选项" ;; esac done}

 2. 执行效果

=====持续关注=====

下一期 把这三个模块整合在一起,做成一个日常运维管理菜单。

相关推荐