第1章 用户的分类
root |
皇帝 |
UID:0 |
虚拟用户 |
傀儡 1.每个程序、服务运行的时候都需要一个用户 2.傀儡用户不需要用来登录系统 shell:/sbin/nologin |
UID:1-499 |
普通用户 |
shell:/bin/bash |
UID:500+ |
第2章 与用户相关的配置文件
/etc/passwd 存放用户的信息
/etc/shadow 存放用户密码的信息
/etc/group 存放用户组的信息
/etc/gshadow 存放用户组密码信息
[root@dzc ~]# head -2 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
第一列 |
第二列 |
第三列 |
第四列 |
第五列 |
第六列 |
第七列 |
root: |
x: |
0: |
0: |
root: |
/root: |
/bin/bash |
bin: |
x: |
1: |
1: |
bin: |
/bin: |
/sbin/nologin |
用户名 |
密码 存放密码的位置 |
用户的UID |
用户的GID |
用户的说明信息 |
用户的家目录 |
用户使用的shell命令解释器 |
shell 命令解释器运行命令
/bin/bash ##用户的默认的命令解释器
/sbin/nologin ## 创建一个傀儡用户 虚拟用户
第3章 与用户相关的目录 /etc/skel
3.1 在linux下面添加一个用户
在添加用户的时候 使用的是用户老家的模板 /etc/skel
.bash_logout #用户登出 退出的时候运行 这个文件里面的内容
.bash_profile #/etc/profile 环境变量 别名
.bashrc #存放用户的别名
【企业案例】
登录到某个用户下面 提示 -bash-4.1$
第一个里程碑 -原因
这个用户里目录里面 与环境变量有关的文件被删除
.bash_profile
.bashrc
第二个里程碑 -解决从/etc/skel中把丢失的文件 复制回来即可
#切换到这个用户
-bash-4.1$ whoami
lidao
#重新登录
-bash-4.1$ cp /etc/skel/.bash* ~
-bash-4.1$ logout
[root@oldboyedu-40 ~]# su - lidao
[lidao@oldboyedu-40 ~]$
环境模拟:
[root@dzc ~]# su - alex
[alex@dzc ~]$ m -f .bash*
[alex@dzc ~]$ logout
[root@dzc ~]# su - alex
-bash-4.1$ whoami
alex
-bash-4.1$ pwd
/home/alex
-bash-4.1$ cp /etc/skel/.bash* ~
-bash-4.1$ logout
[root@dzc ~]# su - alex
[alex@dzc ~]$
第4章 与用户有关的命令
4.1 添加用户 useradd
-u指定新用户的uid
-s指定用户的命令解释器(sell)
-M表示不创建家目录 一般创建虚拟用户使用
-g 指定用户属于的组(组的名字) 添加用户的时候 默认创建一个与用户名一样的家庭
添加一个用户lidao指定uid为888 禁止用户登录系统 不创建家目录
添加一个虚拟用户/傀儡用户alex888 设置uid为888
[root@oldboyedu-40 ~]# useradd -u 999 -s /sbin/nologin -M alex999
4.2 删除用户 userdel
- 删除用户
- 注释这个用户 在/etc/passwd 里面这做个用户前面加上个#
useradd alex888
su - alex888
换另一个窗口
userdel alex888
报错
ps -ef |grep 进程号码
kill -9 进程号码
userdel 删除用户的时候不会删除用户的家目录
userdel -r 删除用户及用户的老家 邮件
4.3 修改用户的信息 usermod
修改用户的信息,这个用户已经存在了
-s 修改用户使用的shell
-g 修改属于的家庭
-G属于多个家庭
4.4 passwd
--stdin 从管道中获取用户的密码(非交互式设置密码)
记录密码的工具
- keepass----------------把密码记录到你的硬盘中
- lastpass----------------在线 把你的密码存放到了别人家
指纹加密
[root@dzc data]# echo hello >oldboy.txt
[root@dzc data]# md5sum oldboy.txt
b1946ac92492d2347c6235b4d2611184 oldboy.txt
[root@dzc data]# md5sum oldboy.txt >list.txt
[root@dzc data]# md5sum -c list.txt
oldboy.txt: OK
[root@dzc data]# >oldboy.txt
[root@dzc data]# md5sum -c list.txt
oldboy.txt: FAILED
md5sum: WARNING: 1 of 1 computed checksum did NOT match
4.5 【企业面试题】
批量添加3个用户 stu01,stu02,stu03,并设置密码123456(禁止使用for which等循环)
第一个里程碑-最后想要的结果 什么样子
useradd stu01;echo 123456 |passwd --stdin stu01
useradd stu02;echo 123456 |passwd --stdin stu02
useradd stu03;echo 123456 |passwd --stdin stu02
第二个里程碑-生成用户名字
[root@oldboyedu-40 ~]# echo stu{01..3}
stu01 stu02 stu03
[root@oldboyedu-40 ~]# echo stu{01..3}|xargs -n1
stu01
stu02
stu03
#第三个里程碑-拼接出你想要的形式
[root@oldboyedu-40 ~]# echo stu{01..3}|xargs -n1|sed -r 's#(.*)#useradd 1;echo 123456|passwd --stdin 1#g'|bash
Changing password for user stu01.
passwd: all authentication tokens updated successfully.
Changing password for user stu02.
passwd: all authentication tokens updated successfully.
Changing password for user stu03.
passwd: all authentication tokens updated successfully.
第四个里程碑-检查
tail /etc/passwd
su - stu1 su - stu2 su - stu3 三个账户之间切换,检测密码是否正确
批量添加10个用户stu01,stu02....stu10,并设置8位随机密码(禁止使用for,while等循环)
4.6 添加一个虚拟用户用户 mysql 指定用户的uid gid都是999
[root@dzc ~]# groupadd -g 999 123
[root@dzc ~]# useradd -g 999 -M -s /sbin/nologin -u 999 mysql
[root@dzc ~]# id mysql
uid=999(mysql) gid=999(123) groups=999(123)
4.7 用户查询命令
4.7.1 w
显示谁远程登录了系统 在干啥
远程登录-以root用户的身份连接到系统
4.7.2 last
显示系统用户的登录信息
4.7.3 lastlog
显示linux中所有用户最近一次远程登录的信息
4.8 给开发拥有查看日志的权限
- root
su - root 与su root
- 修改文件的权限 加上r
- suid tail chomd +s tail
suid 运行命令的时候 相当于是命令的所有者(root)
- 尚方宝剑-某一个用户可以临时当皇帝--sudo
给普通用户尚方宝剑 visudo
alex ALL=(ALL) /bin/ls, /bin/touch
[alex@dzc ~]$ ls /root
ls: cannot open directory /root: Permission denied
[alex@dzc ~]$ sudo ls /root
anaconda-ks.cfg install.log
ett.txt install.log.syslog
##授予某个用户sudo 并且不需要输入密码
#NOPASSWD: 给自己用.
kaifa ALL=(ALL) NOPASSWD: ALL
visudo === vi /etc/sudoers
crontab -e === vi /var/spool/cron/root
第5章 记录用户的操作 行为/日志审计