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

    用户user

    令牌token,identity

    Linux用户:Username/UID

    管理员:root, 0

    普通用户:1-60000 自动分配

    系统用户:1-499, 1-999 (CentOS7)

    对守护进程获取资源进行权限分配

    登录用户:500+, 1000+(CentOS7)

    交互式登录

    组group

    Linux组:Groupname/GID

    管理员组:root, 0

    普通组:

    系统组:1-499, 1-999(CENTOS7)

    普通组:500+, 1000+(CENTOS7)

    安全上下文

    Linux安全上下文

    运行中的程序:进程 (process)

    以进程发起者的身份运行:

    root: /bin/cat

    wang: /bin/cat

    进程所能够访问资源的权限取决于进程的运行者的身份

    组的类别

    Linux组的类别

    用户的主要组(primary group)

      用户必须属于一个且只有一个主组

      组名同用户名,且仅包含一个用户,私有组

    用户的附加组(supplementary group)

      一个用户可以属于零个或多个辅助组

    用户和组的配置文件

    Linux用户和组的主要配置文件:

    /etc/passwd:用户及其属性信息(名称、UID、主组ID等)等价于getent passwd

    /etc/group:组及其属性信息   等价于 getent group

    /etc/shadow:用户密码及其相关属性  等价于getent shadow

    /etc/gshadow:组密码及其相关属性   等价于 getent gshadow

    passwd文件格式

    login name:登录用名(wang)

    passwd:密码 (x)

    UID:用户身份编号 (1000)

    GID:登录默认所在组编号 (1000)

    GECOS:用户全名或注释

    home directory:用户主目录 (/home/wang)

    shell:用户默认使用shell (/bin/bash)

    shadow文件格式

    登录用名

    用户密码:一般用sha512加密

    从1970年1月1日起到密码最近一次被更改的时间

    密码再过几天可以被变更(0表示随时可被变更)

    密码再过几天必须被变更(99999表示永不过期)

    密码过期前几天系统提醒用户(默认为一周)

    密码过期几天后帐号会被锁定

    从1970年1月1日算起,多少天后帐号失效

     用户切换

    • su username: 非登录切换,不会读取目标用户的配置文件
    • su - username:登陆切换,会读取目标用户配置文件,完全切换

     useradd命令

    useradd命令用于Linux中创建的新的系统用户。useradd可用来建立用户帐号。帐号建好之后,再用passwd设定帐号的密码。

    而可用userdel删除帐号。使用useradd指令所建立的帐号,实际上是保存在/etc/passwd文本文件中。

    useradd(选项)(参数)

    -c<备注>:加上备注文字。备注文字会保存在passwd的备注栏位中;
    
    -d<登入目录>:指定用户登入时的启始目录;
    
    -D:变更预设值;
    
    -e<有效期限>:指定帐号的有效日期;
    
    -f<缓冲天数>:指定在密码过期后多少天即关闭该帐号;
    
    -g<群组>:指定用户所属的群组;
    
    -G<群组>:指定用户所属的附加群组;
    
    -m:自动建立用户的登入目录;
    
    -M:不要自动建立用户的登入目录;
    
    -n:取消建立以用户名称为名的群组;
    
    -r:建立系统帐号;
    
    -s<shell>:指定用户登入后所使用的shell;
    
    -u<uid>:指定用户id。

    userdel命令

    userdel命令用于删除给定的用户,以及与用户相关的文件。若不加选项,则仅删除用户帐号,而不删除相关文件。

    userdel(选项)(参数)

    -f:强制删除用户,即使用户当前已登录;
    
    -r:删除用户的同时,删除与用户相关的所有文件,会删除家目录信息。
    
    示例:
    userdel -r wang  删除wang的所有信息,如果不跟r,只删除wang账号,相关的文件信息不删除

    注:请不要轻易用-r选项;他会删除用户的同时删除用户所有的文件和目录,切记如果用户目录下有重要的文件,在删除前请备份。

     

    usermod命令

    usermod命令用于修改用户的基本信息。

    usermod(选项)(参数)

    -c<备注>:修改用户帐号的备注文字;
    
    -d<登入目录>:修改用户登入时的目录;
    
    -e<有效期限>:指定账号的有效日期;
    
    -f<缓冲天数>:修改在密码过期后多少天即关闭该帐号;
    
    -g<群组>:修改用户所属的群组;
    
    -G<群组>;修改用户所属的附加群组;
    
    -l<帐号名称>:修改用户帐号名称;
    
    -L:锁定用户密码,使密码无效;
    
    -s<shell>:修改用户登入后所使用的shell;
    
    -u<uid>:修改用户ID;
    
    -U:解除密码锁定。 

    示例:

    [root@centos7data]#useradd wang
    [root@centos7data]#usermod -G liu wang  给wang加入liu的附加组
    [root@centos7data]#id wang
    uid=1001(wang) gid=1001(wang) groups=1001(wang),1000(liu)
    [root@centos7data]#useradd mama
    [root@centos7data]#usermod -aG mama wang   如果想再追加新mama附加组,需要加上-a否则会把之前的附加组清掉,比较重要
    [root@centos7data]#id wang
    uid=1001(wang) gid=1001(wang) groups=1001(wang),1000(liu),1002(mama)

    groupadd命令

    groupadd命令用于创建一个新的工作组,新工作组的信息将被添加到系统文件中。

    groupadd(选项)(参数)

    -g:指定新建工作组的id;
    
    -r:创建系统工作组,系统工作组的组ID小于500;
    
    -K:覆盖配置文件“/ect/login.defs”;
    
    -o:允许添加组ID号不唯一的工作组。

    groupdel 删除创建的组

    示例:

    groupdel wang  删除wang组 

     

    groupmod 修改组

    -g<群组识别码>:设置欲使用的群组识别码;
    -o:重复使用群组识别码;
    -n<新群组名称>:修改当前的组名

    passwd用法:

    -d:删除密码,仅有系统管理者才能使用;
    
    -f:强制执行;
    
    -k:设置只有在密码过期失效后,方能更新;
    
    -l:锁住密码;
    
    -s:列出密码的相关信息,仅有系统管理者才能使用;
    
    -u:解开已上锁的帐号。

    实例:如果是普通用户执行passwd只能修改自己的密码。如果新建用户后,要为新用户创建密码,则用passwd用户名,注意要以root用户的权限来创建。

    [root@localhost ~]# passwd linuxde    //更改或创建linuxde用户的密码;
    
    Changing password for user linuxde.
    
    New UNIX password:          //请输入新密码;
    
    Retype new UNIX password:   //再输入一次;
    
    passwd: all authentication tokens updated successfully. //成功

    普通用户如果想更改自己的密码,直接运行passwd即可,比如当前操作的用户是linuxde。

    [linuxde@localhost ~]$ passwd
    
    Changing password for user linuxde. //更改linuxde用户的密码;
    
    (current) UNIX password:   //请输入当前密码;
    
    New UNIX password:         //请输入新密码;
    
    Retype new UNIX password:  //确认新密码;
    
    passwd: all authentication tokens updated successfully. //更改成功;
    
    注:也可以直接用以下方法直接输入密码更改密码
    echo centos | passwd --stdin linuxde    其中centos为密码,而linuxed为用户账号

    gpasswd用法

    -a:添加用户到组;
    
    -d:从组删除用户;
    
    -A:指定管理员;
    
    -M:指定组成员和-A的用途差不多;
    
    -r:删除密码;
    
    -R:限制用户登入组,只有组中的成员才可以用newgrp加入该组。 

    实例:

    gpasswd  -a  liu  wang 将liu加入到wang的附加组里 

    chsh用法:

    chsh命令用来更换登录系统时使用的shell。若不指定任何参数与用户名称,则chsh会以应答的方式进行设置。

    chsh(选项)(参数)

    -s<shell 名称>或--shell<shell 名称>:更改系统预设的shell环境。;
    
    -l或--list-shells:列出目前系统可用的shell清单;
    
    -u或--help:在线帮助;
    
    -v或-version:显示版本信息。 

    实例:

    chsh –s /bin/bash  将shell类型改为/bin/bash类型

     

    chage命令

    chage命令是用来修改帐号和密码的有效期限。

    chage [选项] 用户名

    -m:密码可更改的最小天数。为零时代表任何时候都可以更改密码。
    
    -M:密码保持有效的最大天数。
    
    -w:用户密码到期前,提前收到警告信息的天数。
    
    -E:帐号到期的日期。过了这天,此帐号将不可用。
    
    -d:上一次更改的日期。
    
    -i:停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。
    
    -l:例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。

    newusers 命令用于批量创建用户:

    • newusers  users.txt  其中users.txt为用户名,即可以批量创建用户。

    newgrp   临时切换主组

    chpasswd 修改密码:

    • chpasswd  user:centos   user代表用户名,centos代表密码。
    • echo user:centos | chpasswd 

    1、显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录

    答:  ls –d /etc/[^[:alpha:]]*[[:alpha:]] 或者ls –d /etc/[^a-zA-Z]*[[:alpha:]]

    演示:

    [root@centos6etc]#ls -d /etc/[^a-zA-Z]*[[:alpha:]]

    /etc/1b

    [root@centos6etc]#ls -d /etc/[^[:alpha:]]*[[:alpha:]]

    /etc/1b

    2、复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。

    答:mkdir /tmp/mytest1

    cp -r  /etc/p*[^[:digit:]]  /tmp/mytest1/ 
    3、将/etc/issue文件中的内容转换为大写后保存至/tmp/issue.out文件中

    答:tr ‘a-z’ ‘A-Z’ < /etc/issue > /tmp/issue.out

    4、请总结描述用户和组管理类命令的使用方法并完成以下练习:
       (1)、创建组distro,其GID为2019;

        groupadd  –g 2019  distro
       (2)、创建用户mandriva, 其ID号为1005;基本组为distro;

        useradd  -u 1005 –g disro mandriva


       (3)、创建用户mageia,其ID号为1100,家目录为/homenux;

       useradd -u 1100 -d /homenux mageia

       查询结果:[root@centos7~]#getent passwd mageia

       mageia:x:1100:1100::/homenux:/bin/bash

       (4)、给用户mageia添加密码,密码为mageedu,并设置用户密码7天后过期

       echo mageedu |passwd --stdin mageia && chage  -E  7 mageia
       (5)、删除mandriva,但保留其家目录;

       useradd mandriva

        userdel mandriva

       (6)、创建用户slackware,其ID号为2002,基本组为distro,附加组peguin;

       useradd –u 2002 –g distro –G peguin slackware
       (7)、修改slackware的默认shell为/bin/tcsh;

       useradd slackware

       chsh –s /bin/tcsh  slackware  或者用usermod  -s /bin/tcsh slackware

      修改结果:

      slackware:x:1101:1101::/home/slackware:/bin/tcsh
       (8)、为用户slackware新增附加组admins; 

       第一种创建方法:

      useradd slackware

      groupadd admins

      [root@centos7~]#usermod -G admins slackware

     第二种创建方法:

      useradd slackware

      groupadd admins

      [root@centos7~]#groupmems -a slackware -g admins

      [root@centos7~]#id slackware

      uid=1101(slackware) gid=1101(slackware) groups=1101(slackware),2021(admins) 

      第三种创建方法:

      useradd slackware

      groupadd admins

      [root@centos7~]#gpasswd -a slackware admins                                         

     

    1)usermod -G "" slackware   清空附加组

    2)usermod  -G  slackware   slackware清空附加组

     

  • 相关阅读:
    The Collections Module内建collections集合模块
    生成器接受和返还功能在执行过程中的详解以及生成器实现协同
    写python中的装饰器
    windows下载Mysql-python
    分别用单线程和多线程运行斐波那契、阶乘和累加和
    TCP客户端和服务器间传输数据遇到的TypeError: a bytes-like object is required, not 'str'问题
    python的property属性
    python的伪私有属性
    使用栈实现中缀表达式转为后缀表达式和后缀表达式的求解
    公众帐号如何向用户发送emoji表情(php版,附emoji编码表)
  • 原文地址:https://www.cnblogs.com/struggle-1216/p/11731359.html
Copyright © 2011-2022 走看看