Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;
另一方面也可以帮助用户组织文件,并为用户提供安全性保护。
每个用户账号都拥有一个唯一的用户名和各自的口令。
用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。
实现用户账号的管理,要完成的工作主要有如下几个方面:
概念说明:
UID
:每一个用户都会有一个对应的UID
, 该UID
在系统捏是唯一存在的GID
:每个用户在创建的时候都会默认为这个用户创建一个用户组(主组),每个用户组都对对应一个GID
, 用户必须属于一个且只有一个主组。主组之外的组属于用户的附加组特别说明: 一个用户只有一个主组,但可以属于0个或者多个附加组
配置文件:
/etc/passwd # 存储用户关键信息的文件
/etc/shadow # 存储用户密码信息的文件
/etc/group # 存储用户组关键信息的文件
用户账号的管理工作主要涉及到用户账号的添加、修改和删除。
添加用户账号就是在系统中创建一个新账号,然后为新账号分配用户号、用户组、主目录和登录Shell等资源。刚添加的账号是被锁定的,无法使用。
# 语法
$ useradd 选项 用户名
参数项:
序号 | 参数 | 说明 |
---|---|---|
1 | -c | comment 指定一段注释性描述 |
2 | -d | 指定一个目录成为用户的家目录(必须使用绝对路径), 默认会创建一个和用户名相同的家目录 如果此目录不存在,则同时使用-m选项,可以创建主目录 |
3 | -g | 用户组 指定用户所属的用户组,不指定用户组则会默认创建一个和用户名相同的用户组 |
4 | -G | 用户组,用户组 指定用户所属的附加组 |
5 | -u | 后面指定UID, 指定一个特定的UID给新建的账号 |
6 | -M | 强制不创建用户家目录 |
7 | -s | Shell文件 指定用户的登录Shell |
示例:
# 创建用户
$ useradd -d /home/sam -m sam
# 查看用户家目录
$ ls /home/sam
examples.desktop
如果一个用户的账号不再使用,可以从系统中删除。
删除用户账号就是要将/etc/passwd
等系统文件中的该用户记录删除,必要时还删除用户的主目录。
删除一个已有的用户账号使用userdel
命令,其格式如下:
userdel 选项 用户名
常用的选项是 -r,它的作用是把用户的主目录一起删除。
例如:
# 删除用户
$ userdel -r sam
# 查看删除的用户家目录
$ ls /home/sam
ls: 无法访问'/home/sam': 没有那个文件或目录 # 说明该用户已被删除
此命令删除用户sam
在系统文件中(主要是/etc/passwd
, /etc/shadow
, /etc/group
等)的记录,同时删除用户的主目录
修改用户账号就是根据实际情况更改用户的有关属性,如用户号、主目录、用户组、登录Shell等。
修改已有用户的信息使用usermod
命令,其格式如下:
$ usermod 选项 用户名
常用的选项包括-c, -d, -m, -g, -G, -s, -u以及-o等
,这些选项的意义与useradd
命令中的选项一样,可以为用户指定新的资源值。
另外,有些系统可以使用选项:
-l
新用户名-u
修改用户id-g
修改用户的用户组id-G
修改用户附组的组id这个选项指定一个新的账号,即将原来的用户名改为新的用户名。
例如:
$ usermod -s /bin/ksh -d /home/z –g developer sam
此命令将用户sam的登录Shell修改为ksh
,主目录改为/home/z
,用户组改为developer
。
linux系统不允许内有密码的账户登录系统,刚创建的用户会处于锁定状态,因此需要给用户设置一个密码,该用户才可以登录到系统中去。
语法格式:
$ passwd 选项 用户名
可使用的选项:
-l
锁定口令,即禁用账号。-u
口令解锁。-d
使账号无口令。-f
强迫用户下次登录时修改口令。锁定用户:
# 用户sam 不能登录系统
$ passwd -l sam
删除密码:
# 执行该指令, 用户密码将会被删除,用户将无法登录到系统
$ passwd -d sam
修改当前用户密码:
$ passwd
更改 gll 的密码。
(当前)UNIX 密码:
输入新的 UNIX 密码:
重新输入新的 UNIX 密码:
passwd:已成功更新密码
修改指定用户的密码:
# 输入两次密码即可
$ passwd sam
输入新的 UNIX 密码:
重新输入新的 UNIX 密码:
passwd:已成功更新密码
文件/etc/shadow
与密码相关的文件:
$ cat /etc/shadow | grep "gll"
gll:$6$vAiekYK/$dh6LYp2b/t.37vG57CBZ.KOEBwTTf/ptZMk9.yktX4vUYyQ/wofkYQQHjTKdJSzqslsOymgMHCYtSoHC.Niz/.:19076:0:99999:7:::
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。
不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。
用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group
文件的更新
格式:
$ groupadd 选项 用户组
选项:
-g GID
指定新用户组的组标识号(GID)。-o
一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同示例:
# 不指定组id, 系统会默认添加一个gid, 新组的组标识号是在当前已有的最大组标识号的基础上加1
$ groupadd group1
# 指定gid
$ groupadd -g 101 groupadd
格式:
groupmod 选项 用户组
常用的选项有:
-g GID
为用户组指定新的组标识号。-o
与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。-n 新用户组
将用户组的名字改为新名字示例:
# 查看最后一行组信息
$ tail -1 /etc/group
sam:x:1001:
# 修改组id
$ groupmod -g 1002 sam
$ tail -1 /etc/group
sam:x:1002:
示例2:
# 查看最后一行组信息
$ tail -1 /etc/group
sam:x:1002:
# 修改组id为1003, 组名为nsam
$ groupmod -g 1003 -n nsam sam
$ tail -1 /etc/group
nsam:x:1003:
格式:
$ groupdel 用户组
示例:
# 此命令从系统中删除组group1
$ groupdel group1