1. 用户标识符:UID 和 GID
每个登录用户至少会获取两个id(user ID 和 group ID)
1.1 用户登录流程:
1 先查找/etc/passwd是否存在输入的账号,如果有,读取对应的UID和 GID(在/etc/group)以及家目录和shell设置。
2 再进入/etc/shadow核对输入的密码是否跟用户密码一致。
3 如果一切正常,进入shell管理阶段。
1.2 跟用户账号有关的文件:
1.2.1 /etc/passwd
每一行都代表一个账号,上面是系统默认自带的账号,它们是系统正常运行所必须的,如 bin、daemon称之为系统账号。
root:x:0:0:root:/root:/bin/bash
每行账号信息用:分割,共有7个信息,以root账号为例
1 账号名称:root,方便用户,不用记数字,跟网址一样,不需要记住ip
2 密码: x,都是显示x,为了安全,把密码数据放到/etc/shadow 了
3 UID:0 ,真正的用户标识符。账号名称就是跟它对应的。
当UID为0时,代表是系统管理员。如果其他账号UID设为0,也就具有root权限。
1~999,保留给系统使用的ID。
1000~60000,给一般用户用。
4 GID:0, 与/etc/group有关。
5 用户信息说明: 表明账号的意义。
6 家目录:/root 。用户登录成功后就会跑到的目录。默认的用户家目录为/home/userName
7 shell: /bin/bash。 用户登录系统后就会获取一个shell来与系统的内核沟通。为啥默认的shell为bash,就是这 设定
1.2.2 /etc/shadow
同理用:分割,且有九个信息
分别是:
账号名称(与/etc/passwd对应)
密码(加过密)
最近修改密码日期
密码不可修改天数(设置为0,则表示随时可修改)
密码需要重新修改的天数(强制用户多旧需要重置密码)
密码需要修改期限前的警告天数
密码过期后的账号宽限时间
账号时效日期
保留字段
1.3 用户组
1.3.1 /etc/group 和 /etc/gshadow
/etc/group
同理:分割,共4部分,分别是:
组名 / 用户组密码 / GID / 此用户组支持的账号的名称
(一个账号可以加入多个群组,那某个账号想要加入此群组时,将该账号填入这个字段即可,
如:root:x:0:root,dmtsai )
/etc/gshadow
- 组名
- 密码栏,同样的,开头为 ! 表示无合法密码,所以无群组管理员
- 群组管理员的账号 (相关信息在 gpasswd 中介绍)
- 该群组的所属账号 (与 /etc/group 内容相同)
1.3.2 初始用户组(inital group)
每个使用者在他的 /etc/passwd 里面的第四栏的 GID , 那个 GID 就是所谓的『初始群组 (initial group) 』!也就是说,当用户一登陆系统,立刻就拥有这个群组的相关权限的意思
因为是初始群组, 使用者一登陆就会主动取得,不需要在 /etc/group 的第四个字段写入该账号的!
1.3.3 有效用户组(effective group)
查看当前支持的用户组—groups
或
第一个输出的群组即为有效群组 (effective group)
通常有效群组的作用是在新建文件
去创建一个新档,例如: 『 touch test 』,那么这个文件的拥有者为 dmtsai ,而且群组也是 dmtsai .
1.3.3 切换有效用户组
newgrp groupname
前提是要切换到的用户组必须是用户当前已经支持的,比如目前支持root/admin/common,那么该命令只能在这三个之间切换。
2 账号管理
2.1 新增用户 useradd [-xxxxxx]
有一堆可选项配置,不过有一些系统默认,比如自动创建家目录,且权限700,比如创建同名用户组
配置项举例:
新增boss2,配置UID为1600,且初始用户组为boss1
2.2 删除用户 userdel username
2.3 设置密码 passwd username
默认新增账号后是锁定状态
root账号给boss2设置密码,(注意如果passwd 后没用户名,则就变成修改当前用户的密码了)
可以登录了
2.4 修改用户信息 usermod [-] username
2.5 查询相关uid和gid —- id username
3 用户组管理
3.1 新增用户组 groupadd [ -g gid] [-r] groupname
3.2 修改 groupmod [-g gid] [-n group_new_name] groupname
3.3 删除 groupdel [groupname]
4 身份切换
因为系统账号权限高,容易产生误操作等问题,一般建议使用一般账号登录,需要高级别权限时,再切换到系统账号。比如一般账号切换成root,有两种方式:
4.1 su (switch user)
可以进行任意身份切换: su [-lm] [-c xx] [username]
需要切换账号的密码,如果直接su ,表示切换到root,同时su -(带不带-)区别很大,不带-,不能完全切换到root变量。
-c “commonds” 只使用一次root命令就自动回复原本身份
exit 退出su环境,回复原本身份
风险:每个账号都需要知道root密码
4.2 sudo
sudo [-b] [-u username] commond
sudo的执行者仅需知道自己的密码。sudo可以让你以其他用户身份执行命令(通常是使用root的身份)
只有规范到/etc/sudoers内的用户才能执行sudo这个命令,默认只有root可用改命令。
把boss2加到/etc/sudoers,需要用visudo命令(有语法检查)
默认只有root,把boss2加到后面
再次使用sudo,可以了
5 主机用户信息
5.1 查询用户:w who last lastlog
5.2 用户交谈 write mesg wall
write user [终端]