了解 Linux 的用户及权限

引言

  同学们都知道,登陆到 Linux 系统的时候需要输入一个用户名,然后还要输入对应的口令。这个用户名到底是什么呢?它的用途到底是什么呢?我们的旅途来到了这里,要跟用户和组见面了,还能跟权限打交道哦。

我们的目标

  通过本文,同学们将了解到:

  1. 用户和组的概念
  2. 权限的概念
  3. 权限在 Linux 中的表示
  4. 特殊的权限

用户和组

  我们去上学的时候,学校会给我们发学生证,用来确定我们的身份,这就是用户名,我们是什么呢?可以理解为用户哈。同样的,我们在登录 Linux 的时候,系统也要验证我们的身份,不然,什么人都可以使用我们的名义去登录。怎么验证呢?哈哈,那就是,在登录之前,让我们输入用户名和口令,如果输入对了,那就会登录成功,否则会失败,就像门卫那样,每次我们进入校园时,都要验证我们的学生证。专页地说, Linux 系统中的用户就是用来确定某个人的身份的信息,最常用的信息是一个名称和一个密码,也就是说,登录系统的时候,你说你是 Armstrong,好的,请告诉系统,Armstrong 先前留在系统这里的暗号。
Linux 系统中的用户是怎么来的呢?有一些是系统内置的,而有一些是管理员后来添加的,例如,我们的超级用户,确切说叫做根用户(root)是系统内置的,它是权限至高无上的用户。而我们的 nobody 是用来匿名访问系统的默认用户,它的权限受到严格限制,不能用来登录 Linux 系统,例如,Nginx 的工作进程可以运行在 nobody 用户下,这样,即便网站被入侵,要通过 nobody 用户取得更高的系统权限是几乎不可能的。我们可以根据需要,在系统上创建用户,有些同学可以登录到主机系统,这就是他们的用户账户在早些时候被创建了。
由于在登录时需要键入口令,因此,简单的口令往往是系统遭到未经授权登录的最主要原因,合格的口令至少应包含 6 个字符,其中应该至少包含大写字母,小写字母,数字和符号(例如感叹号,地址符,小数点,斜杠等),且尽量要跟生日等个人身份信息,联系信息等无关。例如:Asd.321,这是一个看起来不复杂的密码,但是暴力破解却需要很长的时间。此外,定期更换密码是一个好习惯。
物以群分,人以类聚,Linux 中也有用户组的概念,我们可以把相同类型的用户,归纳到相同的用户组里面,这样便于资源的分配,以及权限的指派,这就是用户组了。

什么是权限?

  刚才同学们注意到了吗?我不止一次地提到权限这个词,那么,权限是什么呢?就拿学校来作比喻吧,学校里,有的地方是不是同学们不能去的呢?只有特定的人才可以去,反过来,我们的教室也不是所有人都能来的,这就是权限啦。权限就是:能够做什么。
有很多用到权限管理的地方,比如,目录,比如,系统命令。服务器管理员当然不希望一个访问网站的人可以随意关掉服务器,同学们也不希望服务器上的其他同学可以访问自己的私人空间,这都要通过权限来达成。
分配访问权限的操作叫做授权,也就是授予权限的意思,在这里,授权是一个动词。比如,Armstrong 授权 Mason 访问他的工作目录,学校网络管理员 Adams 考验了 Armstrong 后得出 Armstrong 技术过硬的结论,然后他授权 Armstrong 操作核心交换机。

在 Linux 系统中,有哪些文件/目录访问权限? *

  Linux 中,文件和目录的基本访问权限有三种,分别是读、写和执行,用字母来表示,r 表示读,w 表示写,x 表示执行,如果用八进制数字来表示,4 表示读,2 表示写,1 表示执行。如果某个文件/目录的权限是 rw,那就是可读可写。如果用数字来表示呢?很简单,数字是 6。为什么呢?因为代表权限的数字是可加可减的,再举一个例子,如果是可读可写可执行,数字就是 7,。
通常,Linux 系统中,文件和目录的权限分为 3 个部分,分别是:所有者,所有组,其它。所有者和所有组是可以分别设定的。其它,可以理解为所有人。显示的时候,通常会显示为 rwxr-xr-x,同学们还记得上面 r、w、x 的区别吗?为了提高效率,还可以用数字来表示,例如 0755,这里,0755 表示:所有者可读可写可执行,所有组的其他成员可读可执行,其他人也是可读可执行。

特殊权限

  不知道同学们有注意到吗?刚才我有提到过 0755,那么,最前面的 0 是什么呢?它是 Linux 中的特殊权限,一般为 0,也就是,没有特殊权限。同学们又要问了,特殊权限有哪些呢?
SUID:这项权限只能应用到可执行文件,当这个可执行文件被执行时,系统就会使用它的所有者的权限来执行,前提是,尝试执行这个文件的帐户必须被授权执行这个可执行文件,代表这个权限的数值是 4,设定了这项权限后,以英文字母表示权限时,所有者的第三个字母是 s。应用 SUID 权限最典型的例子是 passwd 指令,修改密码时,需要修改 /etc/shadow 文件,这个文件只有 root 帐户有权限修改,而 passwd 可执行文件的所有者是 root,借助 root 的权限,同学们就可以修改自己的密码了。请问同学们,这个权限能够应用于脚本吗?哈哈,告诉大家吧,这是不能的,为什么?因为脚本文件当中可以调用多个可执行文件,为了系统的安全性,系统的设计者们是有意这样限制的。
SGID:与 SUID 类似,但针对的是所有组,只能应用到目录,代表 SGID 的数字是 2,设定了这个权限后,以英文字母表示的所有组的权限,第三位是 s。请同学们注意:如果目录具有这个权限,创建文件到这个目录后,文件的所有组是这个目录的所有组,而非创建这个文件的用户的所在组。
SBIT:这项权限只能应用于目录,当在具有这项权限的目录创建文件或目录时,只有文件/目录的所有者及root 才可以删除创建的文件/目录,即使文件/目录的权限是所有人可读写。代表 SBIT 的数字是 1,设定了这项权限后,以英文字母表示的其它用户的权限的第三位字母是 t。应用 SBIT 最典型的目录是 /tmp。

最后

  今天的内容有些难度,请同学们慢慢理解。

让我自己做

  感谢同学们一路以来的陪伴,从现在开始,同学们要用所学知识来解决实际问题了。
  Armstrong 在根目录创建了一个名为 armstrong 的目录,里面创建了 private 和 public 子目录,Armstrong 要用权限来保护 private 目录里面的内容,只允许自己可以访问,public 是他给他的同学们分享的文件,希望同学们只能浏览里面的文件,而不能修改及删除它们,对于其他人,Armstrong 现在不希望它们能访问 armstrong 目录里的任何子目录及文件,请问各位同学,Armstrong 要如何设定权限呢?用来表示所设定的权限的数值是什么呢?

发表评论

电子邮件地址不会被公开。 必填项已用*标注