简述在UNIX系统中什么是超级用户 超级用户有何特权

2020-04-28 科技 106阅读
在Unix风格的系统中,root是在所有模式(单/多用户)下对拥有对所有文件与程序拥有一切权限的用户(也即超级用户)的约定俗成的通名,但也有例外,如在BeOS中超级用户的实名是baron,在其它一些Unix衍生版里则以avatar作为超级用户的实名,而BSD中一般也提供「toor」账户(也即「root」的反写)作为root账户的副本[2],但无论实名为何,超级用户的用户ID(UID)一般都为0。root用户可以进行许多普通用户无法做的操作,如更改文件所有者或绑定编号于1024之下的网络端口。之所以将「root」设定为超级用户之名,可能是因为root是唯一拥有修改UNIX系统根目录(root directory)的权限的用户,而根目录最初就被认为是root的家目录一般的存在[3]。
在类Unix系统引导过程中引导(英文)的第一个程序(常被称为init)就是以root权限运行的,其它所有进程都由其直接或间接衍生而出,并且这些进程都继承了各自的父进程的权限。只有以root权限运行的进程才能将自己的UID修改为其它用户对应的UID,且对应UID在修改完成之后无法改回,这种行为有时也被称为丢弃root权限,其目的主要是为了安全考虑-(在进程出错等情况下)降低进程污染所造成的损失。另一种情况是,用户登录后,有些程序会向用户请求认证提升权限,当认证成功后用户就能以其账户所对应的权限来执行程序。
对任何人(也包括系统管理员自己)来说,将root当作一般用户账户使用都绝不是一个好习惯,因为即使是输入命令时的微小错误都可能对系统造成严重破坏,因而相较之下较为明智的做法是创建一个普通用户账户用作日常使用,需要root权限时再用su(英文)切换到root用户。sudo工具也是个暂时性获取root权限的替代方法。
在Mac OS X与一些Linux发行版中则允许管理员账户(注意,这与root这样的全权账户有别)拥有更多的权限,同时也屏蔽掉大部分容易(因误操作)造成损害的root权限。某些情况下,root账户是被默认禁用的,需要时必须另外启用。另外在极少数系统(如Plan 9)中,系统中根本没有超级用户。
某些软件缺陷能使用户获得root权限(即提升权限(英文)来以root权限执行用户提供的代码),这会造成严重的计算器安全问题,相对应的修复这些软件则是系统安全维护的重要组成部分。让某个正以超级用户权限运行的程序的缓冲区溢出(某些情况下亦称缓冲区攻击)是一种常见的(非法)获得root权限的方式,在现代的操作系统中则一般采取将关键程序(如网络服务器程序)运行于一个特别的限权用户之下的方式来预防这种情况的发生。
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com