1.用户理解
用户就是系统使用者的身份
在系统中用户 存储为若干串字符+若干个系统配置文件
用户信息涉及到的系统配置文件:
1) /etc/passwd ###用户信息
用户:密码:uid:gid:说明:家目录:用户使用的shell
admin:x:508:508::/home/admin:/bin/bash
(1):admin: 用户名。
(2):x: 密码(已经加密)
(3):508: UID(用户标识),操作系统自己用的
(4):508: GID组标识。
(5): : 说明;一般为用户全名或本地帐号
(6):/home/admin: 家目录
(7):/bin/bash: 登录使用的Shell,就是对登录命令进行解析的工具。
2) /etc/shadow ###用户认证信息
用户:密码:最后一次密码修改该时间:最短有效期:最长有效期:警告期:非活跃期:帐号到期日
admin:$1$xcMpCz88$.s0X.e07g4n6TOx6IowFa0:17441:0:99999:7:::
1)“登录名”是与/etc/passwd文件中的登录名相一致的用户账号
2)“口令”字段存放的是加密后的用户口令字,长度为13个字符。如果为空,则对应用户没有口令,登录时不需要口令;如果含有不属于集合{./0-9A-Za-z}中的字符,则对应的用户不能登录。
3)“最后一次修改时间”表示的是从某个时刻起,到用户最后一次修改口令时的天数。时间起点对不同的系统可能不一样。例如在SCOLinux中,这个时间起点是1970年1月1日。
4)“最小时间间隔”指的是两次修改口令之间所需的最小天数。
5)“最大时间间隔”指的是口令保持有效的最大天数。
6)“警告时间”字段表示的是从系统开始警告用户到用户密码正式失效之间的天数。
7)“不活动时间”表示的是用户没有登录活动但账号仍能保持有效的最大天数。
8)“失效时间”字段给出的是一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是一个合法的账号,也就不能再用来登录了。
3)/etc/group ###组信息
/etc/group 文件是用户组的配置文件,内容包括用户和用户组,并且能显示出用户是归属哪个用户组或哪几个用户组,因为一个用户可以归属一个或多个不同的用户组;同一用户组的用户之间具有相似的特征。
组名称:组密码:组id:附加组成员
admin:x:508:
第一字段:用户组名称;admin
第二字段:用户组密码;x
第三字段:GID;508
第四字段:用户列表,每个用户之间用,号分割;本字段可以为空;如果字段为空表示用户组为GID的用户名;
4)/etc/gshadow ###组认证信息
admin:!::
第一字段:用户组
第二字段:用户组密码,这个段可以是空的或!,如果是空的或有!,表示没有密码;
第三字段:用户组管理者,这个字段也可为空,如果有多个用户组管理者,用,号分割;
第四字段:组成员,如果有多个成员,用,号分割;
5)其他
/home/username ###用户家目录
/etc/skel/.* ###用户骨架文件
每当你新建一个用户的时候 (通过 useradd 命令),/etc/skel 目录下的文件,都会原封不动的复制到新建用户的家目录下~
注意: /etc/passwd是用户数据库,其中给出了用户名、加密口令和用户的其他信息. /etc/shadow是在安装了影子(shadow)口令软件的系统上的影子口令文件。影子口令文件将/etc/passwd 文件中的加密口令移动到/etc/shadow中,而后者只对超级用户( r o o t )可读。这使破译口令更困难,以此增加系统的安全性。
2.用户管理
2.1.用户建立
:::做实验之前可以用 watch -n 1 ‘tail -n 1 /etc/passwd’ 这个命令来监控。
useradd 参数 用户名字
-u ##指定用户uid
上面的shell为监控信息,不用管,下面的shell为实验命令的输入;
-g ##指定用户初始组信息,这个组必须已经存在!
所以在创建用户之前先查看/etc/group这个文件,看看电脑上存在哪些组,然后再将新建的用户放到这个组里,这里仅作示范。由于你是将用户的初始组放到其他组下,那么执行useradd时便不会在建立以自己名字haha命名的初始组。
此时监控命令更改为 watch -n 1 ‘tail -n 2 /etc/passwd /etc/group’
-G ##指定附加组,这个组必须存在
注意事项同-g。因为你此时要指定附加组,可以先显示都有哪些组,然后再将你要建立的用户在新建的时候加入这个组,成为这个组的附加成员。因为是指定附加组,其初始组hehe会在useradd时同时被建立出来
-c ##用户说明
这里可以加入你所想说明的东西。
-d ##用户家目录
默认用户的家目录为/home/username,用-d选项我们可以把家目录建在其他地方。
-s ##用户所使用的shell
/etc/shells记录了用户能使用shell的名字,可以先用此命令查询系统支持的shell。
2.2用户删除
userdel -r 用户名称
-r表示删除用户信息及用户的系统配置
用户删除时一定要加上-r,否则会余留下一些信息,当你想再次重建此用户时会出现麻烦。
从监控信息结合上一题可以看到已经删除ergou这个用户;
如果你在删除用户时没有加上-r,
2.3.组的建立
2.3.1groupadd ##建立组
2.3.2groupdel 组名字 ##删除组
2.4.用户id信息查看
id 参数 用户
不加参数只加用户 ##显示用户所有信息
-u ##用户uid
-g ##用户初始组id
-G ##用户所有所在组id
-n ##显示名称而不是id数字
-a ##显示所有信息
*:::做此实验前必须确保你的系统中有student用户,如果没有可以用useradd创建此用户,至于它的附加组为两个,是我自己给它人为添加,下一小节会讲到如何添加,暂且只看效果。
2.5.用户信息更改
usermod 参数 用户
-l ##更改用户名称
-u ##更改uid
-g ##更改gid,要更改到的gid必须事先存在,否则报错
-G ##更改附加组,要更改到的附加组必须事先存在,否则报错
-aG ##添加附加组,要添加到的附加组必须事先存在,否则报错
-c ##更改说明
-d ##更改家目录指定
-md ##更改家目录指定及家目录名称
-s ##更改shell
-L ##冻结帐号
-U ##解锁
此实验我们在第一条命令时已经将用户名更改,所以后面要用更改后的用户名进行实现,若使用之前的用户,系统会报错,说这个用户不存在;在第三行命令执行时出现错误,要更改到的组不存在,所以用第四条命令查询一下最后建立的三个组,然后更改到已经建立的组id,就不会再报错;倒数第四条命令出现错误,没有输入要更改的用户,下一条为正确命令。
**
3.用户权力下放
**
3.1.在系统中超级用户可以下放普通用户不能执行的操作给普通用户,也就是说,更改后普通用户在执行这个操作时身份变成了超级用户,但仅限于权力下放的操作,其他操作不会得到改变。
下放权力配置文件:/etc/sudoers
3.2.下放权力的方法
*)超级用户执行visudo进入编辑/etc/sudoers模式;直接在命令行输入visudo即可。
*)格式:
获得权限用户 主机名称=(获得到的用户身份) 命令
test desktop0.example.com=(root) /usr/sbin/useradd
test用户能在desktop0.example.com以超级用户身份执行/usr/sbin/useradd
3.3.执行下放权限命令
sudo 命令 ##如果第一次执行sudo需要输入当前用户密码
在/etc/sudoers中如果设置如下:
test desktop0.example.com=(root) NOPASSWD: /usr/sbin/useradd
表示用户调用sudo命令的时候不需要自己密码
这个为visudo后添加的东西
总结:首先使用hostname命令获得主机名称,然后添加一个用户xixi,切换到xixi这个用户,执行useradd haha这个命令时提示没有权限。此时,我们可以通过更改/etc/sudoers文件来进行权力下放的目的。我们可以通过visudo命令来直接编辑/etc/sudoers文件。此时我们的身份为root。进入文件内部后,找到合适的地方输入[获得权限用户 主机名称=(获得到的用户身份)]此实验我将输入[xixi localhost.localdomain=(root) NOPASSWD: /usr/sbin/useradd] 为什么会输入NOPASSWD,是因为如果第一次执行sudo需要输入当前用户密码,在/etc/sudoers中如果设置:test desktop0.example.com=(root) NOPASSWD: /usr/sbin/useradd 表示用户调用sudo命令的时候不需要自己密码。更改完成后:wq退出编辑。后面就可以切换到xixi这个用户去验证:创建新用户haha,然后通过查看/etc/passwd文件可以看到haha这个用户的信息出现,表示创建成功。
4.用户认证信息的控制
chage 参数 用户
-d ##用户密码组后一次修改的时间,如果设定成0,用户登陆系统后必须修改自己的密码
-m ##最短有效期
-M ##最长有效期
-W ##警告期
-I ##用户非活跃天数
-E ##帐号到期日格式 -E “YYYY-MM-DD”
此处监控命令为 watch -n 1 ‘tail -n 2 /etc/shadow’
5、root密码忘记
1.重新启动系统
2.在系统启动阶段按上下健停止系统系统引导
3.选择启动引导标题,按“E”进行编辑
4.找到linux16引导条目这一行,从这行最后删除到ro选项,并把ro改为rw,然后添加rd.break选项
5.ctrl+x启动设定过后的系统引导条目
6.进入系统后执行chroot /sysroot切换到真实的系统环境
7.passwd root修改超级用户密码
8.建立文件/.autorelabel让系统从新扫描所有文件
9.exit两次使系统自动重新启动