​Linux中的用户与组

一、用户与UID

1.用户(User)分为管理员与普通用户

2.对于Linux系统而言,通过UID来界定某用户是属于哪个用户,而不是用户名

3.查看某用户的UID可以通过id命令实现,Centos6.8与7.2系统上的UID部分起始数值有所不同

Centos7.2

[root@localhost home]# id root
uid=0(root) gid=0(root) groups=0(root)
[root@localhost home]# id admin
uid=1000(admin) gid=1000(admin) groups=1000(admin),10(wheel)
[root@localhost home]# id user1
uid=1004(user1) gid=1005(user1) groups=1005(user1)
[root@localhost home]# id ftp
uid=14(ftp) gid=50(ftp) groups=50(ftp)

Centos6.8

[root@localhost ~]# id root
uid=0(root) gid=0(root) groups=0(root)
[root@localhost ~]# id admin02
uid=501(admin02) gid=502(admin02) groups=502(admin02)
[root@localhost ~]# id admin03
uid=502(admin03) gid=503(admin03) groups=503(admin03)
[root@localhost ~]# id ftp
uid=14(ftp) gid=50(ftp) groups=50(ftp)

4.无论Centos6.8还是7.2,管理员的UID都为0,普通用户的UID编号为1-65535

5.普通用户可以分为:

系统用户:即系统本身存在的一些用户,但仍然只是属于普通用户,用于支持系统进程及一些服务的启用

UID:1-499(Centos6.8),1-999(Centos7.2)

登录用户:系统使用者后天创建的用户,用于供系统使用者登录,来与操作系统进行交互

UID:500开始(Cetnos6.8),1000开始(Centos7.2)

二、用户与发起进程间的关系

通常我们把运行中的程序称之为进程,某一项进程被用户发起运行后,其所能够访问的资源的权限取决于进程的运行者的身份。

范例:以root用户与admin用户为例,对/etc/shadow文件进行操作。

root用户通过nano命令对/etc/passwd文件进行查看

blob.png

此时通过ps aux命令查看系统进程,可以发现此时nano程序的发起者为root

blob.png

admin用户通过nano命令对/etc/passwd文件进行查看

blob.png

此时通过ps aux命令查看系统进程,可以发现此时nano程序的发起者为admin

blob.png

由此可以发现,对于/etc/shadow这个文件而言,root与admin用户能否对其进行访问,取决于root与admin自身的身份,而与发起的进程并无关系。

三、组与GID

1.组(Group)分为管理员组与普通组

2.对于Linux系统而言,通过GID来判断某用户属于哪个组,而不是组名

3.Linux中组的类别:

3.1主组(用户的主要组)

3.1.1用户必须属于一个并且只能属于一个主组

3.1.2新用户在建立的时候,如果没有指定主组的话,默认主组为私有组(即组名与用户名相同的组),私有组有且只有一个用户(即新用户自身)

3.2辅助组(即用户的附加组)

3.2.一个用户可以不属于辅助组,也可以属于多个辅助组

4.普通用户组可以分为: 

系统用户组:即系统用户的所属组,

GID:1-499(Centos6.8),1-999(Centos7.2)

登陆用户组:即登录用户的所属组,

GID:500开始(Cetnos6.8),1000开始(Centos7.2)

四、用户和组的配置文件

用户配置文件:/etc/passwd

用户密码配置文件:/etc/shadow

组配置文件:/etc/group

组密码文件:/etc/gshadow

1.用户配置文件:/etc/passwd中的字段信息如下:

[root@localhost ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash

该字段由冒号(:)分隔,共7个字段,自左向右解释如下:

用户名:密码:UID:GID:注释;家目录:默认Shell类型

2.用户密码配置文件:/etc/shadow中的字段信息如下:

[root@localhost ~]# cat /etc/shadow
root:$6$xdjdqJdXTfOk30W3$3YfvEL9rzNK6c1qYKSAv0anQXQkt/glZw7mPqE3FyHnQH/nswRqMGFmXeVbO1OJ1xkyB8cwEabuvaDOWaYCH3/::0:99999:7:::

该字段由冒号(:)分隔,共8个字段,自左向右解释如下:

登录用户:用户密码:密码最近一次被更改的时间(从1970.1.1开始算起的天数):密码再过几天允许变更:密码再过几天必须更改:密码到期前几天提醒用户:密码过期几天后帐号将被锁定:帐号几天后失效(从1970.1.1开始算起的天数)

3./etc/passwd中对于用户的密码,加密算法默认为sha512,可以被手动更改,命令为authconfig –passalgo=算法 –update

例如:更改默认的sha512加密算法为md5

[root@localhost ~]# authconfig --passalgo=md5 --update
[root@localhost ~]# useradd user15
[root@localhost ~]# passwd user15
Changing password for user user15.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.
admin:$6$tQtyCgrqniIA7HIo$yaAYYO5FNueKteRV2o1csx4u.1gAY6pQuRAiwR63Ur0Q4.8/SuJ4TwKaorA/NRzS3eC4PwzRzGbALz1sUlnwG0:17001:0:99999:7:::
gentoo:!!:14244:0:99999:7:::
111:!!:14245:0:99999:7:::
1111:!!:14245:0:99999:7:::
user1:!!:17021:0:99999:7:::
centos:!!:17021:0:99999:7:::
user12:!!:17021:0:99999:7:::
root1:!!:17021:0:99999:7:::
centos1:!!:17021:0:99999:7:::
user13:$1$XNtmO.u2$W/nMXJY8lNGWdREiEJjbY0:17021:0:99999:7:::
user15:$1$s91Vy80O$aEtCQFYMRqMkZXEn3MdZW/:17021:0:99999:7:::

可以看到,用户密码的加密方式由sha512更改为md5,此时新建一个新用户user15,为其设置密码后,查看/etc/shadow文件,user15的密码密文为$1开头,并且密文长度大幅缩短,而更改密码加密方式之前所创建的admin用户的密码密文为$6开头,且密文长度较长。

4.组配置文件:/etc/group中的字段信息如下:

[root@localhost ~]# cat /etc/group
root:x:0:gentoo

该字段由冒号(:)分隔,共4个字段,自左向右解释如下:

组名称:组密码:GID:以当前组为辅助组的用户列表(通过逗号隔开)

5.组密码文件:/etc/gshadow中的字段信息如下:

[root@localhost ~]# cat /etc/gshadow
root:::gentoo

该字段由冒号(:)分隔,共4个字段,自左向右解释如下:

组名:组密码:组管理员列表:以当前组为辅助组的用户列表(分隔符为逗号)

五、用户管理命令

1.useradd 新建用户

选项:

-u  指定新建用户的UID

-g  指定新建用户的主组

-c  指定新建用户的注释信息

-d  指定新建用户的家目录

-s  指定新建用户的默认shell

-G  指定新建用户的辅助组

语法格式:useradd 选项 用户名

示例:新建一个用户,用户名为user50,且uid为1050,主组为testgroup,注释信息为testuser,家目录为/home/user50,默认shell为/bin/bash,辅助组为root

[root@localhost ~]# useradd -u 1050 -g testgroup -c testuser -d /home/user50 -s /bin/bash -G root user50
[root@localhost ~]# id user50
uid=1050(user50) gid=1022(testgroup) groups=1022(testgroup),0(root)
[root@localhost ~]# cat /etc/passwd
user50:x:1050:1022:testuser:/home/user50:/bin/bash

-N  不创建与用户名同名的私用组作为新建用户的主组,而是用user组作为主组

示例:新建一个用户user51,将user组作为其主组

[root@localhost ~]# useradd -N user51
[root@localhost ~]# id user51
uid=1051(user51) gid=100(users) groups=100(users)

-r  创建系统用户(即UID小于500-Centos6,UID小于1000-Centos-7)

示例:新建一个用户user52,将其创建为系统用户

Centos7.2

[root@localhost ~]# useradd -r user52
[root@localhost ~]# id user52
uid=988(user52) gid=983(user52) groups=983(user52)

Centos6.8

[root@localhost ~]# useradd -r user52
[root@localhost ~]# id user52
uid=495(user52) gid=492(user52) groups=492(user52)

2.系统对于新创建用户的各项设置有默认值设定,其存储路径为/etc/default/useradd文件

使用cat /etc/default/useradd 或useradd -D都可查看默认设置

[root@localhost ~]# cat /etc/default/useradd 
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes

[root@localhost ~]# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes

修改默认设置如下:

范例:修改默认设置中的默认SHELL类型为/bin/csh

[root@localhost ~]# useradd -D -s /bin/csh
[root@localhost ~]# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/csh
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes

     

3.usermod 修改用户

语法格式:usermod 选项 用户名

选项:

-u  修改已经存在的用户的UID

-g  修改已经存在的用户的主组

-c  修改已经存在的用户的注释信息

-d  修改已经存在的用户的家目录

-s  修改已经存在的用户的默认shell

-G  修改已经存在的用户的辅助组

-l  修改已经存在的用户的用户名

范例:修改user52的用户名为user53

[root@localhost ~]# usermod -l user53 user52
[root@localhost ~]# cat /etc/passwd
user53:x:988:983::/home/user52:/bin/bash

-L  锁定该用户,在其/etc/shadow的对应条目上的密码字段中增加!

范例:将用户user51锁定

[root@localhost ~]# usermod -L user51
[root@localhost ~]# cat /etc/shadow
user51:!$1$rJvOIJUh$kX1vLz5NVLWcHcoOzK8xW0:17021:0:99999:7:::

-U  解锁该用户,在其/etc/shadow的对应条目上的密码字段中减少!

范例:将用户user51解锁

[root@localhost ~]# usermod -U user51
[root@localhost ~]# cat /etc/shadow
user51:$1$rJvOIJUh$kX1vLz5NVLWcHcoOzK8xW0:17021:0:99999:7:::

4.userdel 删除用户

语法格式:userdel 选项 用户名

选项:

-f  强制删除某用户(即使目标用户仍在登录,也将被强制删除,包括家目录与邮箱目录)

-r  移除某用户(此操作将会导致家目录和邮箱目录等目标用户的有关信息都被移除) 

5.id命令 查看用户相关ID信息

语法格式:id 选项 用户名

选项:

-u 查看指定用户的UID

-g 查看指定用户的起作用的GID

-G 查看指定用户的所有GID

-n 通常结合-G、-g来使用,输出指定ID的名字

6.passwd命令 设置用户密码 

语法格式:passwd 选项 用户名

注意:

1.修改自身密码,只需切换到目标用户,直接执行passwd即可

2.修改其他用户密码,只有root用户有权限,普通用户没有权限修改非自身的密码

选项:

-l  锁定指定用户

范例:锁定user51用户

[root@localhost ~]# passwd -l user51
[root@localhost ~]# cat /etc/shadow
user51:!!$1$rJvOIJUh$kX1vLz5NVLWcHcoOzK8xW0:17021:0:99999:7:::

-u  解锁指定用户

范例:解锁user51用户

[root@localhost ~]# passwd -u user51
[root@localhost ~]# cat /etc/shadow
user51:$1$rJvOIJUh$kX1vLz5NVLWcHcoOzK8xW0:17021:0:99999:7:::

注意:锁定的意思即为

-e  强制该用户下次登陆时必须修改密码

范例:指定admin用户在下次登陆时必须修改密码

[root@192 ~]# passwd -e admin
Expiring password for user admin.
passwd: Success

WARNING! The remote SSH server rejected X11 forwarding request.
You are required to change your password immediately (root enforced)
Last failed login: Mon Aug  8 21:23:58 CST 2016 from 192.168.211.1 on ssh:notty
There was 1 failed login attempt since the last successful login.
Last login: Mon Aug  8 21:23:05 2016
WARNING: Your password has expired.
You must change your password now and login again!
Changing password for user admin.
Changing password for admin.
(current) UNIX password:

-n  指定某用户密码的最短使用期限

-x  指定某用户密码的最大使用期限

-w  指定某用户的密码过期前提前多少天进行警告

六、组管理命令

1.groupadd:创建新组

语法格式:groupadd 选项 组名

选项:

-g  指定GID

-r  创建系统组(即GID<500-Centos6,GID<1000-Centos7)

2.groupmod:修改已存在的组

语法格式:groupmod 选项 组名

选项:

-n  修改已存在组的名字

-g  修改已存在组的GID

3.groupdel:删除组    

语法格式:groupdel 选项 组名

4.gpasswd 更改组密码

语法格式:gpasswd 选项 组名

选项:

-a  将指定用户添加至指定组中

-d  从指定组中移除指定用户

-A  将指定用户加入到组管理员列表中

5.newgrp命令 临时将指定组作为当前用户的主组

语法格式:newgrp 组名

注意:如果用户本不属于此组,则需要输入组密码

6.groupmems 更改与查看组成员

语法格式:groupmems 选项 行为

选项:

-g 指定某组

行为:  

-a  指定用户加入某组 

-d  从组中删除指定用户

-p  从组中清除所有成员 

-l  显示组成员列表

7.groups 用户 该命令可以查看用户所属组的列表

七、用户切换命令

通过su命令的两种方式来实现

  1. su 用户名:非登陆式切换,不会读取用户的配置文件,不改变当前工作目录

  2. su – 用户名:登录式切换,读取目标用户的配置文件,并切换至家目录,属于完全切换

注意:su命令在使用时由root用户切换至其他用户无需密码,普通用户互相切换时需要密码

原创文章,作者:Koinlers,如若转载,请注明出处:http://www.178linux.com/31257

(0)
KoinlersKoinlers
上一篇 2016-08-09
下一篇 2016-08-10

相关推荐

  • 马哥教育网络班20期+第10周课程练习

     1. 请详细描述CentOS系统的启动流程(详细到每个过程系统做了哪些事情) 1. 加电自检:POST     通电后主板CMOS中的BIOS(基本输入输出系统)将进行硬件自检并简单设置,根据硬盘等     相关设备情况进入下一步   &…

    学员作品 2016-08-15
  • vim文本处理工具

    vim编辑器     1、文本的编辑器的种类:         行编辑器:所谓的行编辑器是指一行一行来编辑处理的工具,如sed         全屏编辑器:编辑空间占据整个屏幕,如…

    学员作品 2016-08-10
  • for,while,until循环

    一、用until实现下列作业 1、每隔3秒钟到系统上获取已经登录的用户的信息;如果发现用户hacker登录,则将登录时间和主机记录于日志/var/log/login.log中,并提示该用户退出系统。 #!/bin/bash until  who | grep "^\<hacker\>" > /var/log/l…

    学员作品 2016-08-22
  • 关于文本处理工具之SED

                                                      &nbsp…

    学员作品 2016-08-10
  • 文本处理工具sed及文本编辑器vim课程作业

    文本处理工具sed课程作业     1、删除/etc/grub2.conf文件中所有以空白开头的行行首的空白字符         sed -n 's@^[[:space:]]\+@@p' /etc/grub2.cfg &…

    学员作品 2016-08-10
  • 马哥教育网络班20期-第七周课程作业

    1、创建一个10G分区,并格式为ext4文件系统; (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl;     ]#mke2fs -t ext4 -b 2048 -L MYDATA -m&n…

    学员作品 2016-09-07