课堂练习:环境体验——3、Linux 权限管理

任务描述

本关任务:根据所学知识,完成文件权限的修改。

相关知识

为了完成本关任务,你需要掌握:

  1. 如何创建和删除用户以及用户的权限管理;
  2. 如何设置文件的访问权限。

Linux的权限管理主要分为两类:用户和文件。接下来我们会对这两类进行详细介绍。

用户管理

从广义上讲,Linux系统账户包括用户账号和组账号两类。

用户账号又分为普通用户账号和超级用户账号(root)。root 用户在系统内是属于独一无二的超级管理员,(相当于 Windows 中的 System 最高权限)。

而普通用户在相关的操作中需要 ROOT 的许可。而 root 用户可以拥有所有系统权限。用户可以被允许使用 sudo 命令,临时赋予 root 权限。

创建用户

Linux中使用 useradd 命令来创建一个新用户。

命令格式格式:useradd [命令参数] 参数

常见命令参数:

  1. -d<登入目录>:指定用户登入时的启始目录;
  2. -D:查看或变更预设值;
  3. -g<群组>:指定用户所属的群组;
  4. -m:自动建立用户的登入目录;
  5. -M:不要自动建立用户的登入目录;
  6. -s:指定用户登入后所使用的shell。

useradd必须以 root 权限才能执行,如果是普通用户想创建一个新用户时,需要在命令前加sudo命令来提升权限为 root 权限。

我们通过下面的几个案例来掌握如何创建用户。

创建一个名为 edu 的用户:

Linux用户信息是保存在/etc/passwd文件中,我们可以使用命令tail /etc/passwd查看/etc/passwd文件最后几行中是否存在刚刚新创建的edu用户信息。

用户密码管理

我们创建完一个新用户后,往往还需要为该用户设置一个登录密码,我们使用 passwd 命令修改用户密码

命令格式:passwd 参数 用户名

常见命令参数:

  1. -d 删除密码;
  2. -l 停止账号使用;
  3. -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 用户。 常见命令参数

  1. -c\<指令\> 或 --command=\<指令\>:执行完指定的指令后,即恢复原来的身份;
  2. -l 或 --login:改变身份时,也同时变更工作目录,以及 HOME,SHELL,USER,logname。此外,也会变更 PATH 变量;
  3. -m,-p 或 --preserve-environment:变更身份时,不要变更环境变量;
  4. -s\<shell\> 或 --shell=\<shell\>:指定要执行的 shell。

su命令所有使用者都可以执行。

使用exit命令退出当前用户:

删除用户

Linux中使用userdel命令来删除一个已经存在的用户。

命令格式:userdel 参数 用户名

常见命令参数:

  1. -f:强制删除用户,即使用户当前已登录;
  2. -r:删除用户的同时,删除与用户相关的所有文件。

userdel必须以 root 权限才能执行,如果是普通用户想使用该命令时,需要在命令前加sudo命令来提升权限为 root 权限。

使用userdel命令删除一个已经存在的用户 edu,并且自动删除其家目录文件。

文件管理

Linux系统中的每个文件都有访问许可权限,文件的访问权限分为只读,只写和可执行三种。

只读权限表示只允许读其内容,而禁止对其做任何的更改操作。

只写权限表示允许修改文件的内容。

可执行权限表示允许将该文件作为一个程序执行。

每一文件的访问权限都有三组,每组用三位表示,分别为文件所属主的读、写和执行权限;与属主同组的用户的读、写和执行权限;系统中其他用户的读、写和执行权限。 linux文件有不同的颜色,不同的颜色可以用于区分文件的类型,但是需要为文件配置相应的权限,否则可执行文件会出现无法执行的情况。 蓝色代表目录,绿色代表可执行文件,红色表示压缩文件,浅蓝色表示链接文件,灰色表示其他文件,红色闪烁表示链接的文件有问题了,黄色表示设备文件。

当用ls -lll命令显示文件的详细信息时,最左边的一列为文件的访问权限。例如显示 test 文件详细信息:

修改文件权限

Linux中使用chmod命令来修改文件权限。

文字设定法具体命令如下:

chmod [who] [ + 或 - 或 = ] [mode] 文件名

who 参数如下:

  1. u 表示"用户(user)",即文件或目录的所有者;
  2. g 表示"同组(group)用户",即与文件属主有相同组ID的所有用户;
  3. o 表示"其他(others)用户";
  4. a 表示"所有(all)用户",它是系统默认值。

操作符如下:

  1. +:添加某个权限;
  2. -:取消某个权限;
  3. =:赋予给定权限并取消其他所有权限。

mode 参数如下:

  1. r 可读;
  2. w 可写;
  3. x 可执行。

数字设定法具体命令如下:

chmod [mode] 文件名

mode 为具体的数字。

首先了解用数字表示的属性的含义:0 表示没有权限,1 表示可执行权限,2 表示可写权限,4 表示可读权限,然后将其相加。所以数字属性的格式应为 3 个从 0 到 7 的八进制数,其顺序是 u、g 和 o。

我们通过几个案例来为大家详细展示该命令的使用:

  1. 创建一个名为 testFile 的文件,将该文件的所有用户权限设置为仅读权限,可以使用如下命令:
  1. 将文件 testFile 的所有用户权限设置为可读可写,同组用户权限设置为只读,可以使用如下命令:
  1. 将文件 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
相关推荐
秦jh_13 分钟前
【Linux】多线程(概念,控制)
linux·运维·前端
yaosheng_VALVE34 分钟前
稀硫酸介质中 V 型球阀的材质选择与选型要点-耀圣
运维·spring cloud·自动化·intellij-idea·材质·1024程序员节
看山还是山,看水还是。1 小时前
Redis 配置
运维·数据库·redis·安全·缓存·测试覆盖率
扣得君1 小时前
C++20 Coroutine Echo Server
运维·服务器·c++20
keep__go2 小时前
Linux 批量配置互信
linux·运维·服务器·数据库·shell
矛取矛求2 小时前
Linux中给普通账户一次性提权
linux·运维·服务器
Fanstay9852 小时前
在Linux中使用Nginx和Docker进行项目部署
linux·nginx·docker
大熊程序猿2 小时前
ubuntu 安装kafka-eagle
linux·ubuntu·kafka
jieshenai2 小时前
使用VSCode远程连接服务器并解决Neo4j无法登陆问题
服务器·vscode·neo4j
渗透测试老鸟-九青2 小时前
通过投毒Bingbot索引挖掘必应中的存储型XSS
服务器·前端·javascript·安全·web安全·缓存·xss