zoukankan      html  css  js  c++  java
  • su用户身份切换与sudo提权

    su用户切换与sudo提权

    因为root用户的权限太大,容易对系统造成强大破坏,安全风险极高,所以通常情况下生产环境的服务器对外都是禁止root用户直接登录的,通常都是使用普通用户来管理系统,为了让普通用户拥有root权限又能保证服务器的安全,就需要用到su与sudo命令。

    • 1、su:切换身份。
      • 优点:简单
      • 缺点:1、需要知道root密码(不安全)。2、权限控制不精细(会获取所有root权限)
    • 2、sudo:提取部分管理员权限,不用切换到root账户下。
      • 优点:1、不需要知道root密码(只用输入自己的密码)。2、权限控制更为精细(可以只获取部分root权限)
      • 缺点:相对复杂

    su切换用户

    在Linux中shell可以分两类:

    • 登录shell,需要输入用户名和密码才能进入shell。
    • 非登录shell,不需要输入用户名和密码就能进入shell,比如运行bash会开启一个新的会话窗口。

    shell的使用有两种:

    • 交互式:等待用户输入执行的命令。
    • 非交互式:执行shell脚本,执行结束后shell自动退出。

    bash配置文件(主要保存用户的工作环境)

    全局配置文件:

    • /etc/profile
    • /etcprofile.d/*.sh
    • /etc/bashrc

    个人配置文件:

    • ~/.bash_profile
    • ~/.bashrc

    profile类文件:设定环境变量,登录前运行的脚本和命令。

    bashrc类文件:设定本地变量,定义命令别名。

    注:如果全局配置和个人配置冲突,以个人配置为准。

    配置文件加载顺序

    • 登录式shell

    /etc/profile -> /etc/profile.d/*.sh -> ~/.bash_profile -> ~/.bashrc -> /etc/bashrc

    • 非登录式shell

    ~/.bashrc -> /etc/bashrc -> /etc/profile.d/*.sh

    # 非登录式shell:只切换用户身份
    su 用户名
    
    # 登录式shell:身份与环境都切换
    su - 用户名
    
    # -c选项切换身份执行命令
    su - 用户名 -c “命令”
    # root切换到普通用户不需要,反之需要。
    

    sudo提权

    sudo命令不需要知道root用户密码,并且能仅划分一部分权限给普通用户,相比于su更安全。sudo可以切换

    sudo配置

    • 1、visudo命令(会提示语法错误,推荐使用)

      # visudo的本质也是调用vi来修改/etc/sudoers文件,该文件涉及权限问题,如果配置错误会导致系统问题。推荐使用visudo命令,它会在退出时有错误提示。
      -c:检查配置是否正确
      
    • 2、vim /etc/sudoers修改配置文件。

    /etc/sudoers配置方式

    # 基本格式
    user/group	ALL=(ALL)	ALL
    
    • user/group:

      • 表示允许哪个用户或组可以使用sudo

        • # 可以指定具体某个用户,也可以将多个用户添加到别名里
          User_Alias ADMINS =chirou, panghu
          ADMIN	ALL=(ALL)	ALL
          
          # 指定系统组,在组名前面加上%
          %group	ALL=(ALL)	ALL
          
    • 第一个ALL:

      • 表示允许在哪台主机登录

        • # 可以指定主机ip或主机名,指定的是服务端ip,与从哪个客户端连接无关。
          user	192.168.0.2=(ALL)	ALL
          
          # /etc/sudoers文件可以共享复制到多部主机上,这样只修改一份文件,指定哪个用户可以在哪台主机使用sudo命令,就可以直接拷贝到其他主机上,非该主机用户不能使用sudo,这样就能分主机管理,互不影响。
          
    • 第二个ALL:

      • 表示能转换成哪个用户

        • # 胖虎可以在所有主机上转换成所有用户执行任何命令
          panghu	ALL=(ALL)	ALL
          
    • 第三个ALL:

      • 表示转换后能执行的命令

        • # ALL表示所有命令,可以使用绝对路径指定某些命令
          /usr/sbin/ifconfig,/bin/vim /f1
          
          # 指定不能使用某些命令
          !/bin/vim /f1
          
          # 指定使用某些命令不需要输入密码
          NOPASSWD:/usr/sbin/ifconfig
          
          # 可以使用命令别名
          NOPASSWD:命令别名
          

    sudo执行流程

    • 1、普通用户执行sudo命令,会检查/var/db/sudo是否存在时间戳缓存
    • 2、如果存在则不需要输入密码,否则需要输入用户与密码
    • 3、输入密码会检查是否是该用户、是否拥有权限。
    • 4、如果有则执行,没有则报错退出。

    sudo常用选项

    -l:登录用户下,执行命令显示当前用户有哪些权限。
    -k:删除/var/db/sudo下面对应的时间戳的信息,下次执行sudo需要输入当前用户的密码,系统默认是五分钟。
    -u:指定用户,可以指定/sbin/nologin用户,不指定则为root。
    -b:将命令放入后台运行。
    
    [chirou@duorou ~ ]$ tail /etc/passwd
    gdm:x:42:42::/var/lib/gdm:/sbin/nologin
    # 指定/sbin/nologin用户
    [chirou@duorou ~ ]$ sudo -u gdm touch /tmp/gdm
    [sudo] chirou 的密码:
    [chirou@duorou ~ ]$ ll /tmp/gdm
    -rw-r--r--. 1 gdm gdm 0 10月 31 20:55 /tmp/gdm
    
  • 相关阅读:
    IntelliJ IDEA 快捷键终极大全,速度收藏!
    49式!Python初级到高级招式都全了
    字节跳动三轮技术面_后端研发提前批
    这样让你的 IDEA 好用到飞起来!
    你 多久没有跳槽了?
    推荐几款能提升代码效率的笔记应用
    推荐 15 款编程游戏,从此谁都可以学编程!
    StackOverflow 创始人关于如何高效编程的清单
    11 条编程经验分享
    InnoDB和MyISAM存储引擎的区别
  • 原文地址:https://www.cnblogs.com/ChiRou/p/13911886.html
Copyright © 2011-2022 走看看