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. gulp环境搭建,gulp入门教程

    gulp常用地址: gulp官方网址:http://gulpjs.com gulp插件地址:http://gulpjs.com/plugins gulp 官方API:https://github.co ...

  2. Drools 6.5 Final 入门

    Drools 6.5 Final学习笔记 最近项目中要涉及到使用规则对数据进行操作,想到自己实现一个完整且能灵活满足业务需求的规则系统太难了,就想了解一下有没有开源的规则引擎可以使用,后来发现Droo ...

  3. C/C++遍历目录下的所有文件(Windows篇,超详细)

    注: 1. 本文讨论的是怎么用Windows API遍历目录下的所有文件.除Windows API,还有一种Windows/Linux通用的方式,使用<io.h>. 2. 本文部分翻译自M ...

  4. Coursera 机器学习笔记(六)

    主要为第八周内容:聚类(Clustering).降维 聚类是非监督学习中的重要的一类算法.相比之前监督学习中的有标签数据,非监督学习中的是无标签数据.非监督学习的任务是对这些无标签数据根据特征找到内在 ...

  5. 什么时候该选用Xamarin?

    现在开发app也好,桌面程序也好,有很多不同的技术可以选择.那么,什么时候应该选用Xamarin呢? 5 questions to consider before choosing Xamarin 1 ...

  6. C语言进制转换的一个小错误

    今天学妹问了一个问题,问题是这样的 有以下程序 #include <stdio.h> void main(){ int  m=0256,n=256; printf("%o %o& ...

  7. C#从基于FTPS的FTP server下载数据 (FtpWebRequest 的使用)SSL 加密

    FTPS,亦或是FTPES, 是FTP协议的一种扩展,用于对TLS和SSL协议的支持. 本文讲述了如何从一个基于FTPS的Server中下载数据的实例.   任何地方,如有纰漏,欢迎诸位道友指教.   ...

  8. HTML5录音控件

    最近的项目又需要用到录音,年前有过调研,再次翻出来使用,这里做一个记录. HTML5提供了录音支持,因此可以方便使用HTML5来录音,来实现录音.语音识别等功能,语音开发必备.但是ES标准提供的API ...

  9. NLTK学习笔记(四):自然语言处理的一些算法研究

    自然语言处理中算法设计有两大部分:分而治之 和 转化 思想.一个是将大问题简化为小问题,另一个是将问题抽象化,向向已知转化.前者的例子:归并排序:后者的例子:判断相邻元素是否相同(与排序). 这次总结 ...

  10. 用hmmlearn学习隐马尔科夫模型HMM

    在之前的HMM系列中,我们对隐马尔科夫模型HMM的原理以及三个问题的求解方法做了总结.本文我们就从实践的角度用Python的hmmlearn库来学习HMM的使用.关于hmmlearn的更多资料在官方文 ...