Linux OS是基于Unix系统开发而来,我们知道计算机是昂贵与稀缺的资源,所以一台计算机就要满足多个用户同时使用,即多用户的系统的思想。

实现方式:通过分时共享的策略。即让多个用户可以同时使用一台计算机。该分时共享策略,使得机器即使只有一个用户,也可以同时运行多个任务,响应多个进程。

Linux多用户系统实现的必备特性:

(1)认证机制:以验证用户ID。

(2)保护机制1:以对抗bug,不让这些坏程序阻塞其他用户程序。

(3)保护机制2:以对抗恶意程序,以防它去监听其他用户的活动。

(4)审计机制:以限制分派给每个用户的资源。

为了确保计算机的安全,Linux内核要求使用由CPU硬件提供的特权模式;而用户程序只能运行在非特权模式下。用户程序如果想要使用底层的软、硬件资源,必须向Linux内核发出请求(中断或系统调用),在Linux内核许可后,并切入特权模式以执行。

如在ARM处理器中,CPSR(当前程序状态寄存器)使用了5个位来识别处理器的7种模式,其中两种模式就与Linux中的用户模式和内核模式相对应,其他5种模式则用来标识不同的中断或者是出错的场景。

用户和组:

Linux作为一个多用户的操作系统,每个用户在机器上都有一个私有空间,特别是它会拥有配额的磁盘空间,以存储文件、接收私有的mail消息等。Linux必须保证这部分私有空间只对它的拥有者是可见的(类似于银行账户,当然只能对于储户自己可见啦),而且应该确保没有用户可以使用系统应用程序来侵犯其他用户的私有空间(当然也就是不能让别人随便来动我银行账户的资金啦)。

在Linux操作系统中,所有的用户都是通过唯一的用户ID(UID->User ID)来识别的。但是如果选择与其他用户共享资料,共享的用户就应该是一个或者多个组的成员,这个用组ID(GID->group ID)来识别(几个人出钱成立了一个小公司,这个公司名就是GID,我们的钱就是共享的资源,大家都可以使用和可见)。每个文件都可与一个确切的组相关联。如:作为文件拥有者的用户对该文件的读写权限,而组中其他用户则只拥有读权限,系统内非组中的用户则没有任何权限(不可读不可写不可执行)。

超级用户:在Linux系统中,有一个特殊的用户->超级用户(root),root用户几乎可以在Linux系统中做任何事情,因为OS没有对它采取一般的防护机制,root用户可以访问系统上的每个文件,可以管理每一个正在运行的用户程序。

普通用户和超级用户的切换:在Linux命令行输入命令:su -,然后输入root用户的密码即可切换至root用户,但是建议一般情况下,不要随意使用root用户,因为root用户操作失误会导致系统文件丢失甚至系统崩溃。

Linux 多用户系统的更多相关文章

  1. Linux 驱动开发

    linux驱动开发总结(一) 基础性总结 1, linux驱动一般分为3大类: * 字符设备 * 块设备 * 网络设备 2, 开发环境构建: * 交叉工具链构建 * NFS和tftp服务器安装 3, ...

  2. Android权限系统

    Android系统为每个应用程序提供了一个安全的运行环境,不同程序间相互隔离,应用程序的数据等私有资源,外界无法访问.这个安全的运行环境由Android的权限系统(可称为沙箱系统)来提供.本文简单记录 ...

  3. Linux 文件系统分区基础

    文件系统就是管理设备,组织文件的一些结构和算法. /boot分区,它包含了操作系统的内核和在启动系统过程中所要用到的文件, 建这个分 区是有必要的,因为目前大多数的PC机要受到BIOS的限制,况且如果 ...

  4. linux内核学习之七 可执行程序的装载和运行

    一 程序的装载和运行的基本知识补充    1 当进程开始执行一个新的程序时,从父进程继承的所有页被释放,以便在新的用户地址空间开始执行新的计算,甚至进程的特权都可能发生改变,但是,进程的PID不会改变 ...

  5. linux内核学习之二 一个精简内核的分析(基于时间片轮转)

    一   实验过程及效果 1.准备好相关的代码,分别是mymain.c,mypcb.h,myinterrupt.c ,如下图,make make成功: 在qemu创建的虚拟环境下的运行效果:(使用的命令 ...

  6. linux 目录定义

    /     根目录,存放系统命令和用户数据等(如果下面挂载点没有单独的分区,它们都将在根目录的分区中) /boot     boot loader 的静态链接文件,存放与Linux启动相关的程序/ho ...

  7. 如何提高Linux操作系统的安全性 转自https://yq.aliyun.com/articles/24251?spm=5176.100239.blogcont24250.7.CfBYE9

    摘要: Linux系统不论在功能上.价格上或性能上都有很多优点,但作为开放式操作系统,它不可避免地存在一些安全隐患.关于如何解决这些隐患,为应用提供一个安全的操作平台,本文会告诉你一些最基本.最常用, ...

  8. Linux添加/删除用户和用户组

    声明:现大部分文章为寻找问题时在网上相互转载,在此博客中做个记录,方便自己也方便有类似问题的朋友,故原出处已不好查到,如有侵权,请发邮件表明文章和原出处地址,我一定在文章中注明.谢谢. 本文总结了Li ...

  9. [No000043]学习Linux操作系统必备基础知识

    Linux操作系统概述 Q1.什么是GNU?Linux与GNU有什么关系? A: 1)GNU是GNU is Not Unix的递归缩写,是自由软件基金会(Free Software Foundatio ...

随机推荐

  1. javascript 面向对象基础 (1)

    常见的创建对象的方式有3种: ① 声明变量的方式 var obj1 = { key1: "val1", key1: "val2", show: function ...

  2. 《Android进阶》之第五篇 Fragment 的使用

    http://blog.csdn.net/lmj623565791/article/details/37970961 1.Fragment的产生与介绍 Android运行在各种各样的设备中,有小屏幕的 ...

  3. 使用DFA算法对敏感词进行过滤

    项目目录结构如下: 其中resources资源目录中: stopwd.txt :停顿词,匹配时间直接过滤. wd.txt:敏感词库. 1.WordFilter敏感词过滤类: package com.s ...

  4. redis入门指南-第7章-管理

    7.1 持久化 1.RDB方式 2.AOF方式 Redis 持久化: 提供了多种不同级别的持久化方式:一种是RDB,另一种是AOF. RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照(poi ...

  5. spring-定时器(2)

    Spring提供的三种定时任务机制及其比较 定时任务的需求在众多应用系统中广泛存在,在Spring中,我们可以使用三种不同的定时机制,下面一一描述并加以比较 1. 基于Quartz的定时机制 下面详细 ...

  6. 2D游戏开发(1)

    <外星人入侵> 通过pygame,入门python的2D游戏开发过程,通过教材制作一个打外星人游戏. 1.函数 run_game() import sys import pygame de ...

  7. 兼容ie浏览器的placeholder的几种方法

    项目中遇到的问题,试了几种方法,今天整理出来,如果有不合适的地方,希望大家多多提意见. 第一种方法是:使用html新增的属性 “data-”来实现的,实现的时候,input框没有使用placehole ...

  8. JavaSE教程-02Java基本语法

    1.注释 什么是注释 用于解释说明程序作用的文字 Java中注释分类格式 单行注释 格式: //注释文字 多行注释 格式: /* 注释文字 */ 文档注释 格式:/* 注释文字 / 2.关键字 什么是 ...

  9. 在ie下,a标签包被img的时候,为什么有个蓝色的边线

    效果像下图这样 那是由于<img>在ie下有默认边框,只要清除边框就可以了,在style中定义 img{ border:none } 显示效果就变成下面这样了 完!

  10. 关于Atlassian无法注册的问题,请看过来

    好多童鞋在用团队构建工具git的时候,必然用到git的可视化工具sourceTree来管理项目一些操作,那么当我们下载完sourTree的时候,会有一个选择,已有账户登录还是免费账户,免费账户只有三十 ...