Linux系统下用户与组的管理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux系统下用户与组的管理相关的知识,希望对你有一定的参考价值。

Linux系统下用户与组的管理

一、用户及组基本概述

Linux 系统上,用户管理是基于用户名和密码的方式进行资源的分配。

1、uid(用户身份标识)

(1)root用户

 uid为0

(2)普通用户:1--65535

    系统用户 系统已经已经存在专门用来对系统服务或者系统资源进行管理的

              1--499(CentOS 6.X)

              1--999 (CentOS 7.X)

    登录用户(平时专门做系统管理的用户)

              500+ (CentOS 6.X)

              1000+ (CeentOS 7.X)

2、gid(用户组身份标识)

(1)root组

    gid为0

(2)普通组

    系统组:1-499(CentOS 6.X), 1-999(CENTOS7)

    普通组:500+(CentOS 6.x), 1000+(CENTOS7)

3、用户和组的关系:

(1)每个用户必须属于一个与用户同名的组(默认的情况) 这个组一般叫做基本组(主组)

(2)一个用户可以属于除基本组之外的其他组,这个组就叫做(附加组)(辅助组)

二、用户和组的配置文件

1、用户的配置文件和用户的信息文件/etc/passwd

  [[email protected] yum.repos.d]# cat /etc/passwd

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

  共有七个字段以“:”分隔,作用为:

第一字段root:用户名

第二字段x:密码占位符

第三字段0:用户UID

第四字段0: GID

第五字段root: 用户说明信息

第六字段 /root: 用户家目录

第七字段 /bin/bash 用户的shell

2、用户的配置文件/etc/shadow

[[email protected] yum.repos.d]# cat /etc/shadow

root:$6$NJND277cVP5/NHvE$tH3CGuhyQJ.btAswXYkcJUNr62LjEy24hXlvu.AA2fVLSfNwrSrIHhcBrZM5N61XkiE5M/t6x3k/XDkdcBObO1::0:99999:7:::bin:*:16659:0:99999:7:::

共有九个字段以“:”分隔,作用为:

第一字段 root:用户名

第二字段 为加密后的密码(密码这一段 如果是 ! * 说明这个账号是不可用被锁定)

第三字段 密码的最后一次修改日期(使用1970年1月1日作为标准时间,每过一天,时间戳加一)

第四字段 两次密码修改的时间间隔

第五字段 密码的有效期,为99999时表示永不过期

第六字段 密码到期几天时提示修改密码,此处表示密码到期之前7天提醒修改密码

第七字段 密码到期后的宽限天数,即密码到期后这个账户还可以使用几天 

        0 代表密码过期后立即失效

        -1 代表密码过期后用户失效

第八字段 账号的失效时间,用时间戳表示

第九字段 保留

3、用户的组信息文件/etc/group

[[email protected] ~]# cat /etc/group

root:x:0:

    共有四个字段以“:”分隔,作用为:

       第一字段 组名

第二字段 密码占位符

第三字段 组ID即GID

第四字段 组里附加的用户

4、组密码文件/etc/gshadow

[[email protected] ~]# cat /etc/gshadow

root:::

    共有四个字段以“:”分隔,作用为:

       第一字段 组名

第二字段 组密码

第三字段 组管理员用户名

第四字段 组中附加用户

三、用户和组的管理

1、用户管理的重要目录

(1)用户的家目录

    普通用户:/home/UserName,所有者和所属组都是此用户权限是700

    超级用户:/root/,所有者和所所属组都是root用户,权限是550

(2)用户的模板目录:

     /etc/skel目录:用来存放新用户配置文件的目录,当我们添加新用户时,这个目录下的所有文件会被复制到新添加的用户的家目录下,/etc/skel目录下的所有文件都是隐藏文件。

     /etc/default/useradd:

     作用:在使用useradd添加用户时的一个需要调用的一个默认配置文件

     内容:  # useradd defaults file

GROUP=100

HOME=/home           默认家目录

INACTIVE=-1            密码失效日期,shadow第7列

EXPIRE=                账号失效日期 第8列

SHELL=/bin/bash

SKEL=/etc/skel           家目录下面的隐藏文件的模板

CREATE_MAIL_SPOOL=yes 是否创建一个邮箱账户

    /etc/login.defs :

  作用:用来定义创建用户时需要的一些用户配置信息

    内容:MAIL_DIR        /var/spool/mail

PASS_MAX_DAYS   99999                #密码有效期

PASS_MIN_DAYS   0                 #密码修改间隔

PASS_MIN_LEN    5                 #密码最小为5位

PASS_WARN_AGE   7                 #密码到期警告

UID_MIN                  1000        #最小的uid范围

UID_MAX                 60000        #最大的uid范围

SYS_UID_MIN               201     

SYS_UID_MAX               999     

GID_MIN                  1000      #最小的GID范围

GID_MAX                 60000       #最大GID范围

SYS_GID_MIN               201

SYS_GID_MAX               999

CREATE_HOME     yes

UMASK           077

USERGROUPS_ENAB yes

ENCRYPT_METHOD SHA512              #密码的加密算法

2、添加用户命令useradd

(1)useradd命令格式:useradd [选项] UserName

(2)选项: -u 指定UID  (默认500|1000开头)

    -o 新建用户前不检查指定的UID是否存在(一般不要使用这个选项)

    -g  GID|组名  指明用户所属的基本组 (使用比较多)

    -G  指明用户所属的附加组

    -d  指定某个目录作为家目录,默认/home

    -s  指明用户默认的shell 默认/bin/bash  通常会指定/sbin/nologin(使用较多)

    -c  “ ”  指定用户注释信息

    -r  新建系统用户

    -m  默认选项 创建用户家目录

-M  不创建用户家目录 (使用较多)

-D 修改用户的默认选项(修改的是/etc/default/useradd中的选项)

(3)指定选项添加用户:

   useradd –u 550 –g dayi123 –G root –d /home/dayi123 –c “test user” –s /bin/bash dayi123

3修改用户属性usermod

(1)用法:usermod [选项] UserName

(2)选项:参数同useradd,部分不同参数如下:

          -G GROUP1,GROUP2:新附加组,原来的附加组将会被覆盖,若要保留原有,则          要同时使用-a选项,表示追加

          -l login_name:新的名字

          -L 锁定指定用户

          -U 解锁指定用户

          -e YYYY-MM-DD:指定用户的过期日期

          -f INACTIVE:指定非活动期限

          -d 修改用户的家目录

4、给用户设定密码:

(1)用法:password [选项] UserName

(2)选项: -l:锁定指定用户

           -u:解锁指定用户

           -e:强制用户下次登录修改密码

           -n mindays: 指定最短使用期限

           -x maxdays:最大使用期限

           -w warndays:提前多少天开始警告

           -i inactivedays:非活动期限

           --stdin 可以通过管道符输的数据作为用户密码

(3)应用

    修改root用户密码:passwd 回车即可修改

[[email protected] ~]# passwd

Changing password for user root.

New password:

BAD PASSWORD: it is based on a dictionary word

Retype new password:

passwd: all authentication tokens updated successfully.

    修改普通用户密码:passwd [选项] UserName 

[[email protected] ~]# passwd dayi123

Changing password for user dayi123.

New password:

BAD PASSWORD: it is based on a dictionary word

Retype new password:

passwd: all authentication tokens updated successfully.

    通过管道符修改密码(不需要确认):echo “[email protected]” | passwd –stdin dayi123

[[email protected] ~]# echo ‘dayi123‘ | passwd --stdin dayi123

Changing password for user dayi123.

passwd: all authentication tokens updated successfully.

    注意:注意字符串有一个$符号 会把后面的内容给替换成变量 而这个变量为空,所以切记改密码的时候要使用单引号 强引用

5、修改用户密码的状态chage

(1)用法:chage [选项] 用户名

(2)选项:-l 列出用户详细密码状态

          -d 日期:修改密码最后一次修改日期(shadow3字段)

          -m 天数:两次密码修改间隔(shadow中四字段)

          -M 天数:密码有效期(shadow中5字段)

          -W 天数:密码过期前警告天数(shadow中6字段)

          -I 天数:密码过期后宽限天数(shadow第7字段)

          -E 日期:账号失效时间(shadow中8字段)

(3)应用:

     要求用户在第一次登陆的时候必须强制一定要修改密码:chage -d 0 dayi123

6、删除用户userdel

(1)用法:userdel [参数] UserName

(2)参数:-f:强制删除用户,即使用户当前已登录;

-r:删除用户的同时,删除与用户相关的所有文件。

(3)应用:

     删除dayi123用户及所有相关文件:userdel dayi123

7、组管理命令groupadd、groupdel、groupmod、gpasswd

(1)groupadd 新建用户组

     语法:groupadd [参数] GroupName

     参数: -g:指定新建工作组的id;

-r:创建系统工作组,系统工作组的组ID小于500;

     应用举例:新建组dayi并指定GID为555

[[email protected] ~]# groupadd -g 555 dayi

[[email protected] ~]# cat /etc/group | grep dayi

dayi:x:555:

(2)groupdel 删除用户组(首先删除对应的用户  然后才能执行对应的组的删除操作)

     语法:groupdel GroupName

(3)groupmod修改组信息

     语法:groupmod [参数] GroupName

     参数:-n 新的名字

          -g 新的GID

     修改组dayi名称为dy,修改GID为666:

[[email protected] ~]# groupmod -g 666 -n dy dayi

[[email protected] ~]# cat /etc/group | grep dy

dy:x:666:

(4)gpasswd给组新建一个密码

(5)groupmems用户主组的管理员成员

     用法:groupmems [选项] [动作]

     参数:-g 组  -a 用户名

           -g 组  -d 删除

           -g 组  -p 清空

           -g 组  -l 列出组内所有的用户

     应用:把test添加到dayi123用户组,并列出dayi123组内所有成员

 [[email protected] ~]# groupmems -g dayi123 -a test

 [[email protected] ~]# groupmems -g dayi123 -l

 test

7、用户和组管理的其他命令

(1)chfn命令

    1)作用:改变finger命令显示的信息
    2)用法: chfn [参数]

    3)应用举例:

[[email protected] data]# chfn

Changing finger information for root.

Name [root]: root

Office []: mgedu

Office Phone []: 123456

Home Phone []: 23456

 

Finger information changed.

(2)chsh命令

    1)作用:更换登录系统时使用的shell
    2)语法:chsh [参数]

    3)应用举例:

[[email protected] data]# chsh

Changing shell for root.

New shell [/bin/bash]:

(3)finger命令

    1)作用:用于查找并显示用户信息
    2)语法:finger [ 参数]

    3)应用举例:

[[email protected] data]# finger

Login     Name       Tty      Idle  Login Time   Office     Office Phone   Host

root      root       tty1    22:23  Mar 30 13:16 mgedu      123456       

root      root       pts/0          Mar 31 08:54 mgedu      123456         

四、用户身份切换su

1、作用:进行用户身份的切换

2、语法:su – UserName  #切换用户身份,所有的环境都会切过去

         su UserName     #切换用户身份,某些环境变量可能不会切换过去

su - UserName -c "date +‘%Y %m‘"  #以某个用户的身份执行命令但不切换用户

3、使用su的一些注意事项:

1)使用root切换到其他普通的时候 是不需要密码的

2)通用户切换到root或者切换到其他用户的时候是需要密码登录的

3)su - root 用户名可以省略 但是仅限于root用户

4)如果想切换到root用户不用输密码,可以只用visudoer编辑

xian    ALL=(ALL)       NOPASSWD: ALL1

4、应用

    1)用户身份的切换

[[email protected] data]# su - dayi123

Last login: Fri Mar 31 10:49:16 EDT 2017 on pts/0

[[email protected] ~]$ su -

Password:

Last login: Fri Mar 31 10:51:18 EDT 2017 on pts/0

[[email protected] ~]# su -

Last login: Fri Mar 31 12:45:12 EDT 2017 on pts/0

[[email protected] ~]# su  dayi123

2)不切换身份,以其他用户执行命令

  [[email protected] ~]$ su - root -c "ls /root"

  Password:

  anaconda-ks.cfg  baoding.log  dayi123.txt  EOF  instll.log  sn.txt  test  tr

  [[email protected] ~]$ exit

  exit

  [[email protected] ~]# su - dayi123 -c "mkdir /root/dayi123"

  mkdir: cannot create directory ‘/root/dayi123’: Permission denied

  [[email protected] ~]# su - dayi123 -c "mkdir /tmp/dayi123"

   [[email protected] ~]# su - dayi123 -c "ls /tmp/dayi123 -d"

  /tmp/dayi123




以上是关于Linux系统下用户与组的管理的主要内容,如果未能解决你的问题,请参考以下文章

Linux系统用户与组的基本命令

linux基础:用户与组,权限管理

Linux CentOS 8(用户与组相关权限管理实验)

Linux CentOS 8(用户与组相关权限管理实验)

Linux CentOS 8(用户与组相关权限管理实验)

用户与组的管理详解