长期支持版本

    社区创新版本

      管理用户

      在Linux中,每个普通用户都有一个账户,包括用户名、密码和主目录等信息。除此之外,还有一些系统本身创建的特殊用户,它们具有特殊的意义,其中最重要的是管理员账户,默认用户名是root。同时Linux也提供了用户组,使每一个用户至少属于一个组,从而便于权限管理。

      用户和用户组管理是系统安全管理的重要组成部分,本章主要介绍openEuler提供的用户管理和组管理命令,以及为普通用户分配特权的方法。

      管理用户

      增加用户

      useradd命令

      在root权限下,通过useradd命令可以为系统添加新用户信息,其中 options 为相关参数, username 为用户名称。

      useradd [options] username
      

      用户信息文件

      与用户账号信息有关的文件如下:

      • /etc/passwd:用户账号信息文件。
      • /etc/shadow:用户账号信息加密文件。
      • /etc/group:组信息文件。
      • /etc/default/useradd:定义默认设置文件。
      • /etc/login.defs:系统广义设置文件。
      • /etc/skel:默认的初始配置文件目录。

      创建用户实例

      例如新建一个用户名为userexample的用户,在root权限下执行如下命令:

      # useradd userexample
      

      说明:
      没有任何提示,表明用户建立成功。这时并没有设置用户的口令,请使用passwd命令修改用户的密码,没有设置密码的新账号不能登录系统。

      使用id命令查看新建的用户信息,命令如下:

      # id userexample
      uid=502(userexample)    gid=502(userexample)    groups=502(userexample)
      

      修改用户userexample的密码:

      # passwd userexample
      

      修改用户密码时需要满足密码复杂度要求,密码的复杂度的要求如下:

      1. 口令长度至少8个字符。
      2. 口令至少包含大写字母、小写字母、数字和特殊字符中的任意3种。
      3. 口令不能和账号一样。
      4. 口令不能使用字典词汇。
        • 查询字典 在已装好的openEuler环境中,可以通过如下命令导出字典库文件dictionary.txt,用户可以查询密码是否在该字典中。
          cracklib-unpacker /usr/share/cracklib/pw_dict > dictionary.txt
          
        • 修改字典
          1. 修改上面导出的字典文件,执行如下命令更新系统字典库。
            # create-cracklib-dict dictionary.txt
            
          2. 在原字典库基础上新增其他字典内容custom.txt。
            # create-cracklib-dict dictionary.txt custom.txt
            

      根据提示两次输入新用户的密码,完成密码更改。过程如下:

      # passwd userexample
      Changing password for user userexample.
      New password:
      Retype new password:
      passwd: all authentication tokens updated successfully.
      

      说明:
      若打印信息中出现“BAD PASSWORD: The password fails the dictionary check - it is too simplistic/sytematic”,表示设置的密码过于简单,建议设置复杂度较高的密码。

      修改用户账号

      修改密码

      普通用户可以用passwd修改自己的密码,只有管理员才能用passwd username为其他用户修改密码。

      修改用户shell设置

      使用chsh命令可以修改自己的shell,只有管理员才能用chsh username为其他用户修改shell设置。

      用户也可以使用usermod命令修改shell信息,在root权限下执行如下命令,其中 new_shell_path 为目标shell路径,username 为要修改用户的用户名,请根据实际情况修改:

      usermod -s new_shell_path username
      

      例如,将用户userexample的shell改为csh,命令如下:

      # usermod -s /bin/csh userexample
      

      修改主目录

      • 修改主目录,可以在root权限下执行如下命令,其中 new_home_directory 为已创建的目标主目录的路径,username 为要修改用户的用户名,请根据实际情况修改:

        usermod -d new_home_directory username
        
      • 如果想将现有主目录的内容转移到新的目录,应该使用-m选项,命令如下:

        usermod -d new_home_directory -m username
        

      修改UID

      修改用户ID,在root权限下执行如下命令,其中 UID 代表目标用户ID,username 代表用户名,请根据实际情况修改:

      usermod -u UID username
      

      该用户主目录中所拥有的文件和目录都将自动修改UID设置。但是,对于主目录外所拥有的文件,只能使用chown命令手动修改所有权。

      修改账号的有效期

      如果使用了影子口令,则可以在root权限下,执行如下命令来修改一个账号的有效期,其中 MM 代表月份,DD 代表某天,YY 代表年份,username 代表用户名,请根据实际情况修改:

      usermod -e MM/DD/YY username
      

      删除用户

      在root权限下,使用userdel命令可删除现有用户。

      例如,删除用户Test,命令如下:

      # userdel Test
      

      如果想同时删除该用户的主目录以及其中所有内容,要使用-r参数递归删除。

      说明:
      不建议直接删除已经进入系统的用户,如果需要强制删除,请使用 userdel -f Test 命令。

      管理员账户授权

      使用sudo命令可以允许普通用户执行管理员账户才能执行的命令。

      sudo命令允许已经在/etc/sudoers文件中指定的用户运行管理员账户命令。例如,一个已经获得许可的普通用户可以运行如下命令:

      sudo /usr/sbin/useradd newuserl
      

      实际上,sudo的配置完全可以指定某个已经列入/etc/sudoers文件的普通用户可以做什么,不可以做什么。

      /etc/sudoers的配置行如下所示。

      • 空行或注释行(以#字符打头):无具体功能的行。

      • 可选的主机别名行:用来创建主机列表的简称。必须以Host_Alias关键词开头,列表中的主机必须用逗号隔开,如:

        Host_Alias  linux=ted1,ted2
        

        其中ted1和ted2是两个主机名,可使用linux(别名)称呼它们。

      • 可选的用户别名行:用来创建用户列表的简称。用户别名行必须以User_Alias关键词开头,列表中的用户名必须以逗号隔开,其格式同主机别名行。

      • 可选的命令别名行:用来创建命令列表的简称。必须以Cmnd_Alias开头,列表中的命令必须用逗号隔开。

      • 可选的运行方式别名行:用来创建用户列表的简称。不同的是,使用这样的别名可以告诉sudo程序以列表中某一用户的身份来运行程序。

      • 必要的用户访问说明行。

        用户访问的说明语法如下:

        user host = [ run as user ] command list
        

        在user处指定一个真正的用户名或定义过的别名,host也可以是一个真正的主机名或者定义过的主机别名。默认情况下,sudo执行的所有命令都是以root身份执行。如果您想使用其他身份可以指定。command list可以是以逗号分隔的命令列表,也可以是一个已经定义过的别名,如:

        ted1   ted2=/sbin/shutdown
        

        这一句说明ted1可以在ted2主机上运行关机命令。

        newuser1 ted1=(root) /usr/sbin/useradd,/usr/sbin/userdel
        

        这一句说明ted1主机上的newuser1具有以root用户权限执行useradd,userdel命令的功能。

        说明:

        • 可以在一行定义多个别名,中间用冒号 (:) 隔开。
        • 可在命令或命令别名之前加上感叹号 (!),使该命令或命令别名无效。
        • 有两个关键词:ALL和NOPASSWD。ALL意味着“所有”(所有文件、所有主机或所有命令),NOPASSWD意味着不用密码。
        • 通过修改用户访问,将普通用户的访问权限修改为同root一样,则可以给普通用户分配特权。

      下面是一个sudoers文件的例子:

      #sudoers files
      #User alias specification
      User_Alias ADMIN=ted1:POWERUSER=globus,ted2
      #user privilege specification
      ADMIN ALL=ALL
      POWERUSER ALL=ALL,!/bin/su
      

      其中:

      • User_Alias ADMIN=ted1:POWERUSER=globus,ted2

        定义了两个别名ADMIN和POWERUSER

      • ADMIN ALL=ALL

        说明在所有主机上,ADMIN用户都可以以root身份执行所有命令

      • POWERUSER ALL=ALL,!/bin/su

        给POWERUSER用户除了运行su命令外等同ADMIN的权限

      管理用户组

      增加用户组

      groupadd命令

      在root权限下,通过groupadd命令可以为系统添加新用户组信息,其中 options 为相关参数, groupname 为用户组名称。

      groupadd [options] groupname
      

      用户组信息文件

      与用户组信息有关的文件如下:

      • /etc/gshadow:用户组信息加密文件。
      • /etc/group:组信息文件。
      • /etc/login.defs:系统广义设置文件。

      创建用户组实例

      例如新建一个用户组名为groupexample的用户,在root权限下执行如下命令:

      # groupadd groupexample
      

      修改用户组

      修改GID

      修改用户组ID,在root权限下执行如下命令,其中 GID 代表目标用户组ID, groupname 代表用户组,请根据实际情况修改:

      groupmod -g GID groupname
      

      修改用户组名

      修改用户组名,在root权限下执行如下命令,其中 newgroupname 代表新用户组名, oldgroupname 代表已经存在的待修改的用户组名,请根据实际情况修改:

      groupmod -n newgroupname oldgroupname
      

      删除用户组

      在root权限下,使用groupdel命令可删除用户组。

      例如,删除用户组Test,命令如下:

      # groupdel Test
      

      说明:
      groupdel不能直接删除用户的主组,如果需要强制删除用户主组,请使用 groupdel -f Test 命令。

      将用户加入用户组或从用户组中移除

      在root权限下,使用gpasswd命令将用户加入用户组或从用户组中移除。

      例如,将用户 userexample 加入用户组 Test ,命令如下:

      # gpasswd -a userexample Test
      

      例如,将用户 userexampleTest 用户组中移除,命令如下:

      # gpasswd -d userexample Test
      

      切换用户组

      一个用户同时属于多个用户组时,则在用户登录后,使用newgrp命令可以切换到其他用户组,以便具有其他用户组的权限。

      例如,将用户 userexample 切换到 Test 用户组,命令如下:

      $ newgrp Test
      

      文档捉虫

      “有虫”文档片段

      问题描述

      提交类型 issue

      有点复杂...

      找人问问吧。

      PR

      小问题,全程线上修改...

      一键搞定!

      问题类型
      规范和低错类

      ● 错别字或拼写错误;标点符号使用错误;

      ● 链接错误、空单元格、格式错误;

      ● 英文中包含中文字符;

      ● 界面和描述不一致,但不影响操作;

      ● 表述不通顺,但不影响理解;

      ● 版本号不匹配:如软件包名称、界面版本号;

      易用性

      ● 关键步骤错误或缺失,无法指导用户完成任务;

      ● 缺少必要的前提条件、注意事项等;

      ● 图形、表格、文字等晦涩难懂;

      ● 逻辑不清晰,该分类、分项、分步骤的没有给出;

      正确性

      ● 技术原理、功能、规格等描述和软件不一致,存在错误;

      ● 原理图、架构图等存在错误;

      ● 命令、命令参数等错误;

      ● 代码片段错误;

      ● 命令无法完成对应功能;

      ● 界面错误,无法指导操作;

      风险提示

      ● 对重要数据或系统存在风险的操作,缺少安全提示;

      内容合规

      ● 违反法律法规,涉及政治、领土主权等敏感词;

      ● 内容侵权;

      您对文档的总体满意度

      非常不满意
      非常满意
      提交
      根据您的反馈,会自动生成issue模板。您只需点击按钮,创建issue即可。
      文档捉虫
      编组 3备份