8. 用户与文件

8.1. 用户及用户组

Linux操作系统同样也是多用户操作系统,其中具有管理其他用户和计算机的全部资源的用户, 称为root。

安卓系统,实质上也是基于Linux,安卓手机上常常提到的root权限, 也就是获取最高的权限,就跟电脑获取超级管理员的权限是一样的。

在Linux中,每个用户都有一个特定的编号——UID,用于标识一个系统用户。Linux将标号0分配给root用户的uid, 它可以分配给每个用户不同的权限,因此每个用户可进行的操作也不同。

我们可以通过id命令来查看当前用户的UID值(关于如何使用命令在下一章介绍,此处先了解):

1
id
未找到图片3|

上图中的gid用于标识当前用户所在的分组(Group),每个用户可以对应多个分组。 就好像学校里面有音乐社,动漫社,文学社等社团,每个学生可以去参加多个社团, 这样才能够接触到各种各样有趣的东西。Linux系统拥有多个分组,每个用户分组就相当社团, 用户如果是多个用户组的成员,就可以访问其他分组对应的文件, 前提是该分组的文件允许其他用户访问,这就需要了解另一个知识点:文件权限。

未找到图片4|

8.2. 文件

Linux一切皆文件

Linux的文件属性,可以分为读权限、写权限、执行权限。读权限以及写权限,

关于执行权限,是指可以加载到内存中,并由操作系统加载程序执行的文件。在Windows操作系统中, 我们接触最多的应该是后缀为.exe的文件。但是对于Linux来说,它并不是通过后缀名来识别文件类型的, 如果我们想要执行某个可执行文件,则需要为其添加执行权限,即勾选前面的“允许作为程序可执行文件”。

除此之外,关于Linux文件权限,还需要分三种情况:文件拥有者(owner),分组成员(groups)以及其他分组成员(other)。 如本示例中的文件允许文件拥有者cat对该文件的内容进行读写操作, 而对于cat分组以及其他分组的用户则只能阅读该文件,并不能对该文件进行修改。 如果我们想修改其他分组的文件,我们可以修改该文件分组所拥有的权限。

我们可以以cat用户登录系统,然后创建一个新文件

1
2
3
4
5
6
7
8
9
#如果是root就切换为普通用户
su cat
#输入密码

#切换目录
cd /home/cat

#查看文件的权限
ls -l
未找到图片4|
  • drwxr-xr-x 2 cat cat 4096 Feb 14 2019 Desktop

  • 可以看到文件和文件夹的开头都有一串字符字符,下面给大家分析一下

各个字段的说明如下:

  • 第一字段:文件属性

    文件属性共有十个字符,第一个字符代表文件的类型,字符“-” 表示该文件是一个普通文件;字 符“d”是dirtectory(目录)的首字符,表示该文件是一个目录;字符“I”,表示该文件是个链接文件。

    后面的九个字符,每三个为一组,分别表示文件拥有者 的权限、文件所属组拥有的权限以及其他用户拥有的 权限。字符“r”代表的是读(read)权限,字符“w”代表的 是写(write)权限,字符“x”代表的是执行(execute)权限。

  • 第二字段:链接占用的节点/子目录的个数

    第二字段的含义,主要取决该文件的类型,如果是文件的话,则表示该文件所具 有的硬连接数。某个文件的第二字段如果等于1的话,代表没有其他指向该文件的硬连接。

    根据 Linux 系统存储文件的特点,链接的方式可以分为两种,分别是硬链接 和软连接(符号连接)。软链接,类似于Windows操作系统的快捷方式。而硬链 接,则是相当于把该文件复制一份,同时加上自动更新。当我们修改了硬链接文 件的内容,源文件也会被修改。当为某个文件创建硬链接时,该字段的值便会加1。可以使 用ln命令创建软链接和硬链接,当前只要知道有这回事即可,先不要纠结软链接和硬链接的概念。

    对于文件夹来说,第二字段则表示该文件夹下有多少个子目录。空文件夹 的话,该值默认等于2,这是因为包含了“.”和“..”子目录。

  • 第三字段和第四字段:文件拥有者和文件所在的组

未找到图片4|

可以看到该文件夹的拥有者,即现在登录的用户拥有所有的执行权限的, 而其他用户以及和他一个组的用户就只有读的权限(超级用户除外)

超级用户创建的文件也同样如此

1
2
3
4
5
#使用超级用户创建文件按
sudo touch hello

#查看文件属性
ls -l
未找到图片4|

可以看到cat用户只有读的权限

1
2
3
4
5
#查看文件
cat hello

#写文件
echo cat > hello
未找到图片4|
  • 可以看到读是正常的,因为没有内容,所以没有打印出其他内容

  • 写错误,可以看到并没有权限写内容

8.3. chmod命令

该命令可以用来修改文件的权限

我们从上面的文件权限可以知道,文件的权限由三部分组成, 每个部分都对应着三种文件权限,可读,可写,可执行

rwx 在二进制的数值中可以看成

  • r:100–4

  • w:010–2

  • x:001–1

因此,如果文件的权限是rwx,它的数值表达为7,如果是rw,数值表达为6

如果想要修改该文件的所有权限就可以用以下命令

1
2
#修改所有权限
sudo chmod xxx 文件

例如 xxx = 777 那么文件权限就变成了 -rwxrwxrwx

未找到图片4|

例如 xxx = 666 那么文件权限就变成了 -rw-rw-rw-

未找到图片4|

除了以上方法,chmod还有一个可以单独给用户,组,其他用户设置权限的方法

1
2
#单独增减权限
sudo chmod [ugoa][+-][rwx] 文件

[ugoa]

  • u:使用者

  • g:用户所在的组

  • o:其他用户

  • a:所有用户

[+-]

  • +:增加权限

  • -:移除权限

[rwx]

  • r:读

  • w:写

  • x:执行

举例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
#给所有用户移除可执行的权限
sudo chmod a-x hello

#给其他用户减少可写的权限
sudo chmod o-w hello

#给root用户减少可写的权限
sudo chmod u-w hello

#给root用户增加可写的权限
sudo chmod u+w hello
未找到图片4|