在Linux 上的账号可以分成两类:
我们可以把 Linux 的所有账号依照下面两种方法进行分类:
依照账号存储的位置
账号数据存放在不同的地方,其可使用的范围就会不太一样,账号的使用范围我们称为视野。依照账号储存的位置与视野不同,我们可以区分本机账号与网域账号两种:
本机账号: 账号密码储存于本机硬盘中,我们称为本机账号。 本机账号使用范围只能在账号建立的 Linux 系统上,如果超出范围时,本机账号将无法使用。比如:你在自己电脑上登录用的账号和密码,正常是无法在其它的电脑上使用的。
网域账号: 你也可以把大量的计算机组织成为一个网域,然后在网域中的某一台 Linux 上建立账号数据,并且通过某些通信协议,将账号数据分享出来。当其他计算机需要取得账号数据时,再通过网络调用这些分享的账号即可。这种账号我们称为网域账号 (Domain Account)。
依照账号的功能
不管是本机账号或是网域账号,我们还可以把所有账号依照功能分成下面几类
用户账号部分: 包含了超级用户、普通用户;而普通用户中还可细分为系统用户、真实用户两种。
群组账号部分: 包含了超级用户群组、系统群组以及用户自定义组三大类。
另外,Linux 系统的“用户自定义组“类型中,还有一种名为用户私有群组 (UPG, User Private Group)的群组。什么是 用户私有群组呢?用户私有群组(UPG, User Private Group)是指 “与用户账号名称相同,且为用户的主要群组”的群组。当你建立新的用户账号时,Linux 会自动建立该用户的私有群组。如,当你建立 test 这个用户账号时,Linux 会自动建立了一个名为 test 的群组,并且让 test群组成为 test 用户账号的主要群组,test 群组即是 test 的私有群组。
了解完账号的基本概念后,我们一起来看下账号到底记录了哪些信息
命令介绍
useradd - 创建一个新用户或更新默认新用户信息
命令语法
useradd [选项] 登录
useradd -D
useradd -D [选项]
命令选项
-D 默认
-u UID 用来指定账号的 UID,如果省略这个参数,useradd会自动以最后一个可用的 UID 作为新账号的 UID。
-o 告诉 useradd 允许重复的 UID。
-g gid 定义用户的主要群组。使用 -g 参数前,GROUP 必须已经存在。
-d HOME 指定用户的主目录。默认的主目录是建立在 /home/ 目录下,而且目录名称与用户名称相同。
-s SHELL 指定用户登录执行的程序。
-c COMMENT 指定用户的批注说明。如果批注文字包含空白,请记得使用双引号 (") 包起来。
-r 这个参数用来指出建立一个系统用户的账号。
-M 不创建家目录
-N 不创建同名组
#相关文件
/etc/passwd
用户账户信息。
/etc/shadow
安全用户账户信息。
/etc/group
组账户信息。
/etc/gshadow
安全组账户信息。
/etc/default/useradd
账户创建的默认值。
/etc/skel/
包含默认文件的目录。
/etc/subgid
Per user subordinate group IDs.
/etc/subuid
Per user subordinate user IDs.
/etc/login.defs
Shadow 密码套件配置。
这些参数大多数可以同时使用,可以根据自己的需求指定,例如 创建一个linux用户hello – uid为 1500 – 附加组为 hello – 家目录为 /home/hello – 登陆shell为 /bin/bash – 描述为 “this is a test user”
useradd -u 1500 -G hello -d /home/hello -s /bin/bash -c "this is a test user" hello
关于linux本机用户 本机的用户账号数据储存于/etc/passwd文件中。与其他的配置文件一样,passwd 也是一个文本文件,因此,你可以直接使用文字处理程序,例如 cat 或 less 浏览其中的内容。
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
/etc/passwd 权限必须是0644,每一行代表一个用户的账号数据,每一行又使用冒号(:)分隔为几个部分
USERNAME:PASSWORD:UID:GID:COMMENT:HOMEDIR:SHELL
- USERNAME:用户识别名称,也是登录的名称
- PASSWORD:密码位,用于存储用户的密码,为了安全起见,密码放在另一个文件中,这里统一用x
- UID:用户识别号,0表示为管理员,非0为普通用户
- GID:组识别号,用来识别用户组的身份,同样0为管理员组,非0为系统群组或者自定义组
- COMMENT:描述信息
- HOMEDIR:家目录位置
- SHELL:shell类型
命令介绍
usermod - 修改一个用户账户
命令语法
usermod [选项] 登录
命令选项
-l NEWNAME 修改账号的用户名称,NEWNAME 即是新的账号名称。
-L 锁定账号,一经锁定的账号将无法用来登录系统。
-U 解除锁定。
命令介绍
userdel - 删除用户账户和相关文件
命令语法
userdel [选项] 登录
命令选项
-r 用户主目录中的文件将随用户主目录和用户邮箱一起删除。在其它文件系统中的文件必须手动搜索并删除。
-f 强制
删除tom用户以及其家目录文件
[root@zutuanxue ~]# userdel -r tom
[root@zutuanxue ~]# id hello
uid=1500(hello) gid=1500(hello) 组=1500(hello)
[root@zutuanxue ~]# id -u hello
1500
[root@zutuanxue ~]# whoami
root
[root@zutuanxue ~]# w
18:21:43 up 2:01, 1 user, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.1.17 16:16 3.00s 0.08s 0.00s w