树莓派开始,玩转Linux16:我的地盘我做主

树莓派开始,玩转Linux16:我的地盘我做主

Linux是一个多用户系统。多个用户可以同时登录同一台Linux电脑,同时使用,互不干扰。因此,我们必须考虑到用户隐私和用户权限的问题。Linux从UNIX继承来一套用户系统,这套用户系统通过用户权限的设置,可以有效地保护用户隐私,并防止用户进行越权操作。

1.我是谁:

Linux用户登录时,输入了自己的用户名和密码。用户名是一串可读的文本,比如"pi"。作为惯例,用户名第一位是一个英文字母,后面可以跟随一串英文字母、数字或符号"-"。
如果用户登录通过,那么操作系统就确认了用户的身份。此后用户都以该身份在系统内活动。
你可以通过下面的命令找出自己的身份:
在这里插入图片描述
从这个命令的返回中,可以看到自己的用户名和最近一次登录时间。

命令who可以返回所有的登录用户:
在这里插入图片描述
如果用户lvor和用户anna都已经登录系统,那么命令将返回:
在这里插入图片描述
在返回的结果中,pts说明了用户登录的终端号。如果用户是用SSH之类的方式远程登录,那么括号中的IP地址说明了用户是从哪个IP地址远程登录的。

在Linux中,我们可以用文本形式的用户名来指代一个用户。
比如,命令write可以用来给同一Linux下的其他用户发信息。用户anna发信息给用户lvor:
在这里插入图片描述
命令echo后面的文本用双引号包裹起来,这是为了提醒echo整个双引号内的文本是一个完整的文本,把它作为单一的参数,以防命令错误地根据空格分割为多个参数。

用户不仅是一个单一个体,同时还是一个用户组(Group)的成员。组是多个用户的集合,组内的用户享有某些共同的权限。一个用户至少属于一个用户组,可以用groups命令来查找用户所属的组:
在这里插入图片描述
将返回自己所属的组。
在这里插入图片描述
用户可以通过文本形式的用户名记住每个用户。不过,在机器底层,会用一个数字代表用户身份。一个用户首先是一个唯一个体。在操作系统眼中,用户个体可以用一个数字,即用户ID(User ID,UID)来表示。组同样可以用一个数字组ID(Group ID,GID)来表示。我们可以用id命令来找到用户的UID和GID:
在这里插入图片描述
将返回用户pi的UID和GID:
在这里插入图片描述
2.root用户和创建:

除了之前一直在登录使用的pi用户,我们还可以创建其他用户。创建用户的操作需要root权限。在Linux系统中,有一个特殊的root用户,是系统中的神级用户,拥有非常高的权限。root就是上帝,如图所示。通常来说,root账户是由系统管理员掌握的。如果知道root用户的密码,那么可以使用su命令来切换成root用户:
在这里插入图片描述

在这里插入图片描述
用户root可以做很多普通用户做不到的事,比如监听1024以下的端口、改变文件的拥有者等。由于root权限很高,用户应该避免直接使用root账户进行操作。直接以root权限执行命令式,很容易产生不可挽回的误操作,比如删除根目录:
在这里插入图片描述
普通用户无权执行该命令,但root用户有权直接执行这一操作,把根目录删除。为了避免类似的灾难,Linux系统引入了sudo。如果普通用户有权执行sudo,那么他可以使用sudo来以root身份执行命令。由于sudo是临时性地扩张用户权限,误操作的概率会大为减小。
以用户pi为例:
在这里插入图片描述
Shell会提示禁止查看。如果以sudo运行相同的命令:
在这里插入图片描述
输入pi账号的密码。因为pi有权进行sudo,所以cat命令会以root的身份执行,上面的命令将打印/etc/shadow的内容。

现在,我们可以创建新用户:
在这里插入图片描述

命令adduser不仅可以创建用户,还可以帮助用户进行其他的设置,
比如为用户建立用户目录、选定用户默认登录Shell等。在创建用户的同
时,系统还会创建同名的用户组,用户会被加入该用户组。

我们可以用su命令把自己切换成用户tommy:在这里插入图片描述
删除用户时,可以使用:
在这里插入图片描述
也可以用命令来创建用户组:在这里插入图片描述
删除用户组:
在这里插入图片描述
3.用户信息文件:

Linux的用户信息保存在文件/etc/passwd中。通过这个文件,你可以对操作系统中的用户和组进行总览。我们之前对用户的操作,本质上也是在修改/etc/passwd文件。
在文件/etc/passwd中,每一行代表一个用户。
每一行用冒号分为7个部分:
在这里插入图片描述
以用户pi的记录为例:
在这里插入图片描述
在这条记录中描述部分空缺,密码部分用"x"表示。这个符号的含义是,密码以密文的形式保存在文件/etc/shadow中。当然,密码也可以以明文的形式写在/ect/passwd的记录中,但这样系统的安全性会大打折扣。

大多数情况下,用户会有一个属于自己的用户目录,用于存放自己的文件。登录时,bash的当前工作目录,通常会设置成该用户目录。用户root的用户目录在/root下,而普通用户的目录都位于/home下。根据/ect/passwd的记录,用户pi的用户目录是/home/pi。最后的/bin/bash说明了登录之后默认使用的Shell。/bin/bash是bash的程序文件。我们看到有些行的记录使用的Shell是nologin或者false。命令nologin会拒绝登录,而命令false则什么都不做。因此,这些用户没法像普通用户一样,通过Shell来操纵操作系统,因此被称作伪用户。为了系统管理的方便,操作系统创建了这些用户。很多程序会以伪用户的身份运行,以便享有对应的权限。以用户mail为例:
在这里插入图片描述
当操作系统调用电子邮件相关程序时,就会用到该伪用户。

同样的,用户组的信息也都保存在/etc/group文件中。这个文件的每一行代表了一个组。每一行用冒号分割成了4段信息。
在这里插入图片描述
我们已经了解了组名和GID。组密码并不常用,通常设置成"x"。用户列表用逗号分开,包括了属于该组的全部用户。

4.文件权限:

Linux系统中的数据保存为文件。因此文件的权限分配就显得异常重要。用户希望自己的某些数据内容能获得隐私保护,用户yutian当然不希望用户anna看到自己存在电脑上的情书。关系到操作系统运行的配置文件不能随意更改。如果每个人都可以写入/ect/passwd这个文件,那么谁都可以随意地创建或删除用户,这将导致整个操作系统十分混乱。因此,操作系统有必要根据用户身份,控制其读、写、执行文件的权限。

在Linux系统中,文件的附加信息包含了权限信息。用ls命令查询文件详情:
在这里插入图片描述
返回结果可以分为5个部分:
在这里插入图片描述
文件的权限由第1部分和第3部分控制。第1部分包含了10个字符,第一个字符表示文件类型,和file命令查询结果一致。表示文件权限的是"rw-r–r—"。9个字符分为三组,“rw-”“r–”“r–”,分别对应拥有者(Owner)、拥有组(Owner Group)和其他人(Other)。这是系统用户的3个分类。无论是哪一种分类,都规定了该类是否有读、写、执行的权限。

第一组权限是"rw-",它表示,如果当前操作用户是文件的拥有者,那么他对该文件就有读取"r"(read)和写入"w"(write)的权限,但符号"-“表示该拥有者无权执行该文件。如果拥有执行权限,则第三位应该是表示执行的"x"字符。以此类推,第二组权限表示,如果用户属于文件的拥有组,那么用户享有读取的权限。第三组表示,任何一个用户都有读取文件的权限。
尽管9位的权限可以任意设置,但通常来说,拥有者享有最多权限,拥有组次之,其他用户的权限最少,如图所示。通过这样一个三级权限系统,每个文件可以有一个联系最密切的用户,即文件的"拥有者”,拥有者对文件享有最高权力。此外,还有一个组的用户区别于系统中的其他用户,对文件拥有特权。由于每个文件都可以把整个系统的用户分成三类,而每一类都可以有不同的权限,所以Linux系统可以非常灵活地设置文件的权限。
在这里插入图片描述
下面做一个小练习。如果文件sketch.jpg的权限标志是:
在这里插入图片描述
该文件的拥有者是root,拥有组是vamei,那么对于下面三个用户来
说,分别有权执行哪些操作,如表所示。
在这里插入图片描述
5.文件权限管理:

了解了文件权限,我们就可以对文件权限进行设置。你可以从两个方面来控制用户操作文件的权利。一方面,你可以修改文件的拥有者或拥有组,从而重新给用户分类。另一方面,你也可以更改文件的权限标志,赋予每一类用户新的权限。

我们可以用chown命令来改变文件的拥有者和用户组:
在这里插入图片描述
该命令把文件file.txt的拥有者改为用户anna,把文件的拥有组改为
anna组。
用chmod命令来改变文件的权限标志:
在这里插入图片描述

你必须是文件file.txt的拥有者或者以root用户的身份才能运行该命
令:
在这里插入图片描述
更改之后,文件权限变为:
在这里插入图片描述
在命令chmod中,我们用3个数字,如444来对应三类用户的权限。

第一个数字代表拥有者权限,第二个数字代表拥有组权限,第三个数字代表其他用户权限。Linux规定,4为读取权,2为写入权,1为执行权。由于第一位7是4、2、1的和,所以拥有者有读、写、执行三项权利。第二位和第三位的5是4、1的和,因此后面两类用户都有读和执行的权利。你可以尝试一下用444、744和554,看看文件的权限有什么变化。
我们之前提到过,目录也是一个文件。而删除文件这样的操作,实际上是通过写入上级目录文件来实现的。理论上说,控制目录的读写权,也可以控制用户在该目录中增加和删除文件的权利。需要注意是,由于路径的解析需要对沿途的目录有执行权限,因此一个用户只有对目录文件享有执行权,才能在该目录中增删文件。此外,用户想用cd命令切换工作目录,同样要对该目录有执行权。

本章主要介绍了Linux的用户和权限系统。Linux以用户身份和组身份来管理用户。对于一个文件来说,它给自己的拥有者、拥有组和其他人规定了不同的读、写、执行权限。通过这一机制,Linux可以实现复杂的文件授权。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值