8. 用户与文件¶
8.1. 用户及用户组¶
Linux操作系统同样也是多用户操作系统,其中具有管理其他用户和计算机的全部资源的用户, 称为root。
安卓系统,实质上也是基于Linux,安卓手机上常常提到的root权限, 也就是获取最高的权限,就跟电脑获取超级管理员的权限是一样的。
在Linux中,每个用户都有一个特定的编号——UID,用于标识一个系统用户。Linux将标号0的uid分配给root用户, 它可以分配给每个用户不同的权限,因此每个用户可进行的操作也不同。
我们可以通过id命令来查看当前用户的UID值(关于如何使用命令在下一章介绍,此处先了解):
1 | id
|
上图中的gid用于标识当前用户所在的分组(Group),每个用户可以对应多个分组。 就像学校里面有音乐社,动漫社,文学社等社团,每个学生可以参加多个社团, 这样才能够接触到各种各样有趣的东西。Linux系统拥有多个分组,每个用户分组就相当社团, 用户如果是多个用户组的成员,就可以访问其他分组对应的文件, 前提是该分组的文件允许其他用户访问,这就需要了解另一个知识点:文件权限。
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
|
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,这是因为包含了“.”和“..”子目录。
第三字段和第四字段:文件拥有者和文件所在的组
可以看到该文件夹的拥有者,即现在登录的用户拥有所有的执行权限的, 而其他用户以及和他一个组的用户就只有读的权限(超级用户除外)
超级用户创建的文件也同样如此
1 2 3 4 5 | #使用超级用户创建文件按
sudo touch hello
#查看文件属性
ls -l
|
可以看到cat用户只有读的权限
1 2 3 4 5 | #查看文件
cat hello
#写文件
echo cat > hello
|
可以看到读是正常的,因为没有内容,所以没有打印出其他内容
写错误,可以看到并没有权限写内容
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
例如 xxx = 666 那么文件权限就变成了 -rw-rw-rw-
除了以上方法,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
|