Linux系统用户管理和安全设置详解及demo

时间:2022-12-25 08:00:47
系统的启动流程
  • centos6

    • 加电自检:检查服务器硬件是否正常
    • MBR引导:读取磁盘的MBR存储记录信息,引导系统启动
    • grub菜单:选择启动的内核/进行单用户模式重置密码
    • 加载系统内核信息:可以更好的使用内核控制硬件
    • 系统的第一个进程运行起来:init
      • 控制后续各种服务的启动:启动顺序(串行)
    • 加载系统运行级别文件/etc/inittab
    • 初始化脚本运行:初始化系统主机名称和网卡信息
    • 运行系统特殊的脚本:开机自启的服务
    • 运行mingetty进程:显示开机登陆信息界面
  • centos7

    • 加电自检:检查服务器硬件是否正常

    • MBR引导:读取磁盘的MBR存储记录信息,引导系统启动

    • grub菜单:选择启动的内核/进行单用户模式重置密码

    • 加载系统内核信息:可以更好的使用内核控制硬件

    • 系统的第一个进程运行起来:systemd

      • 服务启动的时候同时一起启动(并行)
    • 读取系统启动文件:/etc/systemd/system/default.target

    • 读取系统初始化文件

      /usr/lib/systemd/system/sysinit.target
      
    • 使服务可以开机自启动,加载此目录中的信息,实现服务开机自启

      /etc/systemd/system
      
    • 运行mingetty进程:显示开机登录信息界面

用户概念介绍
  • 管理员用户 root 0 权利至高无上
  • 虚拟用户 nobody 1-999 管理进程 没家目录 不能登录系统
  • 普通用户 oldboy 1000+ 权力有限
文件权限
  • r:read,可以读文件的内容 4
  • w:write,可以编辑文件的内容 2
  • e:execute,执行这个文件(脚本文件)1
修改文件的属主
chown 新属主用户名 文件
修改文件权限
chmod 000 文件/目录

#其他用户添加x权限
chmod o+x 文件/目录
文件权限配置结论:默认权限为644,保证属主用户对文件可以编辑,保证其他用户可以读取文件信息
  • root用户对所有文件有绝对的权限,只要有了执行权限,root用户可以无敌存在
  • 对于文件来说,写的权限和执行的权限,都需要有读权限配置
  • 如果想对文件进行操作,必须对文件赋予读的权限
目录权限
  • r:读目录中的文件属性信息
  • w:可以在目录中添加或删除文件数据信息
  • e:是否可以进入到目录中
目录权限配置结论:默认权限755,保证属主用户对目录进行编辑,保证其他用户可以读取目录中的信息,可以进入到目录中
  • root用户对目录有绝对的权限,什么权限都没有设置root也有权限
  • 如果没有设权限属主(root外)和其他用户都没有权限
  • 当目录只赋予读的权限,属主(root外)和其他用户查看目录里面文件的时候会看不到文件属性
  • 只有写的权限的时候什么权限都没有
  • 只有执行权限的时候只可以切换目录,其他啥也没有
  • 对于目录来说,写的权限和读的权限都需要有执行权限配合
  • 想对目录进行操作必须赋予执行的权限
为什么看不到文件的属性信息
  • 它的上一级目录没有执行的权限
  • 无法进入目录,目录中的文件inode信息无法获取,会显示文件属性信息为???
一个文件能不能读不仅跟文件本身权限有关系,跟上面的目录权限也有关系。文件读的原理
文件读的原理
  • 先从根开始。看inode和block

  • 然后一级一级开始着

  • 文件的名称信息存在上一级目录的block中,获取block要获取inode

  • 有读就可以看indoe,有执行可以进入目录看目录里面文件的文件属性

文件目录数据设置权限的方法:
  • 根据用户信息进行设定(属主、属组、其他用户)

    • 属主-user u

    • 属组-group g

    • 其他用户-other o

      chmod u+r/w/x 1.txt
      chmod g-r/w/x 1.txt 
      chmod u=rw 1.txt
      
  • 根据用户批量设置

    • 数值设定

      chmod 755 1.txt
      
    • 字符设定

      #全部角色为x的权限
      chmod a=x 1.txt
      
为什么创建的文件和目录权限一致?

目录:755

文件:644

umask
0022

临时修改umask数值

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

里面的umask 022 修改成别的

source /etc/profile
系统中的特殊目录/etc/skel(样板房)
ll -a /etc/skel
  • .bash_logout:当系统退出登陆状态要执行的命令
  • .bash_profile:别名和环境变量(只针对某个用户)
  • .bashrc:别名和环境变量(针对所有用户)

这个目录里面有什么,新创建的用户家目录里就有什么

作用:
  • 目录中可以存储运维操作规范说明文件

  • 调整命令提示符信息,如果没有那些默认文件命令提示符展示会有问题,但不影响操作。如果被别人删了要从skel目录中把东西在复制一份过来

用户家目录中的特殊文件
  • .bash_history:历史命令文件

    • 曾经输入的历史命令保存位置
      • 保存在内存中 history
      • 保存在磁盘文件中:.bash_history
  • .viminfo:vim样式设置

    • 自动加载文件样式信息

      #!/bin/bash
      #编写人:
      #编写时间:
      #脚本作用:
      
系统中和用户相关的文件
  • /etc/passwd:记录系统用户信息文件

    root	:x	:0	:0	:root	:/root	:/bin/bash
    bin		:x	:1	:1	:bin	:/bin		:/sbin/nologin
    01		02	03	04	05		06			07
    
    1:用户名
    2:用户密码信息(保存在别的地方)
    3:用户的uid
    4:用户的gid
    5:用户的注释信息
    	mysql(manager database user)
    	www(manager web server)
    6:用户家目录
    7:用户登陆系统方式
    	cat /etc/shells
    	/bin/bash					---通用的解释器
    	/bin/sh						
    	/usr/bin/sh				---等价于bin/sh
    	/usr/bin/bash			
    	/sbin/nologin			---无法登陆系统
    	/usr/sbin/nologin
    
  • /etc/shadow*:系统用户密码文件,如果加密的密码改成两个!,就取消了密码,可以重新设置

  • /etc/group*:组用户记录文件

  • /etc/gshadow*:组用户密码信息

系统用户相关命令
  • 创建用户命令

    • 创建普通用户

      useradd old && passwd --stdin old 123456
      
    • 创建虚拟用户

      useradd old -M -s /sbin/nologin
      
      -M:不创建家目录
      -s:指定使用的shell方式
      -u:指定用户uid数值信息
      -g:指定用户主属组gid,可以是数值也可以是名称
      -G:指定用户附属组信息
      -c:注释
      
      useradd mysql -s /sbin/nologin -M -c "manager database"
      
      grep mysql /etc/passwd
      
  • 修改用户信息

    usermod 
    -s	修改用户的登录方式
    -g 	修改用户的主要的组信息
    -G 	修改用户的附属组信息
    -u	修改用户uid
    -c	修改用户注释信息
    
    usermod Alex -s /sbin/nologin
    
  • 删除用户信息

    userdel Alex
    如果组有其他人存在,组不会删除、但是用户删除了、但是用户家目录还在
    
    组还在。后面创建一个相同名字的用户,在创建的时候就要加-g
    如果家目录没删除,会报警信息,不会再将skel目录内容重新复制
    
    userdel -r Alex
    彻底删除用户以及用户的家目录,但是组如果有其他人使用就仍存在
    
  • 创建用户组

    groupadd	组名
    groupmod  修改用户组
    groupdel	删除用户组
    
用户属主属组设置
chown 属主.属组 文件

递归设置属主属组,目录里的文件也都改了
chown -R 属主.属组 目录
用户信息查看
  • id:显示用户命令信息

  • w:正在登录系统的用户信息

    [root@pert ~]# w
    USER:什么用户登录到了系统中
    TTY:登陆的方式
    	pts/x 远程登录系统	x可以是1 2 3。。。
    	tty1	本地登录
    	#通知其他用户屏幕上显示你要提醒的信息
    	echo "请不要修改hosts文件配置" > /dev/pts/1
    	
    FROM:从哪连接的服务器
    LOGIN@:登陆时间
    IDLE:空闲时间
    PCPU、JCPU:用户操作系统消耗的cpu资源时间
    WHAT:用户在干什么/bash或/sh或。。。
    
  • last

    显示历史登录用户的信息
    
  • lastlog

    显示/etc/passwd里面的用户登录过的信息(失败、成功)
    
用户权限说明

普通用户如何像root用户一些操作管理系统

  • 直接切换到root用户下管理系统。篡权夺位

    • su:环境变量很多都还保持原来的

    • su -:环境变量全部更改为新的

  • 直接修改要操作的数据文件权限

  • root用户赋予了普通用户权利

    • sudo root用户授权一个能力给普通用户

      • 怎么进行授权

        visude
        93行加上
        oldboy ALL=(ALL) /usr/sbin/useradd, /usr/bin/rm
        
        批量加权限,某个不让使用
        /usr/sbin/*, !/usr/sbin/visude, /usr/bin/*
        
        sbin和bin下所有命令都可以使用,但是sbin下的visude不能
        
        使用的使用不用输入密码
        NOPASSWD: /usr/bin/*
        
      • 如何验证oldboy已经获取了root用户能力

        sudo -l
        输入登陆用户的密码
        然后会显示出已经授权的命令
        
      • 如何使用已授权的命令

        sudo useradd old
        命令前需要加上sudo
        
设置特殊权限位

文件数据看到的有9个权限位,系统中实际应该有12个权限位

  • setuid

    chmod u+s 文件信息
    chmod 4755 文件信息
    在属主权限位多出s信息
    
    • 将文件属主拥有的能力分配给所有人
  • setgid:将文件的属组拥有的能力分配给所有用户组

  • sticky bit:粘滞位:(共享目录)

    • 可以将不同用户信息放置到共享目录中,实现不同用户数据可以互相查看,但不可以互相随意修改

      chmod o+t 目录
      或
      chmod 1777 目录
      
    • 系统中默认有一个共享目录:/tmp

如何防范系统中的重要文件不被修改(root用户也不能修改)
  • 给文件加锁,使root用户也不能直接修改相应文件

    • 设置

      chattr +i /etc/passwd
      
    • 解锁

      chattr -i /etc/passwd
      
    • 查看

      lsattr /etc/passwd
      
    • 防范

      which chattr
      然后
      mv chattr 重命名
      放到自己知道的一个位置和自己知道的名字
      
      别人就不知道你这个命令在哪了 就执行不了了