怎样能实现Linux下的用户管理
Linux是个多用户多任务的分时操作系统,所有一个要使用系统资源的用户都必须先向系统管理员申请一个账号,然后以这个账号的身份进入系统。用户的账号一方面能帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也能帮助用户组织文件,并为用户提供安全性保护。每个用户账号都拥有一个惟一的用户名和用户口令。用户在登录时键入正确的用户名和口令后,才能进入系统和自己的主目录。
实现用户账号的管理,要完成的工作主要有如下几个方面:
- 用户账号的添加、删除和修改
- 用户的管理
- 用户组的管理
用户是linux系统最底层的安全设备,用户的存在是为了回收权力
用户组是用户的延伸,可以共享权力
查看当前用户
whoami
查看系统中用户的信息
id | 查看正在使用的用户的所有id信息 |
---|---|
id -u | 查看正在使用用户的用户id |
id -g | 查看正在使用用户的组id |
id -G | 查看正在使用用户所在的所有组的id |
id -n | 显示用户的名字而不显示id数字(一般要加-u,-g或-G) |
切换用户
1.gnome–session–quit–force 注销当前用户,用其他用户登陆
2su - 用户名称(前提是该用户在系统当中已经存在,若不存在需要现在超级用户模式下新建立用户)
切换到普通用户
切换到超级用户
su - 中 “-” 标示在用户身份切换时同时切换当前用户的环境(否则环境不改变)
su - 执行时高级用户切换到低级用户不需要密码,低级用户切换到高级需要,平级用户切换切换也需要
每次su切换到其他用户操作之后必须退出,然后再次切换到其他用户,否则会造成用户紊乱
用户在系统中的存储方式
/etc/passwd
用户信息文件
用户名称:密码:uid:gid:说明:家目录:默认shell
“说明:默认shell的指定有那些可以查看系统中/etc/shells文件”
/etc/group
用户组信息文件
组的名字:组密码:组id:组成员
/etc/shadows
认证信息文件
/etc/skel/.*
默认开启shell的配置,用户的骨文件
home/username
用户的家目录
用户管理命令
1)用户的删除
userdel
userdel student ##删除用户但不删除用户的配置文件
userdel -r student ##删除用户并删除用户的配置文件
2)用户建立
用户信息监控命令
watch -n 1 'tail -n 3 /etc/passwd /etc/group;ls -l /home'
useradd ##建立用户的,建立用户时,读取/etc/login.defs 文件内容确定规则
useradd -u 8888 westos ##指定用户uid
useradd -g 21 tom ##指定用户初始组id,“21用户组必须是存在的”
useradd -G 21 westos ##指定用户的附加组id “21用户组必须存在”
useradd -c “hello” westos ##指定用户的说明
useradd -s /bin/sh westos ##指定用户的默认shell
用户组建立
groupadd
groupadd -g 888 westos##建立用户组并指定用户组的id
groupdel westos ##删除用户组westos
3)更改用户信息
usermod
usermod -l 新名称 westos ##更改用户的名称
usermod -u 6666 westos ##更改用户uid
usermod -g 21 westos ##更改用户的初始组
usermod -G 21 westos ##更改用户的附加组
usermod -aG 72 westos ##添加用户的附加组
usermod -G “” westos ##删除用户所有附加组的身份
usermod -c “hahaha” westos ##指定用户说明文字
usermod -d /home/lee westos ##更改用户家目录的指向
usermod -md /home/lee westos ##更改用户家目录
usermod -s /bin/sh westos ##更改用户的shell
usermod -L westos ##冻结用户
usermod -U westos ##解锁用户
用户认证信息
/etc/shadows ##记录用户认证信息
westos:!!:17895:0:99999: 7: : :
[1] [2] [3] [4] [5] [6] [7] [8] [9]
此文件一共有九列:
[1]
westos
用户名称:
[2]
!!
用户密码:
用户的加密字符串,默认用的加密方式为sha512对称加密,
如果加密字符串前出现"!"那么用户被冻结
[3]
17895
用户密码最后一次被更改的时间:
此时间计算是从1970-1-1开始计算的累计天数
[4]
0
用户密码最短有效期:
如果此位有设定数字,那么在此数字范围内的天数内是不能修改用户密码的
[5]
99999
用户密码最长有效期:
用户必须在此有效期内更新密码,如果超时会被冻结
[6]
7
密码警告期限:
在过期前制定天数内会发送警告信息给用户
[7]
用户非活跃天数:
此位默认为空,如果设定数值,那么在密码最长有效期过后仍然可以使用的天数
[8]
用户到期日:
默认为空,表示帐号一定会被冻结的时间点
[9]
用户自定义列,目前没有启用
passwd -S westos ##查看westos用户密码信息
用户名称
用户密码
passwd westos ##更改westos密码
passwd -l westos ##在用户密码前加入“!!”
passwd -u westos
usermod -L westos ##在用户密码前加入“!”
usermod -U westos ##在密码不为空时使用
passwd -d westos ##清空westos密码
注意:
普通用户改密码时
1.必须知道当前用户原始密码
2.密码不能和帐号名称相似
3.密码不能是纯数字或纯字母
4.密码不能是有序的字母和数字的组合
#用户密码最后一次被更改的时间#
passwd -e westos ##会改变用户最后一次更改密码时间为0.
用户在登陆时会被强制更改密码
chage -d 0 westos ##两个命令功能类似
#用户密码最短有效期#
passwd -n 1 westos ##westos用户在1天之内不能修改密码
chage -m 1 westos
#用户密码最长有效期#
passwd -x 30 westos ##设定westos在30天内必须改密码
chage -M 40 westos
#密码警告期限#
passwd -w 2 westos ##密码过期前两天有警告输出
chage -W 2 westos
#用户非活跃天数#
passwd -i 1 westos ##密码过期后仍可登陆系统的天数
chage -I 1 westos
#用户到期日#
chage -E 2018-11-11 westos ##westos用户在2018-11-11日会被冻结
#用户自定义列,目前没有启用#
用户授权
1.权力下放文件为/etc/sudoers
此文件可以用vim直接编辑,但是不提供语法检测
也可以使用visudo编辑此文件,visudo命令是提供语法检测的
2.下放方式
- visudo
100行左右
用户 主机名称=(得到的用户身份) 命令
linux localhost=(root) /usr/sbin/useradd ##linux用户可以在localhost主机以
##root用户身份执行useradd命令
linux localhost=(root) NOPASSWD: /usr/sbin/useradd ##linux用户可以在localhost主机以
##root用户身份免密执行useradd
课后作业练习
1.新建用户组
groupadd shengchan
groupadd caiwu
groupadd jishu
2.新建用户
useradd -g shengchan adminsc
useradd -g caiwu admincw
useradd -g jishu adminjs
useradd -G shengchan tom
useradd -G caiwu harry
useradd -G jishu leo
useradd admin
3.新建目录
mkdir /cw /sc /js
chown adminsc /sc
chown adminjs /js
chgrp caiwu /cw
chgrp jishu /js
chgrp shengchan /sc
chmod ug=rwx,o=- - - /cw
chmod ug=rwx,o=- - - /js
chmod ug=rwx,o=- - - /sc
chown admincw /cw
ls -ld /sc /js /cw