Linux运维之用户和群组及权限管理

2019-04-03  本文已影响0人  慕长风啊

用户

初次接触Linux的时候,发现Linux支持很多用户登录,还划分了群组

感到很奇怪,这样做有什么用呢?

后来才知道,这其实是一种很健全且实用的安全防护!

首先说说文件拥有者的概念:

因为Linux是个多人多任务的操作系统, 尤其在服务器上,常常会出现多人同时使用这部主机工作的情况出现

以前只把kali作私人系统用没觉得有什么,现在用到实验室的公共服务器才渐渐意识到这点

考虑到每个人的隐私及个人喜爱的工作环境,这里的文件拥有者的角色显得格外重要

借用鸟哥私房菜中的一个例子来解释:

Linux-2-1

群组

再谈谈群组这一概念:

群组最有用的功能之一,就是当你在团队协同开发的时候啦!

比如:

现在有两个组要根据同一专题在同一台主机上分别进行项目开发
两个组之间存在竞争性质,因此每组成员不能看到其他组的文件内容
但是同一组内的成员彼此间可以互相修改对方的数据。
另外,两个组有一名共同的老师,这个老师能够同时观察到两组人的项目进度。
相当于,还需要设定一个teacher账号,这一账号可以有多个群组的支持。

像上面这类限制条件在Linux操作系统下其实是很容易完成的,具体操作在后面的账号管理中再解释

权限管理

说完了用户与群组,自然要涉及到权限问题。 首先我们可以亲自动手试试看Linux下的文件权限到底长什么样子:

Linux-2-2

PS:当前使用的是普通用户权限

关于文件属性,引用下书中的插图:

Linux-2-3

其中的档案类型权限的解释参考下图:

Linux-2-4

这里一共有十个字符,除了第一个代表“目录,文件或者链接文件”等等类型

PS:d是目录, - 是文件,l表示连接档,b为装置文件里的可供存储的接口设备,c是装置文件里的串行端口设备

后九个以三个为一组,且均为“rwx”三个参数的组合分别代表“文件拥有者可具备的权限”,“加入此群组之账号的权限”,“非本人且没有加入此群组之其它账号的权限”

rwx三种权限的位置不变,如果没有该权限则显示 -

下面再引用一道例题就更清楚了:

Linux-2-5

再加上一道关于目录权限的例题:

Linux-2-6

综合以上知识,再查看文件权限的话基本上没什么大问题。

然后可以开始对文件权限进行管理了:

这里会涉及到一个很常见的命令——chmod,文件权限的更改就靠它了

但是,设定权限的方法有两种,分别是使用数字或者符号来进行权限的变更

这就是我们经常在一些教程里见到的 chmod 777 文件chmod a+x 文件

首先,我们可以用3个数字代表各类权限 r:4 w:2 x:1

例如,当权限是[-rwxrw-r--]时

owner=rwx=4+2+1=7 group=rw-=4+2+0=6 others=r--=4+0+0=4

所以变更到上面这种权限的命令就是 “chmod 764 文件”

另外一种方法,我们可以用u,g,o等首字母分别代表上面三种身份,a即all代表全部身份

那么三种权限就写作r,w,x咯,可以参考下图来看:

Linux-2-7

例如,要设定某文件权限为[-rwxrw-r--],可以用命令“chmod u=rwx,g=rw,o=r 文件”

另外,如果只是想给每个人均加入可写权限呢?

可以这样:chmod a+w 文件

注意!!

文件的w权限并不能给予你删除该文件的权利,对于文件而言,三种权限都只是针对文件的内容,而跟文件档名的存在并没有关系。

但是如果该文件所属目录拥有w权限,却是一件很了不起的事,这表示你具有异动该目录结构列表的权限,因此你可以在该目录下进行建立的新的文件和目录,删除已存在的文件和目录,更名,搬移等等操作

账号管理

讲到这里就需要先介绍一下/etc/passwd文件了

之前学习web安全时经常拿这个文件做测试,但实际上当时还并不是特别清楚它的作用

其实这个文件的每一行都代表一个账号,不过需要注意的是,很多账号都是系统正常运作所必须要的,简称系统账号,如下图:

Linux-2-8

像bin , sys, daemon之类的,其中root是系统管理员

图中的数字代表账号id,有两种,前一个是使用者id即UID,后一个是群组id即GID

除了root的id是0,1~999是系统账号,1000~60000是可登入账号

有账号的话自然就会有账号密码,图中的x就象征密码

早期账号密码放在同一个文件里,现在密码被集中到了/etc/shadow文件中

这里就先不作过多介绍了 说到管理,无非就是增删查改之类的

先说说如何新增,移除以及更改用户相关信息吧

新增用户?很简单,useradd就可以了,再用passwd配置一下密码

具体用法可以去找“男人”(man),直接useradd+账户名就是完全参考默认值新建用户

我这里建一个名为kali的用户: useradd kali

CentOS系统会默认处理几个项目:

ps:如果passwd命令后不加账户名,默认是更改root账户的密码,因此要养成每次都加账户名的好习惯,防止不小心在root权限下篡改了自己的密码,另外就是建议一般情况不要使用root账户进行操作,有必要的时候再用sudo就可以了

关于删除账户,很简单,用userdel命令就可以了

Linux-2-9

注意!这个指令下达的时候要小心了!

通常我们要移除一个账号的时候,你可以手动的将 /etc/passwd 与/etc/shadow 里头的该账号取消即可!

一般而言,如果该账号只是暂时不启用的话,那么将 /etc/shadow 里头账号失效日期 (第八字段) 设定为 0,就可以让该账号无法使用

但是所有跟该账号相关的数据都会留下来!

使用 userdel 的时机通常是你真的确定不要让该用户在主机上面使用任何数据了!

另外,一般用户在系统上操作过一段时间都会留下一些文件,如果想要完整的将某个账号完整的移除,最好可以在下达 userdel -r username 之前, 先以 “find / -user username ”查出整个系统内属于 username 的文件,然后再加以删除吧!

还有就是关于身份的切换, 通常用一般账户登入系统,需要root权限时有两种办法:

一是”su -”直接变成root身份,当然是需要密码的

二是“sudo 指令”执行root的指令串,也需要密码,但是多人使用时可以避免密码外流

另外,“su [username]”可以切换到任何身份

至于群组的管理,都差不多

也是先看两个文件/etc/group,/etc/gshadow,然后是些命令:groupadd, groupdel, groupmod, gpasswd等等

后续就不作赘述了

上一篇下一篇

猜你喜欢

热点阅读