Ubuntu是一个多用户系统。我们可以为不同的用户创建不同的用户账号,每个用户用自己的账号登录。使用用户账号的目的是方便系统管理员的管理,控制不同用户对系统的访问权限,为用
Ubuntu是一个多用户系统。我们可以为不同的用户创建不同的用户账号,每个用户用自己的账号登录。使用用户账号的目的是方便系统管理员的管理,控制不同用户对系统的访问权限,为用户提供安全保护。
我们前面在安装 Ubuntu 系统的时候被要求创建一个账户,当我们创建好账号以后,系统会在目录/home 下以该用户名创建一个文件夹,所有与该用户有关的文件都会被存储在这个文件文件夹中。同样的,创建其它用户账号的时候也会在目录/home 下生成一个文件夹来存储该用户的文件,下图就是“zuozhongkai”这个账户的文件夹。
当我们安装Ubuntu系统时,我们被要求创建一个帐户。在我们创建帐号后,系统会在目录/home下创建一个以该用户名命名的文件夹,所有与该用户相关的文件都会存储在这个文件夹中。同样,当创建其他用户帐户时,将在目录/home下创建一个文件夹来存储用户的文件。下图是“左中凯”账号的文件夹。
用户帐户根目录
安装系统时创建的用户比后来创建的用户拥有的权限多一点,但没有root那么大。Ubuntu下的用户类型分为以下三类:
●初次用户,可以完成比普通用户更多的功能。
● root用户,系统管理员,系统中的玉帝,拥有至高无上的权利。
●普通用户,安装操作系统后创建的用户。
以上三种用户,每个用户都有一个 ID 号,称为 UID,操作系统通过 UID 来识别是哪个用户,用户相关信息可以在文件/etc/passwd 中查看到,如图所示:
对于以上三种用户,每个用户都有一个ID号,称为UID。操作系统通过UID识别是哪个用户,用户相关信息可以在/etc/passwd文件中查看,如图:
密码文件内容
从配置文件passwd中可以看到,每个用户名后面都有两个数字,比如用户“左中凯”后面的“1000:1000”。第一个数字是用户的ID,另一个是用户的GID,也就是用户组ID。Ubunut中的每个用户都属于一个用户组,用户组是一组属性相同的用户。
在使用Windows的时候,我们很少接触到用户的权限。最多是出问题的时候,我们会选择以管理员的身份打开。在Ubuntu下,我们经常处理用户权限。权限是用户对使用系统资源的限制。根用户拥有最大的权限,可以为所欲为。安装系统时创建的用户拥有root用户的部分权限,其他普通用户拥有最低权限。对于我们这些做嵌入式开发的人来说,一般不会关注用户的权限,因为嵌入式系统基本都是单个用户,嵌入式开发的重点是文件的权限。
对于一个文件通常有三种权限:读(r)、写(w)和执行(x),使用命令“ls -l”可以查看某个目录下所有文件的权限信息,如图所示:
一个文件通常有三种权限:读(R)、写(W)和执行(X)。使用命令“ls -l”查看某个目录下所有文件的权限信息,如图:
文件权限信息
在图中,我们以文件test.c为例。文件test.c的信息如下:
-rw-rw-r-- 1 zuozhongkai zuozhongkai 0 12 月 25 20:44 test.c
其中“-rw-rw-r –指示文件权限与用户和用户组之间的关系。第一位表示文件类型。其余9位按3位数分组,分别代表文件所有者的权利、文件所有者所属用户组的权利和其他用户权利。下面的“左中凯左中凯”代表文件的所有者(用户)和用户所属的用户组,所以文件test.c的权限如下:
①文件test.c的所有者是用户左忠凯,他对文件tesst.c的权限是“rw-”,即他对文件有读写权限。
②用户左仲恺所属的用户组也叫左仲恺,组内用户对文件test.c的权限是“rw-”,也同时拥有读写权限。
③其他用户对文件test.c的权限是“r & # 8211,这是只读权限。
对于一个文件,可读权限是指你可以打开并查看其内容,可写权限是指你可以修改文件,可执行权限是指你可以运行文件(如果是软件的话)。对于文件夹,只有拥有读取权限才能用命令ls查看文件夹的内容,只有拥有可执行权限才能进入文件夹。
如果某个用户对某个文件不具有相应的权限的话就不能进行相应的操作,比如根目录“/”下的文件只有root 用户才有权限进行修改,如果以普通用户去修改的话就会提示没有权限。比如我们要在根目录“/” 创建一个文件 mytest,使用命令“touch mytest”,结果如图所示:
如果用户对某个文件没有相应的权限,他就不能执行相应的操作。例如,根目录“/”中的文件只能由root用户修改。如果是普通用户修改,会提示你没有权限。比如我们想在根目录“/”下创建一个文件mytest,使用命令“touch mytest”。结果如图所示:
创建文件
在图中,我以用户“zuozhongkai”在根目录“/”创建文件 mytest,结果提示我无法创建“mytest”,因为权限不够,因为只有 root 用户才能在根目录“/”下创建文件。我们可以使用命令“sudo”命令暂时切换到 root 用户,这样就可以在根目录“/”下创建文件 mytest 了,如图所示:
图中我用用户“左中凯”在根目录“/”下创建了文件mytest,结果表明我没有足够的权限无法创建“mytest”,因为只有root用户才能在根目录“/”下创建文件。我们可以使用命令“sudo”命令临时切换到root用户,这样就可以在根目录“/”下创建文件mytest,如图所示:
使用sudo命令创建文件。
在图中我们使用命令“sduo”以后就可以在根目录“/”创建文件 mytest,在进行其它的操作的时候,遇到提示权限不够的时候都可以使用 sudo 命令暂时以 root 用户身份去执行。上面我们讲了,文件的权限有三种:读(r)、写(w)和执行(x),除了用 r、w 和 x 表示以外,我们也可以使用二进制数表示,三种权限就可以使用 3 位二进制数来表示,一种权限对应一个二进制位,如果该位为 1 就表示具备此权限,如果该位为 0 就表示没不具备此权限,如表所示:
在图中,在我们使用命令“sduo”之后,我们可以在根目录“/”中创建文件mytest。在进行其他操作时,当提示权限不足时,我们可以使用sudo命令以root用户身份临时执行。如上所述,文件有三种权限:读(R)、写(W)和执行(X)。除了R,W,X,我们还可以用二进制数。三种权限可以用三个二进制数来表示。一个权限对应一个二进制位。如果该位为1,则表示您拥有该权限。如果该位为0,说明你没有这个权限。
文件权利的数字表示方法
如果做过单片机开发的话,就会发现和单片机里面的寄存器位一样,将三种权限 r、w 和x进行不同的组合,即可得到不同的二进制数和八进制数,3 位权限可以组出 8 种不同的权限组合,如表所示:
如果你做过单片机的开发,你会发现,和单片机中的寄存器位一样,把R、W、X三种权限以不同的方式组合起来,可以得到不同的二进制数和八进制数,三种权限可以组合成八种不同的权限组合,如下表所示:
所有文件权限的组合
权限对应的八进制数是每个权限对应的位数之和。例如,权限rwx是4+2+1=7。前一个文件test.c的权限是“rw-rw-r –,所以它的十进制表示是:664。
表中权限对应的八进制数是每个权限对应的位数之和,例如权限rwx为
4+2+1=7。前一个文件test.c的权限是“rw-rw-r –,所以它的十进制表示是:664。
另外我们也开始使用 a、u、g 和 o 表示文件的归属关系,用=、+和-表示文件权限的变化,如表所示:
另外,我们也开始用A、U、G、O来表示文件的归属,用=、+和-来表示文件权限的变更,如下表所示:
修改字母表示的权限
对于文件test.c,我们想修改它的home用户(左仲恺)对它有可执行权限,那么我们可以使用:u+x .如果你想设置home用户和它所属的用户组都有可执行权限,你可以使用:gu+x。
我们也可以使用Shell来操作文件的权限管理,主要使用“chmod”和“chown”两个命令。我们一个一个来看。
1.权限修改命令chmod
命令“chmod”用于修改文件或文件夹的权限。权限可以用数字或字母表示。命令格式如下:
chmod [参数] [文件名/目录名]
主要参数如下:
-c效果类似于“-v”参数,但只回显更改的部分。
-f不显示错误消息。
-R递归处理,指定目录中的所有文件与其子文件目录一起处理。
-v显示指令的执行过程。
我们先来学习以下如何使用命令“chmod”修改一个文件的权限,在用户根目录下创建一个文件 test,然后查看其默认权限,操作如图所示:
首先,我们来学习如何使用命令“chmod”来修改一个文件的权限,在用户的根目录下创建一个文件测试,然后检查它的默认权限。操作如图所示:
创建文件测试
在图中我们创建了一个文件:test,这个文件的默认权限为“rw-rw-r–”,我们将其权限改为“rwxrw-rw”,对应数字就是 766,操作如下:
在图中,我们创建了一个文件:test,它的默认权限是“rw-rw-r –,我们将其权限改为“rwxrw-rw”,对应的数字是766。操作如下所示:
修改权限
图中我们修改文件测试的权限是766,修改后测试文件的权限是“rwxrw-rw-”,和我们设置的一样,表示权限修改成功。
上面我们是通过数字来修改权限的,我们接下来使用字母来修改权限,操作如图所示:
上面,我们通过数字来修改权限。接下来,我们使用字母来修改权限。操作如图所示:
使用字母修改文件权限
上面两个例子都是修改文件的权限,接下来我们修改文件夹的权限,新建一个 test 文件夹,在文件夹 test 里面创建 a.c、b.c 和 c.c 三个文件,如图所示:
上面两个例子就是修改文件的权限。接下来我们修改文件夹的权限,新建一个测试文件夹,在文件夹测试中创建a . c . b . c . c .三个文件,如图:
测试文件夹
在图中 test 文件夹下的文件 a.c、b.c 和 c.c 的权限均为“rw-rw-r–”,我们将 test 文件夹下的所有文件权限都改为“rwxrwxrwx”,也就是数字 777,操作如图所示:
图中测试文件夹下文件a . c . b . c . c .的权限为“rw-rw-r –,我们将test文件夹下的所有文件权限都改为“rwxrwxrwx”,编号为777。操作如图所示:
递归修改文件夹权限
2.文件的所有者修改命令chown。
命令chown用于修改文件或目录的所有者用户或用户组。命令格式如下:
chown [参数] [用户名.<组名>] [文件名/目录]
[用户名。:]表示要将文件或目录更改到哪个用户或用户组。用户名和组名由“.”分隔,其中可以省略用户名和组名中的任何一个。该命令的主要参数如下:
-c的效果类似于-v,但是只报告了更改的部分。
-f不显示错误消息。
-h只修改符号链接文件,不修改任何其他相关文件。
-R递归处理,将指定目录中的所有文件和子目录一起处理。
-v展示了这个过程。
在用户根目录下创建一个 test 文件,查看其文件夹所属用户和用户组,如图所示:
在用户根目录下创建一个测试文件,检查其文件夹所属的用户和用户组,如图所示:
测试文件信息查询
从图中可以看出,文件 test 的归属用户为zuozhongkai,所属的用户组为 zuozhongkai,将文件 test 归属用户改为 root 用户,所属的用户组也改为 root,操作如图所示:
从图中可以看出,文件测试属于左中凯,用户群是左中凯。将文件测试的用户组更改为root,将其用户组更改为root。操作如图所示:
修改文件主用户和主用户组。
命令显示也可以递归处理,以修改家庭用户和用户组的文件夹。它的用法与命令chown的用法相同,所以这里不做演示。