谈到Linux,大伙最先想到的是这是一个由全世界的优秀的黑客共同开发的一个开源操作系统,目前在服务器领域有着非常广的使用,同时,基于Linux操作系统而开发的Android系统也已经占据了移动终端操作系统的半壁江山。还有一点,大家也很容易想到,就是觉得Linux系统安全、稳定、几乎不被病毒攻击。但现在的Linux版本,几乎未安装防病毒软件,却也很少受到病毒的攻击。那么Linux操作系统本身是如何保证其基本系统的安全呢?
谈到操作系统的安全,有一个词必须要提到,那就是“权限的控制”。也就是你手上有什么样的权限,那你就只能干这个权限范围内的活。比如,进程A对于B文件只有写的权限,没有写和执行的权限。权限是指主体所具有的权限,那么什么是主体呢?一般来说,主体就指的就是进程,比如,用户登录到操作系统,可以获得一个登录式shell,那么这个shell就称为主体,再比如,用户打开一个nautilus对文件夹进行管理,那么这个nautilus进程也是一个主体。从操作系统角度看,进程的动作主要有对其它进程或是对文件进行操作。比如,用户通过nautilus进程添加、删除文件。这些被操作的文件称为客体。
Linux操作系统主体对客体的操作许可有一套机制,叫做DAC,英文全称为Discretionary Access Control,翻译为自主访问控制。在Linux操作系统中,进程有uid,gid,euid,egid等id。这些id们是怎么来的呢?来自于创建这个进程的用户信息,一般情况下,当前用户是root用户,其uid和gid都是0,该用户创建的进程的uid和pid在没有S位的情况下,等同于用户的uid和gid。如果是普通用户创建的进程,在程序文件没有s位的情况下,进程的uid和pid的等同于用户的uid和gid。在 DAC这个Linux操作系统的安全模型中,决定一个用户对某个文件具备哪些访问权限是在内核中实现的。