zoukankan      html  css  js  c++  java
  • Linux用户管理

    一、Linux用户管理概念及原理

      问题:为什么要用户管理?

      答:这不废话嘛!就比如企鹅,你得注册成一个用户才能够进行登录聊天,这样的操作在服务端就是用户组管理。想要访问服务器都必须以一个用户的身份访问。不同的用户当然权限不同,比如QQ会员就和普通QQ用户权限不一样。所以需要用户管理以及用户组管理。

      需要掌握的内容,我们需要掌握用户(用户组)的创建和删除,权限的增改等命令。了解其底层原理(一般都是通过/etc/passwd、/etc/shadow、/etc/group等文件来管理)。

      用户组的概念

        1、每个用户至少属于一个用户组

        2、每个用户组可以包括多个用户

        3、同一用户组的用户享有该组共有的权限

    二、Linux用户管理相关配置文件  

    1、用户信息文件:/etc/passwd

      内容中是每个用户的条目,例:

      root:x:0:0:root:/root:/bin/bash

      用户名:密码位:UID:组ID:描述信息:宿主目录:命令解释器(shell)(命令解释器写错或是写nologin的话用户无法登陆)

      其中第二位密码位为x是有原因的,因为/etc/passwd文件是需要在操作中被读取的,所有用户都具有可读的权限,这样如果一个用户读取了passwd的内容,就可以看到其他用户的密码了。这样安全性无法得到保障。而真正的密码保存在/etc/shadow 

    2、用户类型

      超级用户(root,UID=0)通过更改/etc/passwd中用户的UID为0可以获得和root一样的权限,更改其他用户的密码不会被最大时间间隔或最小时间间隔限制

      普通用户(UID=500-60000)

      伪用户(UID=1-499)

        1、伪用户与系统和程序服务相关

          bin、daemon、shutdown、halt等,任何Linux系统默认都有这些伪用户

          mail、news、gamespot、apache、ftp、mysql、及sshd等,与系统进程相关

        2、伪用户通常不需要或无法登陆系统,

        3、可以没有宿主目录

    3、密码文件:/etc/shadow

      内容也是每个用户的条目,例: 

      root:$6$QpYf8pdA$vno62eTOoQWWuDGC8lFeukXTTuYpkZ8712tikLxmN3uBWu1TPG3WqPiLqEP6ZA0HFx55jUisx0yTyoriQEvd01:16905:0:99999:7:::

      用户:经过密文加密的密码:最后一次修改时间(Unix的创建日期起计算):最小时间间隔(要修改密码不行几天后):最大时间间隔(多少天后必须更换密码):警告时间(默认7天):

      用户的创建过程中,首先先将相关信息(文件名,密码,宿主目录(默认在/home目录下创建一个和用户名一样的目录)等)写入passwd文件中,再将密文转换到shadow中去,再复制/etc/skel中的文件到用户的宿主目录中去,这跟使用usradd命令大体上一致。用户登录时首先验证passwd和shadow文件内容。

      通过使用pwunconv和pwconv可以关闭和开启shadow的功能

    4、其他配置文件  

      a、用户组文件:/etc/group  用户组的相关信息

      b、用户组密码文件:/etc/gshadow

      c、用户配置文件:

        /etc/login.defs  用户默认登录设置

        /etc/default/useradd  

      d、新用户信息文件:/etc/skel  可以在这个目录中放一些添加用户时需要加入的信息(文件),使用命令添加用户时会自动将该目录的文件添加到用户宿主目录中

      e、登录信息:/etc/motd

    三、Linux用户管理常用命令 

      1、用户管理命令

        1、添加用户useradd

        2、删除用户userdel -r [username] 想要彻底删除就要带上选项“r”,否则只是删除/etc/passwd、/etc/shadow、/etc/group、/etc/gpasswd中相关信息,但是/home目录下的宿主目录和/var/spool/mail下的邮箱目录都没有删除。这样再次创建同名的文件时会报错。无法创建。

        2、添加组groupadd

        3、用户添加进组里

          ·usermod -G [groupname] [username]

          ·gpasswd -a [username] [groupname]

            -a  添加用户到用户组

            -d  从用户组中删除用户

            -A  设置用户组管理员

            -r  删除用户组密码

            -R  禁止用户切换该组

        4、授权多个用户能够操作同一文件。如果是单个用户的话,修改该文件的所有者就可以了,但是如果需要多个用户对该文件有某类权限时,就需要用到用户组的概念。

          将多个用户添加到一个用户组中,修改该文件的所属组,再设置相关权限即可。例:授权用户jack和tom对目录software有写操作

          #groupadd softadm    创建一个用户组

          #usermod -G softadm jack  向这个用户组添加多个用户

          #gpasswd -a tom softadm

          #chgrp softadm /software  改变该目录的所属组

          #chmod g+w /software    更改所属组的权限

      2、用户组管理命令

        groupadd  添加用户组

        groupdel  删除用户组

        groupmod  修改用户组

        groups  查看一个用户隶属哪些用户组

        newgrp  切换用户组

      3、常用命令

        pwck  检测/etc/passwd文件

        vipw  (专门)编辑/etc/passwd文件,因为大多数的文本编辑命令不会锁定文件(指多个用户可以同时修改文件)vipw可以锁定passwd文件

        id  查看用户id和组信息

        finger  查看用户详细信息

        su  切换用户(su -   环境变量也会切换)每个用户都能够使用su命令,这样不好,因为每个用户都可以使用su切换到root,然后猜密码,不安全,应当限制su命令的使用权限,具体请看

        passwd -S  查看用户密码状态

        who 、w   查看当前登陆用户信息

    四、特殊权限SetUID及粘着位(SetUID,SetGID,粘滞位)

      思考:有一个很奇怪的现象,

      

      以上截图可以看出,普通用户对shadow和passwd文件都没有写权限,那么普通用户是怎么修改密码的呢?

      答案:问题的关键在于passwd这个改密码的命令。查看该命令文件的权限

      

      可以看出所有者的权限是rws,其中的s表示有SetUID的权限。

      1、SetUID的定义:当一个可执行命令(文件)具有SetUID权限,用户执行这个程序时,将以这个程序的所有者身份执行(如果所有者是root,就变身成root)。

    可以通过以下命令来添加SetUID权限

        chmod 4755 [文件名]  4表示SetUID的权限位

        chmod u+s [文件名]

      注意:SetUID这样的权限是有风险的,比如vi命令加上SetUID权限,就会让所有文件都可以肆意修改。

      2、类似的,还有SetGID的概念:具有SetGID的文件执行的时候是以该文件所属组的身份执行

        chmod g+s [文件名]

        chmod 2755 [文件名]

      3、粘滞位t,与SetUID,SetGID对应,作用与其他人的权限

        当一个目录权限为777,每个用户都可以添加删除文件(w权限),设置了粘滞位后,只有文件的所有者才可以删除该文件。比如/tmp文件,一个用户不能删除另一个用户的文件。

      4、查找具有SetUID和SetGID的文件

        find / -perm -4000 -o -perm -2000  在根目录下查找具有SetUID和SetGID的文件

    五、管理员授权

      1、限制su命令的使用权限

        通过添加一个用户组,只有root和属于该组的用户有su的使用权限

        1、groupadd sugroup  添加一个用户组

        2、chmod 4550 /bin/su  改变/bin/su命令的权限,将其他人的权限改为---

        3、chgrp sugroup /bin/su  将/bin/su的所属组改为sugroup

        4、gpasswd -a [username] sugroup  添加用户进sugroup

      2、sudo,让一个用户可以以root的身份执行某个命令,可以具体到只能使用命令的某个选项

        sudo是一个软件,Linux默认会进行安装。用来配置一个用户的管理权限非常方便

        -在执行sudo命令是,临时成为root

        -不会泄露root口令

        -仅向用户提供有限的命令使用权限

        通过更改配置文件来进行用户对某个命令的权限设置,使用visudo命令来配置

        格式:用户名(组名) 主机地址=命令文件路径(要是绝对路径,否则默认在当前路径下查找)

    六、批量添加用户

      方法一

        1、newusers 导入用户信息文件  用vi按/etc/passwd的格式(用户名:密码位:UID:组ID:描述信息:宿主目录:命令解释器(shell))写一个用户文件。使用newusers命令之后会自动在/etc/passwd文件中添加用户信息,并且自动创建宿主目录(手动添加不会自动创建)

        2、pwunconv  关闭shadow password功能

        3、chpasswd  导入密码文件  同样要用vi编写一个密码信息文件,格式([用户名]:[密码])

        4、pwconv  开启shadow password功能,将密码写入shadow文件

       方法二

        shell编程方法

  • 相关阅读:
    19牛客暑期多校 round2 H 01矩阵内第二大矩形
    NOIP2017滚粗记
    Left 4 Dead 2(求生之路2) 游戏打不开 游戏闪退 的一种可能性以及解决方法
    Luogu P1156 垃圾陷阱
    Luogu P1376 机器工厂
    Luogu P1842 奶牛玩杂技
    Luogu P1880 石子合并
    Luogu P1441 砝码称重(fj省选)
    Luogu P1077 摆花
    Luogu P1282 多米诺骨牌
  • 原文地址:https://www.cnblogs.com/njupt-Qsimple/p/5402080.html
Copyright © 2011-2022 走看看