4、用户和组

作者: 崔千易 | 来源:发表于2018-04-04 05:52 被阅读4次

    用户和组

    一、用户:

        是用来操作系统中不同功能的身份.

    Linux系统中用户的分类

        1)超级用户: root  uid=0

        2)系统用户:不需要登录系统,服务于应用程序,维护系统的运行

                bin  nobody  uid=1-499

        3)普通用户:可以登录的用户  uid>=500

            UID:用户标识

    添加用户:useradd  username  创建的时候可以指定u、g、c等选项

    查看当前用户的ID:id  username

    查看当前用户的名字:whoami

    设置用户密码:passwd  username (普通用户只能通过passwd修改自己本身密码)

    删除一个用户:userdel  username  (-r 选项会连同创建的家目录一同删除)

    创建组:groupadd  groupname

    删除组:groupdel  groupname (用户的主要组不可以删除)

    修改用户信息:usermod  -[u,g,G等]  username

    修改组的信息:groupmod  groupname

    为组添加一个管理员:gpasswd  -A  username  groupname

    用组管理员为组添加一个用户成员:gpasswd  -a  usrname  groupname

    删除一个组成员:gpasswd  -d username group

    为组设定一个密码:gpasswd  groupname

    系统文件:

        /etc/passwd:用户信息

        /etc/shadow:用户密码相关的信息

      useradd user1

    1、会在/etc/passwd添加一行

    2、会在/etc/group添加一行

    3、会在/etc/shadow添加一行

    4、会在/etc/gshadow添加一行

    5、会在/home目录下建立一个与用户同名的目录作为家目录,同时会从/etc/skel目录中复制出所有的隐藏文件到该目录

    6、修改权限

    -u    指定用户的uid

    -g    指定用户的gid

    -G    指定附属组,可以有多个, 但是这些附属组必须是系统内已经存在的

    -c    指定描述

    -d    指定家目录

    -M    不建立家目录

    -s    指定shell

    -e    指定用户过期时间, 日期

    -f    指定用户过期时间, 天数

    #useradd u1 -u 2000 -g 2000 -G 516 -d /u1 -c user1 -s /sbin/nologin

    usermod

    与useradd参数差不多,一个是在创建用户时设定,一个是用户创建好

    -u -g -G -d -s   

    -L  锁定用户

    -U  解除锁定

    -l    改名

    -a  添加用户到组,结合-G使用

    passwd -l 锁定用户

          -u 解锁用户

      -n 密码最小使用期限  天数

      -x 密码最大使用期限  天数

      -w  密码过期前几天提醒  天数

    whoami

    who

    who am i

    w

    users

    id

    finger username  查看用户的相关信息

    chfn username  修改用户相关信息

    userinfo username    X window下修改用户相关信息 

    对用户的操作:新增、删除、修改、查看、设置密码

        1、查看用户    id

            # id            //默认查看的是当前用户的信息

                uid=0(root) gid=0(root) groups=0(root)

            # whoami  //查看当前用户是谁

                root

            # id lp        //查看指定用户的信息

                uid=4(lp) gid=7(lp) groups=7(lp)

                    uid:用户标识

                    gid:组标识,用户的主组

                    groups:用户所属组信息

        2、添加用户  useradd

            注意:添加用户的操作只有root能操作

            # useradd niulang

            反例: 

            # su - niulang    // switch user切换用户

            $ useradd zhinv

                -bash: /usr/sbin/useradd: Permission denied  权限被拒绝,普通用户是无法添加用户的

            $ exit

                logout

            # id niulang

                uid=500(niulang) gid=500(niulang) groups=500(niulang)

                添加用户时,如果不指定用户的组,那么默认会创建一个与用户名同名的组作为用户的主要组。

          1)添加用户时指定选项  man useradd

                -c:注释性的描述信息

                -d:指定用户的家目录

                        默认情况下:

                                root的家目录是/root

                                普通用户的家目录是/home

                -g:指定用户的主要组,前提:组是必须存在的

                -G:指定用户的附加组(附属组),前提:组是必须存在的

                -s:指定用户的登录shell

                -u:指定用户的uid

                # head -1 /etc/passwd

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

                    用户名:密码:uid:gid:注释性描述:用户的家目录:用户的登录shell

                                        -u  -g      -c              -d                  -s

                # echo $SHELL  //查看当前shell,echo可以用来打印变量

                    /bin/bash

              要求区分的两种shell

                /bin/bash:可登录shell,如果用户的shell是这个,那么该用户可以登录到系统中

                /sbin/nologin:非登录shell,如果用户的shell是这个,那么该用户是不允许登录到系统的

        格式:useradd 选项 选项的参数 ... 用户名

                例子:

                    # useradd -u 600 -s /sbin/nologin zhinv

                    # id zhinv

                        uid=600(zhinv) gid=600(zhinv) groups=600(zhinv)

                    # tail -1 /etc/passwd

                        zhinv:x:600:600::/home/zhinv:/sbin/nologin

                    # useradd -g 502 wangmu  错的

                        useradd: group '502' does not exist

                    # useradd -g zhinv wangmu

                    # id wangmu

                        uid=601(wangmu) gid=600(zhinv) groups=600(zhinv)

        3、删除用户 userdel

              # userdel wangmu        //删除的时候不会删除用户的家目录和邮箱

              # useradd wangmu        //能添加,但是会有提示消息

                    useradd: warning: the home directory already exists.

                    Not copying any file from skel directory into it.

                    Creating mailbox file: File exists

              -r: 可以干净的删除一个用户

                # userdel -r wangmu

              # cd /var/spool/mail/    邮箱所在位置

        4、给用户设置密码

            passwd:

              超级用户:既可以修改自己的密码,又可以修改别人的密码,并且不需要提供当前密码

              普通用户:只能修改自己的密码,要求严格,并且需要提供当前密码

            # passwd    // 默认修改当前用户的密码

                Changing password for user root.

                New password:

                BAD PASSWORD: it is based on a dictionary word

                BAD PASSWORD: is too simple

                Retype new password:

                passwd: all authentication tokens updated successfully.

            # passwd niulang            //修改指定用户的密码

                Changing password for user niulang.

                New password:

                BAD PASSWORD: it is too short

                BAD PASSWORD: is too simple

                Retype new password:

                passwd: all authentication tokens updated successfully.

            反例:

                # su - niulang

                $ passwd zhinv

                    passwd: Only root can specify a user name.

            普通用户修改自己的密码,需要当前密码,而且长度最少6位,而且不能是字典单词

                $ passwd

                    Changing password for user niulang.

                    Changing password for niulang.

                    (current) UNIX password:

                    New password:

                    BAD PASSWORD: it is based on a dictionary word

                    New password:

                    Retype new password:

                    passwd: all authentication tokens updated successfully.

            /etc/shadow:存放用户密码信息的文件

                # head -1 /etc/shadow

    root:$6$9AOmQbxm$3X1qbP0srKNql7jCXpmwhyNxGTHmIbT65zF.:16276:0:99999:7:::

    用户名:加密后的密码:....

            $6$:加密算法是sha512

            $1$:加密算法是md5

        5、修改用户:常用

            usermod:      //modify:修改

                -G:修改用户的附属组,不管用户原来的附属组如何,直接覆盖

                -g:修改用户的主要组

                -a:一般和-G联合使用,追加附属组

                -u:修改用户的uid

                -d:修改用户的家目录

                -s:修改用户的shell

                # useradd -G niulang,zhinv sha

                # id sha

                    uid=601(sha) gid=601(sha) groups=601(sha),500(niulang),600(zhinv)

                # useradd sha2

                # usermod -G sha2 sha

                # id sha

                    uid=601(sha) gid=601(sha) groups=601(sha),602(sha2)

                # usermod -a -G niulang sha

                # id sha

                    uid=601(sha) gid=601(sha) groups=601(sha),500(niulang),602(sha2)

    练习:

        1)添加三个用户usr1,usr2,usr3

            # useradd usr1

            # useradd usr2

            # useradd usr3

        2)添加用户usr4,同时指定其主组为usr1,uid为2014,并验证用户创建是否正确

            # useradd -g usr1 -u 2014 usr4

            # id usr4

        3)添加用户usr5,家目录为/tmp/usr5,附加组为usr2,usr3

            # useradd -d /tmp/usr5 -G usr2,usr3 usr5

        4)修改usr4的附加组为usr2,usr3,注意验证

            # usermod -G usr2,usr3 usr4

            # id usr4

        5)修改usr1的shell为非登录shell

            # usermod -s /sbin/nologin usr1

            # grep usr1 /etc/passwd      //仅过滤出文件中含有usr1的行

        6)彻底删除usr5用户

            # userdel -r usr5

        7)为用户usr1设置密码redhat

            # passwd usr1

    二、组  group

        用户和组的关系:组中可以没有用户、也可以有一个或者多个用户。用户只有一个主要组,可以同时属于多个组,但是除了主组以外的其他组称为附属组。

        组的分类:从用户的角度分的,分为:

                    主组:primary group、initial group、first group,用户的默认组,也就是gid所标识的组

                    附属组:secondary group、supplementary group

        1、添加组  groupadd

            # groupadd g1

                -g:添加组时,指定gid是多少

            # groupadd -g 800 g2

            # tail -2 /etc/group

                g1:x:603:

                g2:x:800:

                组名:密码:gid:组里成员

        2、修改组: groupmod

            # groupmod -g 888 g2

            # grep g2 /etc/group

                g2:x:888:

            修改组的名字 :  -n 新名字

                # groupmod -g 588 -n group1 g1

                # grep gr /etc/group

                    group1:x:588:

        3、删除组:groupdel

            注意:不能够删除用户的主要组,能够删除用户的附属组

            # groupdel group1

            # grep group1 /etc/group  //没有任何输出,表示文件中没有含有group1关键字的行

            #

            小实验:

            # useradd t1

            # useradd t2

            # id t1

                uid=603(t1) gid=603(t1) groups=603(t1)

            # id t2

                uid=604(t2) gid=604(t2) groups=604(t2)

            # tail -2 /etc/group

                t1:x:603:

                t2:x:604:

            # groupdel t1    //t1组是t1用户的主要组,不能删除

                groupdel: cannot remove the primary group of user 't1'

            # usermod -g t2 t1

            # usermod -G t1 t2

            # id t1

                uid=603(t1) gid=604(t2) groups=604(t2)

            # id t2

                uid=604(t2) gid=604(t2) groups=604(t2),603(t1)

            # groupdel t1  //t1组仅仅是t2用户的附属组,可以被删除

            # grep t1 /etc/group

    4、组管理  gpasswd

            管理/etc/group和/etc/gshadow文件的,每一个组可以有管理员,成员和密码

            给组加密码:可以让知道组密码的人,临时的切换到该组中,能够使用该组的资源。

            1)指定组的管理员列表

                # groupadd groups

                # useradd u1

                # gpasswd -A u1 groups    //u1用户就是groups组的管理员了

            2)向组中添加成员

                # su - u1

                $ gpasswd -a sha groups

                    Adding user sha to group groups

                # tail /etc/group

                    groups:x:889:sha

            3)给组设置密码

                # gpasswd groups

                    Changing the password for group groups

                    New Password:

                    Re-enter new password:

            4)切换组

                # su - niulang

                $ id

                    uid=500(niulang) gid=500(niulang) groups=500(niulang)

                $ newgrp groups  //临时切换组

                    Password:

                $ id

                    uid=500(niulang) gid=889(groups) groups=500(niulang),889(groups)

            5)将用户从组中删除

                # gpasswd -d sha groups

                    Removing user sha from group groups

    /etc/passwd: 保存用户信息的文件

    /etc/shadow: 保存用户密码相关信息的文件

    /etc/group:  保存组信息的文件

    /etc/gshadow:保存组密码相关信息的文件

    1、/etc/passwd: *****

        # man 5 passwd

        # head -1 /etc/passwd

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

          用户名:密码占位符:UID:GID:描述信息:家目录:登录shell

    2、/etc/shadow

        # useradd zhangsan

        用户有无密码两种情况:

        # tail -1 /etc/shadow.

            zhangsan:!!:16276:0:99999:7:::

        # passwd zhangsan

            Changing password for user zhangsan.

            New password:

            BAD PASSWORD: it is WAY too short

            BAD PASSWORD: is a palindrome

            Retype new password:

            passwd: all authentication tokens updated successfully.

        # tail -1 /etc/shadow

            zhangsan:$6$/23ax9CR$IDSfqNF3gZqDq4L0.Bdqd19SLbzBa6CuSpuOn.9YrFmSWYy09xPGa47SVEsQXfQJDybUDOzsu4vG.FV

            KMt91l/:16276:0:99999:7:::

      # man 5 shadow

        zhangsan:!!:16276:0:99999:7:::

          1)用户名

          2)加密后的密码

          3)上一次密码修改时间(单位是天,是距离1970年1月1日多少天)

          4)密码最小生存周期  单位:天  0表示随时可以修改密码;2表示两天内不能修改

          5)密码最大生存周期  单位:天,密码使用的最长时间

          6)密码到期前几天开始警告

          7)密码过期之后到账户失效之前的时间限制        密码过期之后还可以用几天

          8)账户过期时间

          9)保留列

      查看用户的密码相关的时间

          # chage -l root

                Last password change : Jul 25, 2014

                Password expires : never

                Password inactive : never

                Account expires : never

                Minimum number of days between password change : 0

                Maximum number of days between password change : 99999

                Number of days of warning before password expires : 7

      # chage -d 0 用户名  用户下次登录必须更改密码

        chage -m 2 u1  修改密码最少使用天数

        chage -M 50 u1  修改密码最大使用天数(密码过期时间)

        chage -I 5 u1  密码过期后到账户失效的天数(密码过期后还能使用的天数)

            chage -E "2019-3-5" u1 修改的是账户的过期时间

    3、/etc/group

        # head -1 /etc/group

            root:x:0:

            组名:密码占位符:GID:用户列表

    4、/etc/gshadow

        # head -1 /etc/gshadow

            root:::

            组名: 加密后的密码:组管理员:组成员

    /etc/login.defs  默认创建新用户的配置文件

    和用户登录相关的文件或目录

    /etc/profile

        此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行. 并从/etc/profile.d目录的配置文件中搜集shell的设置

    /etc/bashrc

        为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取

    ~username/.bashrc

        每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件

    ~username/.bash_profile

        该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。

    /etc/profile.d/*

    profile类的文件:

              设定环境变量

              运行命令或脚本

    bashrc类的文件:

              设定本地变量

              定义命令别名

    站在用户登录的角度来说,SHELL的类型:

    登录式shell:

              正常通过某终端登录

              su - USERNAME

              su -l USERNAME

    非登录式shell:

              su USERNAME(使用su切换用户,不带任何参数)

              GUI下打开命令窗口

              自动执行的shell脚本

    登录式shell如何读取配置文件:

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

    非登录式shell如何读取配置文件:

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

    su - :完全登录shell,切换后用户拥有自己的一套环境变量

    su:不完全登录shell,切换后用户使用的是其他用户的环境变量

    和新创建用户相关的文件:/etc/login.defs  /etc/default/useradd

    /etc/rc.local  是系统开机后执行的最后一个脚本,一般被管理员执行一些系统开机运行的命令

    相关文章

      网友评论

        本文标题:4、用户和组

        本文链接:https://www.haomeiwen.com/subject/rwmhhftx.html