​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

相关推荐

  • vim 作业

    4、如何设置tab缩进为4个字符?  vi/vim中,可以通过在~/.vimrc中添加set ts=4 执行source ~/.vimrc 重读配置文件 5、复制/etc/rc.d/init.d/functions文件至/tmp目录;替换/tmp/functions文件中的/etc/sysconfig/init为/var/log; 拓展模式下: &…

    学员作品 2016-08-15
  • sed 流编辑器使用详解

    一、Stream EDitor, 行编辑器   sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出…

    2016-08-10
  • 马哥团队带你领略阿里风景

    马哥团队带你揭秘互联网巨头公司—阿里巴巴 继马哥团队腾讯一行之后,4月中旬我们又来到了坐落于杭州的另一个互联网巨头公司。 波涛万里长江水,带你入杭州。 真情伴你走,春色为你留。 西湖烟水茫茫,百顷风潭,十里荷香。 风景甚好,怎能不去杭州的阿里巴巴转转呢? 带着“淡妆”,走,跟着我们前行…… 马哥更是笑道:“我们这次来是和马云谈合作的!让我们培训出来的更多同学…

    学员作品 2015-04-29
  • Linux学习总结及练习&day08-sed文本处理工具

    第一部分、Linux文本处理三剑客之sed(Stream EDitor)文本编辑工具     一、sed的基本功能工作原理     sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令…

    Linux干货 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
  • linux sed命令

    linux sed命令 简介: sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(patternspace),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件…

    学员作品 2016-08-10