Linux系统下的启动流程&运行级别&用户管理

Linux系统命令之系统启动流程
  • 【计算机加载BIOS】
      该过程中最重要的一步就是对自身硬件的健康检查,这种通电之后的自检过程叫做“加电自检”,简称POST。
  • 【系统引导】
      BIOS默认会从硬盘上的第0柱面、第0磁道、第一个扇区中读取被称为MBR的东西,即主引导记录。
      一个扇区的大小是512字节,存放的内容是一段引导程序和分区信息,其中引导程序部分占用446字节,另外64字节是磁盘分区表DPT,最后两字节是MBR的结束位。这512字节的空间内容是由专门的分区程序产生的,比如说Windows下的fdisk.exe,或者Linux下的fdisk命令,所以它不依赖于任何操作系统,而MBR中的引导程序也是可以修改的,所以可以利用这个特性实现多操作系统共存。
      由于RedHat、CentOS默认会使用Grub作为其引导操作系统的程序,而Grub本身又比较大,所以常见的方式是在MBR中写入Grub的地址,这样系统实际会载入Grub作为操作系统的引导程序
  • 【运行Grub】
      Grub最重要的功能就是根据其配置文件加载kernel镜像,并运行内核加载后的第一个程序/sbin/init,这个程序会根据/etc/inittab来进行初始化的工作。其实这里最重要的就是根据文件中设定的值来确定系统将会运行的runlevel,默认的runlevel定义在id:3:initdefault:中,其中的数字3说明目前的运行级别定义为3。
  • 【系统的初始化配置】
      第四步,Linux将根据/etc/inittab中定义的系统初始化配置si::sysinit:/etc/rc.d/rc.sysinit执行/etc/rc.sysinit脚本,该脚本会设置系统变量、网络配置,并启动swap、设定/proc、加载用户自定义模块、加载内核设置等。第五步是根据第三步读到的runlevel值来启动对应的服务,如果值为3,就会运行/etc/rc3.d/下的所有脚本,如果值为5,就会运行/etc/rc5.d/下的所有脚本。第六步将运行/etc/rc.local
  • 【启动对应服务】
      设置系统变量、网络配置,并启动swap、设定/proc、加载用户自定义模块、加载内核设置等。第五步是根据第三步读到的runlevel值来启动对应的服务,如果值为3,就会运行/etc/rc3.d/下的所有脚本,如果值为5,就会运行/etc/rc5.d/下的所有脚本。
  • 【运行/etc/rc.local】

Linux系统命令之系统运行级别
  • 关于runlevel
    • 运行级0:关机。
    • 运行级1:单用户模式,系统出现问题时可使用这种模式进入系统维护,典型的使用场景是在忘记root密码时可进入此模式修改root密码。
    • 运行级2:多用户模式,但是没有网络连接。
    • 运行级3:完全多用户模式,这也是Linux服务器最常见的运行级。
    • 运行级4:保留未使用。
    • 运行级5:窗口模式,支持多用户,支持网络。
    • 运行级6:重启。

Linux系统命令之用户管理
  • UID和GID
    • Linux系统采用一个32位的整数记录和区分不同的用户,这个用来区分不同用户的数字被称为User ID,简称UID。系统会自动记录“用户名”和UID的对应关系。Linux系统中的用户分为3类,即普通用户、根用户、系统用户。
      • 普通用户是指所有使用Linux系统的真实用户,这类用户可以使用用户名及密码登录系统。。通常普通用户的UID大于500,因为在添加普通用户时,系统默认用户ID从500开始编号
      • 根用户也就是root用户,它的ID是0,也被称为超级用户,root账户拥有对系统的完全控制权:可以修改、删除任何文件,运行任何命令。
      • 系统用户是指系统运行时必须有的用户,但并不是指真实的使用者。比如使用系统用户apache来运行httpd进程,而运行MySQL数据库服务时,需要使用系统用户mysql来运行mysqld进程。系统用户的ID范围是1~499
    • 在Linux系统中除了有用户之外,还有“用户组”的概念,不同的用户组同样也是用数字来区分的,这种用于区分不同用户组的ID被称为Group ID,也就是GID。
    • UID和GID又有什么联系呢?,在Linux下每个用户都至少属于一个组。
      • 要确认自己的UID,可以使用以下id命令来获得:
        [root@localhost ~]#id
        uid=0(root)gid=0(root)groups=0(root), 1(bin), 2(daemon), 3(sys), 4(adm), 6(disk), 10(wheel)
  • /etc/passwd和/etc/shadow

    • 系统用来记录用户名、密码最重要的两个文件就是/etc/passwd和/etc/shadow
    [root@localhost ~]# cat /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
    ......(略去内容)......

    格式说明如下(每一行被’:’分为7部分):

    • 关于密码项,目前Linux的做法是,将密码相关的信息保存到/etc/shadow中,而且默认只有root用户才有读的权限,其他人完全没有读取这个文件的可能。
      具体如下:
  • 新增和删除用户
    • 新增用户useradd
      [root@localhost ~]# useradd john
      • 首先,系统需要将用户信息记录在/etc/passwd中,一般会在/etc/passwd和/etc/shadow文件末尾追加一条记录,同时会分配给该用户一个UID。
      • 接着,要为该用户自动创建家目录。家目录以创建的用户名为目录名,创建的路径在/home目录中。比如,在上述案例中,创建的目录将是/home/john。
      • 然后,复制/etc/skel下所有的文件(大部分是隐藏文件)至/home/john。
      • 最后,新建一个与该用户名一样的用户组,也就是说当创建用户john的时候,也同时创建了一个叫john的用户组,而用户john默认属于john用户组。
        【说明】系统在添加用户时,需要预先为这个用户创建一些默认的“配置文件”,而默认配置的就是/etc/skel目录下的几个隐藏文件。可以说,/etc/skel实际上是创建用户时的“模板”。
        【补充】
          在使用useradd添加用户时,系统会给该用户自动分配一个UID,但是也可以通过使用-u参数实现指定UID,当然,必须要指定的UID不与其他用户冲突才可以。如下:
        [root@localhost skel]# useradd -u 555 user1
        下面就是创建用户user2时,指定了该用户所属的Group是user1。
        [root@localhost skel]# useradd -g user1 user2
        下面这样就可以指定/home/mydir3作为user3用户的家目录(创建的时候):
        [root@localhost skel]# useradd -d /home/mydir3 user3
    • 修改密码passwd
      如果具有root权限,则可以修改用户的密码
      [root@localhost skel]# passwd john
      普通用户也可以使用passwd来修改自己的密码,但是需要提供当前用户的密码才可以:
      [john@localhost ~]$ passwd
    • 修改用户usermod
      需要对已存在的用户进行修改,这时候就需要使用usermod命令了。
      [root@localhost ~]# usermod -d /home/alice_new -m alice
      其中,-m参数的作用是,如果指定用户的家目录存在,就自动创建新目录/home/alice_new,并使用该目录作为alice的新家目录。
    • 账号的临时冻结与解冻
      也许会因为某些原因,账号alice现在还不适合使用(如发现账号异常),需要暂时将这个账号冻结起来,这时,可以使用-L参数实现此目的。如下:
      [root@localhost ~]# usermod -L alice
      使用-U参数可以解锁:
      [root@localhost ~]# usermod -U alice
    • 删除用户:userdel
      [root@localhost ~]# userdel alice
        使用这个命令会将删除alice在/etc/passwd和/etc/shadow中的记录。但是从数据安全方面考虑,默认情况下,删除用户时并不会删除原来用户的家目录和邮件信息。可以使用-r参数同时删除用户家目录和该用户的邮件。注意,一旦执行了这条命令,该用户的相关文件就会被全部删除。
    • 增加用户组:groupadd
      [root@localhost ~]# groupadd group1
        在/etc/group文件中,每一行就代表一个用户组,其格式是使用3个分隔号“:”隔开的4列。第一列是用户组名,第二列代表密码(但是并不使用),第三列代表用户组的数字ID,第四列是组成员,这里为空说明还没有任何用户属于这个组。
    • 删除用户组:groupdel
      这里需要注意的是,如果已有用户属于这个试图删除的组,该操作会失败。
      [root@localhost ~]# groupdel group1
    • 查看用户
        使用命令users可以查看当前系统有哪些用户。users命令相对比较简单,所以列出的信息也比较少,可以使用命令who来看到更多信息。
    • 查看用户详细信息:finger
      如果在finger后跟上某个用户名,则显示该用户更详细的信息,如下所示:
      [root@localhost ~]# finger user1
    • 用户切换
        su是切换用户的意思。在不加参数的情况下,su命令默认表示切换到root用户,之后只要输入root密码就可以切换身份为root了,完成操作后,使用exit命令可以退出root切换到原先的用户
        su命令后面还可以加上一个“-”参数,就是键盘上的中横线。加上这个参数后,切换成root用户时,不但身份变成了root,而且还能应用root的用户环境。所谓“用户环境”就是/etc/passwd中定义的用户家目录、使用的Shell,以及关于这个用户的个性化设置等。
        如说用户john在使用过程中需要临时切换成用户user1,这时就可以使用su - user1令切换用户,但是同样需要知道user1的密码。,root用户可以使用su命令切换成任意用户而不需要密码。
    • 权限提升sudo
      sudo passwd user1
        使用root的身份修改user1的密码。运行该命令时,系统首先检查/etc/sudoers,判断该用户是否有执行sudo的权限,在确定有执行权限后,系统要求用户输自己的密码,如果密码输入正确,则会以root用户的身份运行passwd user1命令
      想要使用sudo权限,首先需要设置/etc/sudoers这个配置文件。或者是直接visudo来在任意路径下进行该文件的编辑(且该命令还具有sudo文件配置的自检功能):
      [root@localhost ~]# visudo
      在该文件下,可以进行用户权限的添加:
      root ALL=(ALL) ALL
      john ALL=(ALL) ALL
        加入的john ALL=(ALL)ALL这一行代表的意思是,john这个用户(第一列)可以从任何地方登录后(第二列的ALL)执行任何人(第三列的ALL)的任何命令(第四列的ALL)。
      john ALL=(ALL) NOPASSWD:ALL
        这样用户john在使用sudo时就不再需要输入密码了。
        但是,将最后一个参数设置为ALL是很不安全的,因为这意味着用户实际拥有了全部的系统权限,和root的权限是一致的,在工作中可以根据用户实际的工作内容定义用户可以sudo执行的命令列表。假设用户john由于工作需要,经常要重启或者关闭服务器,那么就可以进行如下具有针对性的设置:
      john ALL=(ALL) NOPASSWD:/sbin/shutdown, /usr/bin/reboot
        若是想要修改某一个组的sudo权限的时候:比如%john ALL=(ALL)ALL可以让所有属于john用户组的用户从任何地方登录后执行任何人的任何命令。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值