Linux用户和用户组
Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。
每个用户账号都拥有一个惟一的用户名和各自的密码。
用户在登录时键入正确的用户名和密码后,就能够进入系统和自己的主目录。
实现用户账号的管理,要完成的工作主要有如下几个方面:
- 用户账号的添加、删除与修改。
- 用户密码的管理。
- 用户组的管理。
相关三个重要文件(均可使用vim
进行查看编辑)
-
/etc/passwd
:存储用户的关键信息
root:x:0:0:root:/root:/bin/bash
该行由7段组成,每段间以:
分隔,每段含义如下
用户名 | 用户密码 | 用户ID | 组ID | 备注 | 家目录 | 启动shell |
---|---|---|---|---|---|---|
root | x | 0 | 0 | root | /root | /bin/bash |
详细说明:
①用户密码均显示为“x”,实际密码加密后将加密值储存在/etc/shadow
中
②用户ID必须为非负数,0为root用户,1499为系统保留用户,50065535为普通用户
③备注为一行不含空格的字符串,用于简述用户信息
④启动shell为从该用户登录系统后所使用的shell程序,常用的shell有sh
csh
ksh
tcsh
bash
等等,默认情况下为/bin/sh
-
/etc/group
:存储用户组的关键信息
root:x:0:
该行由4段组成,每一段间以:
区分,每段含义如下
组名称 | 组密码 | 组ID | 组成员 |
---|---|---|---|
root | x | 0 |
详细说明:
①组密码均显示为“x”,和用户密码一样加密储存在/etc/gshadow
,一般情况下不会给用户组设置密码
②组成员如果显示空缺则该组只有一个用户且用户名与组名相同,如果该组有多个用户,则该字段显示所有的用户名,中间以,
隔开
-
/etc/shadow
:存储用户密码的关键信息
root:$id$salt$encrtpted:17051:0:99999:7:::
该行由9段组成,每一段间以:
区分,每段含义如下
用户名 | 加密值 | 最近密码修改时间 | 密码最短使用天数 | 密码最长使用天数 | n天前提示密码即将过期 | 密码过期后宽限天数 | 账号失效时间 | 保留字段 |
---|---|---|---|---|---|---|---|---|
root | $id$salt$encrtpted |
17051 | 0 | 99999 | 7 |
详细说明:
①加密值显示!
表示被锁定,显示!!
表示没有密码
②最近密码修改时间,是从1970年1月1日开始计算一共经历了多少天
③最短密码使用天数设置为0,表示无限制
④最长密码使用天使设置为99999表示无限制
⑤密码过期后宽限天数设置为0表示过期立即锁定,设置为-1表示永不锁定
二、用户账号管理
-
useradd
功能描述:添加用户
常用语法:useradd
[选项] [用户名]
常用选项:
-g 指定用户组
-G 指定用户附加组
-u 指定用户的用户编号
示例:
[root@vultr ~]# useradd test1 //不加任何选项直接添加用户“test1”
[root@vultr ~]# ls /home/ //验证家目录下是否有“test1”,有表示创建成功
test1
[root@vultr ~]# tail -1 /etc/passwd //验证“passwd”文件最后是否有“test1”用户信息,有表示创建成功
test1:x:1002:1002::/home/test1:/bin/bash
[root@vultr ~]# useradd -g 1002 -G 1001 -u 888 test2 //添加用户“test2”指定用户组为“1002”,附加用户组为“1001”,用户ID为“888”
[root@vultr ~]# tail -1 /etc/passwd //查看“/etc/passwd”有“test2”用户信息,并且指定用户ID和用户组成功
test2:x:888:1002::/home/test2:/bin/bash
[root@vultr ~]# tail -2 /etc/group //在“/etc/passwd”文件夹下看到,“test2”用户属于“1001”附加组中
mysql:x:1001:test2
test1:x:1002:
-
usermod
功能描述:修改用户
常用语法:usermod
[选项] [用户名]
常用选项:
-g 修改用户组
-G 修改用户附加组
-u 修改用户的用户编号
-l 修改用户名
示例:
[root@vultr home]# useradd test1 //添加一个“test1”
[root@vultr home]# tail -1 /etc/passwd
test1:x:1002:1002::/home/test1:/bin/bash //“test1”用户组ID为“1002”
[root@vultr home]# usermod -g 1000 -G 1001 test1 //修改“test1”的用户组ID为“1000”,附加组ID为“1001”
[root@vultr home]# tail -1 /etc/passwd
test1:x:1002:1000::/home/test1:/bin/bash //用户组ID已修改
[root@vultr home]# tail -3 /etc/group
www:x:1000:
mysql:x:1001:test1 //“1001”附加组成员有用户“test1”
test1:x:1002:
[root@vultr home]# usermod -l baba test1 //修改“test1”的用户名为“baba”
[root@vultr home]# tail -1 /etc/passwd
baba:x:1002:1000::/home/test1:/bin/bash //修改成功
-
passwd
功能描述:修改密码
常用语法:passwd
[用户名]
[root@vultr ~]# tail -1 /etc/shadow //查询“shadow”文件发现“test1”用户密码字段显示“!!”表示没有密码
test1:!!:17722:0:99999:7:::
[root@vultr ~]# passwd test1 //给“test1”用户修改/新增密码
Changing password for user test1.
New password: //输入新密码
Retype new password: //再次输入新密码
passwd: all authentication tokens updated successfully. //提示密码设置成功
[root@vultr ~]# tail -1 /etc/shadow //此时再次查询“shadow”文件,发现有了加密值
test1:$1$pMEfQ0PW$tKUwcMa50ZGeoCKjx7gdB1:17723:0:99999:7:::
-
su
功能描述:用于切换用户登录
常用语法:su
[用户名](若不写用户名则表示切换为管理员)
示例:
[root@vultr ~]# su test1 //切换到test1用户
[test1@vultr root]$ su //切换成功,并切换回root用户
Password: //普通用户切换到root用户时要输入root用户密码
[root@vultr ~]# //成功切换回root用户
-
userdel
功能描述:删除用户
常用语法:userdel
[选项] [用户名]
常用选项:
-r 删除同时删除其家目录
[root@vultr ~]# userdel -r test1 //删除“test1”用户及其家目录
[root@vultr ~]
[root@vultr ~]# tail -3 /etc/passwd //查询“passwd”文件,“test1”已被删除
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
www:x:1000:1000::/home/www:/sbin/nologin
mysql:x:1001:1001::/home/mysql:/sbin/nologin:
[root@vultr ~]# ls /home/ //查询家目录,没有“test1”
[root@vultr ~]#
二、用户账号管理
-
groupadd
功能描述:添加用户组
常用语法:groupadd
[选项] [用户组名]
常用选项:
-g 指定用户组ID,如果不指定用户组ID则默认从500后递增
示例:
[root@vultr ~]# groupadd -g 888 baba //创建用户组“baba”,指定用户组ID为“888”
[root@vultr ~]# tail -1 /etc/group //查询“/etc/group”表示创建成功
baba:x:888:
-
groupmod
功能描述:编辑用户组
常用语法:groupadd
[选项] [用户组名]
常用选项:
-g 修改用户组ID
-n 修改用户组名
示例:
[root@vultr ~]# tail -1 /etc/group //查询“/etc/group”用户组“baba”的信息
baba:x:888:
[root@vultr ~]# groupmod -g 666 -n yeye baba //修改用户组“baba”的组ID为“666”,组名为“yeye”
[root@vultr ~]# tail -1 /etc/group //查询“/etc/group”表示修改成功
yeye:x:666:
-
groupdel
功能描述:删除用户组
常用语法:groupdel
[用户组名]
常用选项:
[root@vultr ~]# tail -1 /etc/group //查询用户组“yeye”
yeye:x:666:
[root@vultr ~]# groupdel yeye //删除用户组“yeye”
[root@vultr ~]# tail -1 /etc/group //用户组“yeye”删除成功
mysql:x:1001:
写在最后
本篇主要让大家了解下用户和用户组关系,及管理方式,说到管理方式,无非就是“增”“删”“改”嘛。依旧希望大家通过多敲命令的方式去熟悉并且牢记,还是那句话,看得再多,不如自己做遍~
好啦,鸡汤还是不能忘的~