您的位置:首页 > 运维架构 > Linux

Linux基础学习四:权限管理

2017-04-12 15:58 113 查看

一、权责分明,才能愉快地玩耍起来

话说Linux属于实打实的多用户的操作系统,虽然它没有可视化的界面,但是它允许多用户同时登陆到系统并使用资源。每个用户都有属于自己的文件、进程、任务和工作环境,使得Linux在运行时有条不紊。

可以试想,如果普通用户可以有关机权限,那天下还不大乱。[嘿嘿]

在Linux下,用户分为三类:超级用户、系统用户和普通用户

超级用户(root),具有一切权限,绝对的权力导致绝对的危险,所有一般只有进行系统维护或者其他必要的情况下才使用root身份登录,以免出现安全问题。

系统用户(system account),是Linux系统正常工作所必需的内建的用户,也被称为虚拟用户,它们不能用来登录,如bin、daemon、adm、lp等用户,这些虚拟用户都是为了系统进程对文件属主的要求而建立的。

而普通用户(login-account),是我们接触的最多的用户角色。它们是为了使用者更好的使用Linux系统资源而建立的。

Linux系统为不同的用户设置编号UID,不同的用户具有不同的UID,也就是姓名和身份证的关系,可能具有相同姓名但是身份证全国唯一,政府通过身份证管理百姓,Linux系统依靠UID来准确的识别用户,再分配权限。

root的UID是0,系统用户的UID是1-499,普通用户的UID是500-60000。

思考为什么需要这么设置?

Linux系统的大部分权限和安全的管理依赖于对文件权限(读、写、执行)的管理,而用户是文件权限的拥有者。

比如,当应用需要访问或操作或拥有系统的资源时,Linux会通过用户控制系统用户来实现,而不是普通用户自己取得相对应的权限,再去直接控制实现。

二、分享才能更加快乐

无论是哪种用户,都可以将自己的安全的分享出去。

我们知道Linux不区分文件的类型,一视同仁。现在有a文件有三种权限:读r、写w、执行x,a文件的三种权限都属于它的owner,假设叫1号。

如果另一用户2号也想用它怎么办,我们没必要为2号再新建一个同样的文件来满足要求,我们可以在不改变a文件所有者的情况下,分享一部分需要的权限给2号用户。因此对于a文件来说,此时有三种用户:所有者owner、2号用户(有部分权限)、其他用户(没有权限)。

对于文件权限而言,Linux文件有三种权限:属主权限、用户组权限、其他用户权限。

每个用户至少属于一个用户组,每个用户组可以包含多个用户,而且用户组内的成员具有相同的文件权限,像上面的2号用户。

==最好的设置是属主、用户组、其他用户的权限依次减小,才能很好的达到权限管理的目的。==

属主、用户组、其他用户关系见下图:

![enter description here][1]

文件权限

下图是Linux关于文件权限的例子:

![enter description here][2]

你可能在想,如果又有一用户需要(2)例子中文件的rwx权限,怎么办?

最好不去新建相同的文件,也不能转移所有权,文件只能属于一个用户组。

后来Linux的编写者想到:平时银行信用卡有主卡和副卡,同样的我们可以给文件设置一个副卡,称为ACL权限。

因此: ==对于文件权限拥有3种用户权限:属主权限、用户组权限(ACL权限)、其他用户权限。==

同样对于超级用户root的文件,也具有以上3种权限。只不过,root的权限可以操作一切文件,类似ACL权限,对于root用户的权限分享出来,我们称为sudo权限。

root用户的文件拥有的用户权限:属主权限、用户组权限(sudo权限)、其他用户权限。

sudo权限可以将一些系统运行命令赋予给普通用户。

三、还有一些扩展需要知道

其实文件权限有四部分,常用的是上面讲到的3种,在最前面有setUID/setGID/sticky(粘着位)。

所有文件权限分为setUID/setGID/sticky(粘着位)、属主权限、组权限、其他用户权限。

Linux还存在一个mask值,它用来设置初始创建一个目录或者文件时赋予的权限,不过只赋值常用的3种权限。

比如mask=0022时,新建文件w,它的权限值为644,-rw-r–r–。新建文件夹w,权限值为755,drwxr-xr-x。

针对目录来说x权限代表可以进入该目录,所有对这个权限初始赋值是没有什么问题的

针对文件的x权限代表执行,这个风险太高,所以一般权限初始赋值必须去掉x。

在bash中,可以写入4位数字的权限,但第一位必须是0,我们只考虑后3位常用的权限。

按照下图实验ACL权限:

![enter description here][3]

四、管理哲学:合理分配root用户的权限

使用su - username 来转换用户,su - root需要root的密码。

还可以使用上述sudo来分享root权限。

su方式切换是需要输入目标用户的密码,而sudo只需要输入自己的密码,所以sudo可以保护目标用户的密码不外流的。当帮root管理系统的时候,su是直接将root所有权利交给用户,而sudo可以更好分工,只要配置好/etc/sudoers,这样sudo可以保护系统更安全,而且分工明确,有条不紊。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux 操作系统