任务描述
本关任务:根据所学知识,完成文件权限的修改。
相关知识
为了完成本关任务,你需要掌握:
- 如何创建和删除用户以及用户的权限管理;
- 如何设置文件的访问权限。
Linux
的权限管理主要分为两类:用户和文件。接下来我们会对这两类进行详细介绍。
用户管理
从广义上讲,Linux
系统账户包括用户账号和组账号两类。
用户账号又分为普通用户账号和超级用户账号(root)。root 用户在系统内是属于独一无二的超级管理员,(相当于 Windows 中的 System 最高权限)。
而普通用户在相关的操作中需要 ROOT 的许可。而 root 用户可以拥有所有系统权限。用户可以被允许使用 sudo 命令,临时赋予 root 权限。
创建用户
Linux
中使用 useradd 命令来创建一个新用户。
命令格式格式:useradd [命令参数] 参数
常见命令参数:
-d<登入目录>:指定用户登入时的启始目录;
-D:查看或变更预设值;
-g<群组>:指定用户所属的群组;
-m:自动建立用户的登入目录;
-M:不要自动建立用户的登入目录;
-s:指定用户登入后所使用的shell。
useradd
必须以 root 权限才能执行,如果是普通用户想创建一个新用户时,需要在命令前加sudo
命令来提升权限为 root 权限。
我们通过下面的几个案例来掌握如何创建用户。
创建一个名为 edu 的用户:
Linux
用户信息是保存在/etc/passwd
文件中,我们可以使用命令tail /etc/passwd
查看/etc/passwd
文件最后几行中是否存在刚刚新创建的edu
用户信息。
用户密码管理
我们创建完一个新用户后,往往还需要为该用户设置一个登录密码,我们使用 passwd 命令修改用户密码
命令格式:passwd 参数 用户名
常见命令参数:
-d 删除密码;
-l 停止账号使用;
-S 显示密码信息。
passwd
必须以 root 权限才能执行,如果是普通用户想执行passwd
时,需要在命令前加sudo
命令来提升权限为 root 权限。
为 edu 用户设置密码:123123
使用passwd
命令为 edu 用户设置密码时,可以看到需要输入两次密码,目的是为了确保两次输入的密码一致。
Linux
中用户的登录密码是存放在/etc/shadow
文件中,/etc/shadow
文件中存放的是加密过后的密码,所以在/etc/shadow
文件中看到的密码是加密过后的密文。
我们同样可以使用passwd
命令来清除用户的密码。
使用passwd
命令清除用户 test 的登录密码,使用tail -n 1 /etc/shadow
命令查看/etc/shadow
文件的最后一行可以看出 test 用户密码部分为空,此时 test 用户是没有密码的。
用户登录
当我们在Linux
中添加用户后,我们可以使用该用户登录系统。
su
命令用于切换当前用户身份到其他用户身份,变更时须输入所要变更的用户帐号的密码。 当使用su
命令切换用户后,使用exit
命令退出当前身份,返回原有登录用户身份。 注:如果当前用户身份是 root,则使用 su 命令切换到其他用户的时候不需要相应用户的密码。 命令格式:su 参数 用户名
参数为登录的用户名,如果没有参数,则默认切换为 root 用户。 常见命令参数
-c\<指令\> 或 --command=\<指令\>:执行完指定的指令后,即恢复原来的身份;
-l 或 --login:改变身份时,也同时变更工作目录,以及 HOME,SHELL,USER,logname。此外,也会变更 PATH 变量;
-m,-p 或 --preserve-environment:变更身份时,不要变更环境变量;
-s\<shell\> 或 --shell=\<shell\>:指定要执行的 shell。
su
命令所有使用者都可以执行。
使用exit
命令退出当前用户:
删除用户
Linux
中使用userdel
命令来删除一个已经存在的用户。
命令格式:userdel 参数 用户名
常见命令参数:
-f:强制删除用户,即使用户当前已登录;
-r:删除用户的同时,删除与用户相关的所有文件。
userdel
必须以 root 权限才能执行,如果是普通用户想使用该命令时,需要在命令前加sudo
命令来提升权限为 root 权限。
使用userdel
命令删除一个已经存在的用户 edu,并且自动删除其家目录文件。
文件管理
Linux
系统中的每个文件都有访问许可权限,文件的访问权限分为只读,只写和可执行三种。
只读权限表示只允许读其内容,而禁止对其做任何的更改操作。
只写权限表示允许修改文件的内容。
可执行权限表示允许将该文件作为一个程序执行。
每一文件的访问权限都有三组,每组用三位表示,分别为文件所属主的读、写和执行权限;与属主同组的用户的读、写和执行权限;系统中其他用户的读、写和执行权限。 linux
文件有不同的颜色,不同的颜色可以用于区分文件的类型,但是需要为文件配置相应的权限,否则可执行文件会出现无法执行的情况。 蓝色代表目录,绿色代表可执行文件,红色表示压缩文件,浅蓝色表示链接文件,灰色表示其他文件,红色闪烁表示链接的文件有问题了,黄色表示设备文件。
当用ls -l
或ll
命令显示文件的详细信息时,最左边的一列为文件的访问权限。例如显示 test 文件详细信息:
修改文件权限
Linux
中使用chmod
命令来修改文件权限。
文字设定法具体命令如下:
chmod [who] [ + 或 - 或 = ] [mode] 文件名
who 参数如下:
u 表示"用户(user)",即文件或目录的所有者;
g 表示"同组(group)用户",即与文件属主有相同组ID的所有用户;
o 表示"其他(others)用户";
a 表示"所有(all)用户",它是系统默认值。
操作符如下:
+:添加某个权限;
-:取消某个权限;
=:赋予给定权限并取消其他所有权限。
mode 参数如下:
r 可读;
w 可写;
x 可执行。
数字设定法具体命令如下:
chmod [mode] 文件名
mode 为具体的数字。
首先了解用数字表示的属性的含义:0 表示没有权限,1 表示可执行权限,2 表示可写权限,4 表示可读权限,然后将其相加。所以数字属性的格式应为 3 个从 0 到 7 的八进制数,其顺序是 u、g 和 o。
我们通过几个案例来为大家详细展示该命令的使用:
- 创建一个名为 testFile 的文件,将该文件的所有用户权限设置为仅读权限,可以使用如下命令:
- 将文件 testFile 的所有用户权限设置为可读可写,同组用户权限设置为只读,可以使用如下命令:
- 将文件 testFile 的权限设置为所有用户可读可写可执行,同组用户设置为可读可执行,其他用户设置为可读,可以使用如下命令:
以上的权限我们是针对所有用户的,我们也可以针对用户、同组用户、其他用户,只用将上面命令的 a 替换成相应的参数即可。
到了这里,针对文件的权限就讲解完成了,Linux
奉行一切皆文件,所以目录的权限修改也是如此。
编程要求
打开右侧图形化界面的命令行,在命令行中完成如下功能:
- 在 /root 目录下创建 oldFile1、oldFile2、oldFile3、oldFile4 四个文件;
- 给 oldFile1 增加所有者可执行权限;
- 将 oldFile2 的同组用户权限删除可读权限;
- 为系统已存在文件 oldFile3 的其他组用户权限添加可执行权限;
- 将系统已存在文件 oldFile4 的权限设置所有者权限为可读,同组用户权限为可写,其他用户权限为可执行。
测试说明
平台会对您的执行结果进行检测,如果测试结果与预期输出一致,则算通关。
开始你的任务吧,祝你成功!
实验答案
bash
cd /root
touch oldFile1
touch oldFile2
touch oldFile3
touch oldFile4
chmod u+x oldFile1
chmod g-r oldFile2
chmod o+x oldFile3
chmod 421 oldFile4