• Linux基础知识与实操-篇七:用户身份切换与特殊控制



    在理解了前篇 篇六:用户权限控制与账号管理 后,我们继续深入用户权限控制关于用户身份切换、限制特殊权限相关的内容。

    使用者身份的切换

    操作服务器的几个建议:

    • 使用一般账号(非root账号)进行系统操作,可以避免很严重的错误指令
    • 使用较低权限启动系统服务
      比对对于不同的系统服务,apachemysql 等服务,分别单独建立一个用户专门用来启动该服务,防止破坏整个系统
    • 软件本身的限制
      有些软件默认就是不允许root 身份登录的,比如elasticsearch,只能使用一般用户登录

    image

    关于su命令的使用,还有有要注意的地方的:

    su [-lm] [-c 指令] [username]
    
    -  单纯使用- ,代表 login -shell 方式登录系统,如果后面没有 使用者,则默认是 root身份
    -l  与-类似,但后面需要加上要切换的使用者的账号,也是 login-shell的方式
    -m  与-p命令一样,表示目前的环境设定,而不读取使用者的配置文件
    -c  仅进行一次的命令,所以-c后面可以加指令
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    这个su 命令有没有那个-,差距还是比较大的,如下:
    image

    单纯使用『 su 』切换成为 root 的身份, 读取的变量设定方式为 non-login shell 的方式,这种方式
    很多原本的变量不会被改变
    ,所以很多root的惯用指令,只能通过 绝对路径执行,因为 环境变量 并不是 root!
    所以在切换身份到root时,务必使用su - 命令
    image


    如果未来防止root用户的密码泄露,有想要使用root的执行权限,就可以通过sudo 命令来实现 使用root身份来执行命令,而且只有/etc/sudoers 内的用户才可以使用 sudo命令

    基本使用如下:

    sudo [-b] [-u 新使用者账号] 
    
    -b  将后续的指令放到背景中让系统自行执行,不与目前的shell产生影响
    -u  后面可以接要切换的使用者,若无此选项,则表示切换到root
    
    • 1
    • 2
    • 3
    • 4

    执行 sudo 的流程如下:
    image

    所以 sudo命令的重点就是,必须要看/etc/sudoers的设定值,可以使用sudo的是通过输入用户自己的密码来执行后续的指令串的,但是sudoers文件不建议直接修改,最好是通过visudo命令进行修改

    配置sudo

    除了 root 之外的其他账号,若想要使用 sudo 执行属于 root 的权限指令,则 root 需要先使用 visudo 去修改 /etc/sudoers ,让该账号能够使用全部或部分的 root 指令功能, 这是由于 etc/sudoers 是有设定的语法的,如果设定错误的话,会造成无法使用功能sudo指令的不良后果,所以需要 visudo 去修改,这样在结束修改的时候,系统会自动检查语法

    一般在某用户使用 sudo 命令时,是需要输入 该用户的密码的,但是如果两次执行 sudo 的时间间隔在 五分钟之内,那么再次执行 sudo 就不用再次输入密码了

    单一用户

    设置单一用户可以进行root所有指令:
    image

    在主机可以修改的位置如下:
    image-20220609203258724

    这其中四个组件的含义如下:

    1. 使用者账号:即系统的那个账号可以使用sudo这个指令
    2. 登入者的来源主机名:指定客户端计算机,相当于信任源
    3. 可切换的身份:该账号可以切换为什么身份来下达后续的指令,默认的root表示可以切换为任何人
    4. 可下达的指令:可以使用该指令下达什么命令

    上面的 ALL 是个特殊的关键词,表示 任何身份、主机或指令的意思

    群组处理

    对于群组的处理:
    image

    image

    上面的设定值就表示 任何加入wheel这个群组的使用者,都可以使用sudo 切换身份来操作任何指令,就相当于是 群管理员了。

    有限制的命令操作

    实现用户仅能进校部分系统任务,比方说,系统上面的 myuser1 仅能够帮 root 修改其他用户的密码时,亦即『当使用者仅能使用 passwd 这个指令帮忙 root 修改其他用户的密码』时 的情况
    image

    如果现在有 若干个用户,需要设置为同样的权限,可以不用写这样的若干行代码,而是通过 别名实现:
    image

    如果需要大量执行很多root的工作,可以使用sudo 搭配su 使用:
    image

    特殊shell与PAM模块

    考虑建立仅使用系统资源,但是不登录系统的权限,就是可以使用部分系统资源,但是无法使用bash或者shell来登录系统,在Linux主机中,各个系统账号,打印作业由 lp 这个账号在管理, WWW 服务由 apache 这个账号在管理, 他们都可以进行系统程序的工作,但是『就是无法登入主机取得互动的 shell』而已
    image

    PAM:可以说是一套应用程序编程接口 (Application Programming Interface, API),他提供了一连串的验证机制,只要使用者将验证阶段的需求告知 PAM 后, PAM 就能够回报使用者验证的结果 (成功或失败)。
    执行流程如下:
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-osrXzymQ-1667999827129)(02鸟哥的Linux私房菜10-14.assets/image-20220609210210360.png)]

    关于PAM的其他内容,这里不再整理 详见 《鸟哥的Linux私房菜》13.5.3、13.5.4、13.5.5

    Linux用户信息传递

    关于Linux某个账号的信息,查询使用者的命令,上面的 idconfig 命令都可以实现,last 命令可以查询该用户登录的时间

    查询目前已经登录再系统上的用户: wwho
    image

    每个账号最近登录时间:lastlog, 该命令会去读取 /var/log/lastlog 文件
    image

    与当前系统上其他用户对话

    通过write命令将 信息传递给 接受者

    write 使用者账号 [用户所在终端接口] 
    
    • 1

    使用如下:
    image

    但是 mesg 这个命令对 root 传递的信息没有任何阻挡力

    还可以使用mail 命令操作:
    image

    收信者,只要使用 mail命令就可以打开收件箱,查看 邮件信息了,在输入提示符那里,可以输入操作指令:
    image

    建立大量账号

    先看pwck 命令:pwck 这个指令在检查 /etc/passwd 这个账号配置文件内的信息,与实际的家目录是否存在等信息,还可以比对 /etc/passwd /etc/shadow 的信息是否一致,另外,如果 /etc/passwd 内的数据字段错误时,会提示使用者修订
    image

    本部分没有整理,详见 《鸟哥的Linux私房菜》13.5.7

    最后

    一起提高,慢慢变强

  • 相关阅读:
    DDR3 controller 之储存器介绍
    锯齿波-RC充放电路
    【预测模型-DELM分类】基于风驱动算法改进深度学习极限学习机实现数据分类附matlab代码
    APP 兼容性专项测试
    信息系统项目管理师必背核心考点(四十七)项目分包合同
    基础 | 并发编程 - [线程状态 & 中断]
    如何深度了解汤泉场所?VR全景给你答案
    动态规划篇——DP问题
    想做大模型开发前,先来了解一下MoE
    ES6 | 解构、模板字符串、简化对象、箭头函数
  • 原文地址:https://blog.csdn.net/qq_45966201/article/details/128137011