用户章节管理部分
1、系统启动顺序
01.加电自检
检查服务器硬件是否正常
02.MBR引导
读取磁盘的MBR存储记录信息,引导系统启动
03.grup菜单
选择启动的内核/进行单用户模式重置密码
04.加载系统内核信息
可以更好的使用内核控制硬件
05.系统的第一个进程运行起来 system(并行)
服务启动的时候,同时一起启动
06.读取系统启动文件
/etc/systemd/system/default.target
07.读取系统初始化文件
/usr/lib/systemd/system/sysinti.target
08.使服务可以开机自启动
/etc/systemd/system 加载此目录信息,实现服务开机自启动
09.运行mingetty进程
显示开机登录信息界面
2、系统用户管理
1)文件信息:
r read --可以读文件内容
w write -- 可以编辑文件的内容
x execute -- 执行这个文件(脚本文件)
文件权限配置结论:
01、root用户对所有文件有绝对的权限,只要有了执行权限就是无敌的存在
02、对于文件来说,写的权限和执行的权限,都需要有读的权限
03、如果想对文件进行操作,必须对文件赋予读的权限
2)目录信息:
r read --可以读取目录的文件属性信息
w write -- 可以在目录中添加或者删除文件数据
x execute -- 是否可以进入到目录中
目录权限配置的结论:
01、root用户对目录有绝对权限
02、对于目录来说,写的权限和读的权限都需要有执行权限配合
03、如果想对目录进行操作,必须对目录赋予执行的权限
一个普通文件默认权限:644 保证属主用户可以对文件编辑 保证其他用户可以读取文件信息
一个目录默认权限:755 保证属主用户对目录进行编辑 保证其他用户可以读取目录中的信息
3)目录文件读取流程(面试)
[oldboy@oldboyedu ~]$ ll /home/oldboy/oldboy_dir/文件
• ls: cannot access oldboy_dir/oldboy.txt: Permission denied
• total 0
• -????????? ? ? ? ? ? oldboy.txt
•
/ inode (5 r_x) -- block (home)
home inode (5 r_x) -- block (oldboy)
oldboy inode (7 rwx) -- block (oldboy_dir)
oldboy_dir inode (4 r--) -- block (目录中文件名称)
无法进入目录
oldboy.txt 目录中的文件inode信息无法获取,会显示文件属性信息为???
4)文件目录数据设置权限的方法(chmod):
01、 根据用户信息进行设定 (属主 属组 其他用户)
属主-user u 属组-group g 其他用户-other o chmod u+r/w/x 给予权限的文件/目录 --增加权限
chmod u-r/w/x 给予权限的文件/目录 --删除权限
chmod u=rw --赋值权限
02、根据用户进行批量设定
数值设定: [root@oldboyedu ~]# chmod 761 oldboy.txt [root@oldboyedu ~]# ll oldboy.txt -rwxrw---x. 1 root root 0 Apr 23 11:42 oldboy.txt
字符设定:
[root@oldboyedu ~]# chmod a=x oldboy.txt
[root@oldboyedu ~]# ll oldboy.txt
---x--x--x. 1 root root 0 Apr 23 11:42 oldboy.txt
问题一: 为什么创建的文件和目录权限一致(umask)
目录权限都是 755 文件权限都是 644
umask(内置命令):可以影响系统数据默认权限
[root@oldboyedu ~]# umask 0022
临时修改:umask 033
默认文件权限: 666 - 022 = 644 umask数值是奇数 666 - 033 = 633 + 11 = 644 umask数值是偶数 666 - 022 = 644
默认目录权限: 777 - 022 = 755 umask数值是奇数 777 - 033 = 744 umask数值是偶数 777 - 022 = 755
问题二: 如何永久修改umask信息
vim /etc/profile
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
umask 002
else
umask 022 --- 可以永久修改umask数值
fi
$UID:显示当前登录系统用户id数值
判断比较符号:
-gt >
-lt <
-eq ==
-ge >=
-le <=
-ne <>(不等于)
/usr/bin/id -gn --显示当前用户的组名
/usr/bin/id -un --显示当前用户名称
5)系统中的一个特殊目录:/etc/skel 样板房
/etc/skel
[root@HGG ~]# ll -a /etc/skel
total 24
drwxr-xr-x. 2 root root 62 Apr 11 2018 .
drwxr-xr-x. 79 root root 8192 Jul 20 20:52 ..
-rw-r--r--. 1 root root 18 Oct 31 2018 .bash_logout --当系统退出登录状态会执行的命令
-rw-r--r--. 1 root root 193 Oct 31 2018 .bash_profile --别名和环境变量(只针对某个用户)
-rw-r--r--. 1 root root 231 Oct 31 2018 .bashrc --别名和环境变量(针对整个系统)
01、用户家目录中的特殊文件
.bash_logout --当系统退出登录状态会执行的命令
.bash_profile --别名和环境变量(只针对某个用户)
.bashrc --别名和环境变量(针对整个系统)
.bashrc_history --历史命令记录文件
曾经输入的历史命令保存位置:
a 保存在内存中--history
b 保存在磁盘文件中-- .bash_history
.viminfo --vim样式设置
自动加载文件样式信息
02、用户的家目录都参照此目录信息
useradd hggboy --> /home/hggboy目录中的数据内容会参考/etc/skel
03、/etc/skel的作用:
a 可以存储运维规范说明文件
b 提示符信息
常见出现问题: 命令提示符变成:-bash-4.2$
解决办法:
[hggboy@HGG ~]$ cp /etc/skel/.b* /home/hggboy
[hggboy@HGG ~]$ ll -a /home/hggboy
total 12
drwx------. 2 hggboy hggboy 62 Jul 20 21:06 .
drwxr-xr-x. 4 root root 31 Jul 20 20:52 ..
-rw-r--r--. 1 hggboy hggboy 18 Jul 20 21:06 .bash_logout
-rw-r--r--. 1 hggboy hggboy 193 Jul 20 21:06 .bash_profile
-rw-r--r--. 1 hggboy hggboy 231 Jul 20 21:06 .bashrc
6)系统中和用户相关的文件
/etc/passwd* --- 记录系统用户信息文件 [root@oldboyedu oldboy]# head /etc/passwd root :x :0 :0 :root :/root :/bin/bash bin :x :1 :1 :bin :/bin :/sbin/nologin daemon :x :2 :2 :daemon :/sbin :/sbin/nologin adm :x :3 :4 :adm :/var/adm :/sbin/nologin lp :x :4 :7 :lp :/var/spool/lpd :/sbin/nologin 01 02 03 04 05 06 07
第一列: 用户名 第二列: 用户密码信息 第三列: 用户的uid信息 第四列: 用户的gid信息 第五列: 用户的注释信息 mysql(manager database user) www (manager web server) 第六列: 用户家目录信息 第七列: 用户登录系统方式 /bin/bash --- 通用的解释器 /usr/bin/sh --- 等价于/bin/bash /usr/bin/bash /sbin/nologin --- 无法登录系统 /usr/sbin/nologin
/etc/shadow* --- 系统用户密码文件 /etc/group* --- 组用户记录文件 /etc/gshadow* --- 组用户密码信息
7)系统用户相关命令(useradd)
a 创建用户(useradd)
创建普通用户
useradd hgg01
创建虚拟用户
useradd hggboy01 -M -s /sbin/nologin
-M 不创建家目录
-s 指定使用shell方式
[root@HGG ~]# useradd hggboy01 -M -s /sbin/nologin
[root@HGG ~]# id hggboy01
uid=1002(hggboy01) gid=1002(hggboy01) groups=1002(hggboy01)
[root@HGG ~]# grep hggboy01 /etc/passwd
hggboy01:x:1002:1002::/home/hggboy01:/sbin/nologin
[root@HGG ~]# ll-d /home/hggboy01
-bash: ll-d: command not found
useradd hggboy02 -u 2000
-u 指定用户uid数值信息
[root@HGG ~]# useradd hggboy02 -u 2000
[root@HGG ~]# id hggboy02
uid=2000(hggboy02) gid=2000(hggboy02) groups=2000(hggboy02)
useradd hggboy03 -u 2001 -g hggboy02
-g 指定用户所属的主要组信息
[root@HGG ~]# useradd hggboy03 -u 2001 -g hggboy02
[root@HGG ~]# id hggboy03
uid=2001(hggboy03) gid=2000(hggboy02) groups=2000(hggboy02)
[root@HGG ~]# useradd hggboy06 -u 2006 -g 2000
[root@HGG ~]# id hggboy06
uid=2006(hggboy06) gid=2000(hggboy02) groups=2000(hggboy02)
useradd hggboy05 -u 2004 -g hggboy02 -G hggboy01
-G 指定用户所属的附属组信息
[root@HGG ~]# useradd hggboy05 -u 2004 -g hggboy02 -G hggboy01
[root@HGG ~]# id hggboy05
uid=2004(hggboy05) gid=2000(hggboy02) groups=2000(hggboy02),1002(hggboy01)
useradd hggboy07 -s /sbin/nologin -M -c"manager database"
-c 添加指定用户注释说明
[root@HGG ~]# useradd hggboy07 -s /sbin/nologin -M -c"manager database"
[root@HGG ~]# grep hggboy07 /etc/passwd
hggboy07:x:2007:2007:manager database:/home/hggboy07:/sbin/nologin
b 修改用户信息(usermod)
usermod
-s 修改用户登录方式
[root@HGG ~]# usermod hggboy02 -s /sbin/nologin
[root@HGG ~]# grep hggboy02 /etc/passwd
hggboy02:x:2000:2000::/home/hggboy02:/sbin/nologin
-g 修改用户的主要组信息
-G 修改用户附属组信息
-u 修改用户uid信息
-c 修改用户注释信息
c 删除用户(userdel)
-r 彻底删除用户
d 用户设置密码方法
交互式设置
password 用户名
非交互式设置
echo 123456 |passwd --stdin 用户名
企业中设置密码和管理密码的方式
01.密码要复杂12位以上字母数字及特殊符号
02.保存好密码信息 keepass 密码保险柜,本地存储密码 lastpass 密码保险柜,在线存储密码
03.大企业用户和密码统一管理(相当于活动目录AD) openldap域 用户信息统一保存在一个用户管理服务器中 用户的家目录中的文件 用户密码 用户名称
04.动态密码:动态口令,第三方提供自己开发也很简单。
8)用户属主属组设置命令(chown)
chown 修改属主属组信息
chown hggboy(要修改成的属主).root(要修改成的属组) /hgg/hggboy01.txt(所修改的文件/目录)
[root@HGG ~]# ll /hgg/hggboy01.txt
-rw-r--r--. 1 root root 0 Jul 15 17:12 /hgg/hggboy01.txt
[root@HGG ~]# chown hggboy.root /hgg/hggboy01.txt
[root@HGG ~]# ll /hgg/hggboy01.txt
-rw-r--r--. 1 hggboy root 0 Jul 15 17:12 /hgg/hggboy01.txt
chown -R 递归修改目录属主属组信息--将目录里面的文件属主属组信息一起修改
chown -R hggboy.root /hgg
[root@HGG ~]# chown -R hggboy.root /hgg
[root@HGG ~]# ll /hgg
total 0
-rw-r--r--. 1 hggboy root 0 Jul 15 17:12 hggboy01.txt
-rw-r--r--. 1 hggboy root 0 Jul 15 17:12 hggboy02.txt
-rw-r--r--. 1 hggboy root 0 Jul 15 17:12 hggboy03.txt
-rw-r--r--. 1 hggboy root 0 Jul 15 17:12 hggboy04.txt
-rw-r--r--. 1 hggboy root 0 Jul 15 17:12 hggboy05.txt
-rw-r--r--. 1 hggboy root 0 Jul 15 17:12 hggboy06.txt
-rw-r--r--. 1 hggboy root 0 Jul 15 17:12 hggboy07.txt
-rw-r--r--. 1 hggboy root 0 Jul 15 17:12 hggboy08.txt
-rw-r--r--. 1 hggboy root 0 Jul 15 17:12 hggboy09.txt
-rw-r--r--. 1 hggboy root 0 Jul 15 17:12 hggboy10.txt
9)用户信息查看命令(w)
a、id 显示用户信息(uid、gid)
b、w 查看正在登陆系统的用户信息
[root@HGG ~]# w 22:47:57 up 2:34, 3 users, load average: 0.00, 0.01, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root tty1 20:38 2:09m 0.06s 0.06s -bash root pts/0 10.0.0.1 20:38 5.00s 0.47s 0.05s w hggboy pts/1 10.0.0.1 22:47 5.00s 0.04s 0.04s -bash
01 02 03 04 05 06 07
01、什么用户登录到了系统
02、登录方式
pts/0 远程登录
tty1 本地登录
在另一个用户屏幕输入信息
[root@HGG ~]# echo "请不要操作电脑" >/dev/pts/1
03、从哪连接的服务器
04、登录时间
05、IDLE空闲时间
06、用户操作系统 消耗的CPU资源时间
07、用户在干什么
10)用户授权权限说明(sudo)
普通用户如何像root用户一样操作管理系统
01、直接切换到root账户
02、直接修改要做的数据文件权限(chmod)
特点:只针对某个数据文件进行修改,只针对某个用户进行授权
03、root用户赋予一个能力给普通用户(sudo)
特点:可以利用文件编辑指定某个用户给予哪些权限
a 怎么进行授权:
visudo
[root@HGG ~]# visudo
101 hggboy ALL=(ALL) /usr/bin/rm, /usr/sbin/useradd
b 如何验证普通用户已经获取root赋予的能力
[hggboy@HGG ~]$ sudo -l
secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
c 执行root用户赋予的命令
[hggboy@HGG ~]$ sudo rm -rf /hgg
[hggboy@HGG ~]$ ll -d /hgg
ls: cannot access /hgg: No such file or directory
[hggboy@HGG ~]$ sudo useradd hggdog
[hggboy@HGG ~]$ id hggdog
uid=2008(hggdog) gid=2008(hggdog) groups=2008(hggdog)
注:执行root赋予的能力需要在命令前加sudo
扩展配置方法:
1、授权单个或者多个命令
hggboy ALL=(ALL) /usr/bin/rm, /usr/sbin/useradd
2、授权单个命令目录或者多个命令目录(需要排除部分特权命令)
hggboy ALL=(ALL) /usr/sbin/*, !/usr/sbin/useradd,/usr/bin/*
3、不需要输入用户密码可以直接sudo方式执行命令
hggboy ALL=(ALL) NOPASSWD: /usr/sbin/*, !/usr/sbin/useradd,/usr/bin/*
04、设置特殊权限位
rwx -w- --x 系统文件数据的9个权限位 系统中实际应该有12个权限位
1、setuid权限设置方法(chmod u+s):
chmod u+s 文件信息
chmod 4755 文件信息
[root@HGG ~]# chmod u+s /bin/cat
[root@HGG ~]# ll /bin/cat
-rwsr-xr-x. 1 root root 54160 Oct 31 2018 /bin/cat
[test@HGG ~]$ cd /root/root.txt
-bash: cd: /root/root.txt: Permission denied
[test@HGG ~]$ cat /root/root.txt
123
在属主权限位多出s信息
总结:setuid权限位置设置,将文件属主拥有的能力分配给所有人
setuid权限一般赋予二进制的文件命令或者一些可执行脚本文件
2、setgid权限设置方法
chmod 2755 文件信息
同上
总结:setgid权限位置设置,将文件属组拥有的能力分配给所有人
3、sticty bit 粘滞位(创建共享目录chmod 0+t)
作用:可以将不同用户信息放到共享目录中,实现不用用户数据可以互相查看,但是不能互相编写
设置方法:chmod o+t 目录信息
chmod 1777 目录信息
系统中已经存在的共享目录,权限位1777(tmp)
[root@HGG ~]# ll -d /tmp
drwxrwxrwt. 11 root root 275 Aug 1 15:19 /tmp
注:目录权限为777的目录,每个用户都可以读与编写里面的文件信息
11)如何防范系统中的重要文件不被修改(root也不能修改chattr +i)
给文件上锁
目的:使root用户也不能修改文件
上锁设置方法:chattr +i 目录文件
解锁设置方法:chattr -i 目录文件
[root@HGG ~]# chattr +i /etc/passwd --上锁
[root@HGG ~]# ll /etc/passwd
-rw-r--r--. 1 0 root 1476 Aug 1 15:45 /etc/passwd
[root@HGG ~]# lsattr /etc/passwd --查看是否上锁
----i----------- /etc/passwd
[root@HGG ~]# chattr -i /etc/passwd --解锁