3

无法执行文件命令?权限不够?看这篇就够了

 2 years ago
source link: https://www.ubuntukylin.com/news/1733-cn.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

无法执行文件命令?权限不够?看这篇就够了

2022-01-19 09:49:20

110

Linux 系统上有严格的权限等级,如果权限过高导致误操作会增加系统的风险。所以对于了解 Linux 系统中的各种权限及如何分配合理的权限十分重要。

不同于 Windows 系统,Linux 是一个多用户系统,对每一个用户来说,个人隐私的保护十分重要,所以 Linux 系统为每个文件都添加了很多的属性,最大的作用就是维护数据的安全。就像在你的 Linux 系统中,和系统服务相关的文件通常只有 root 用户才能读或写,例如 /etc/shadow 文件,此文件记录了系统中所有用户的密码数据,重要程度不言而喻,所以绝不能让任何人读取以防止密码泄露,而只有 root 用户才有读取权限。

所以说,权限是用来约束用户对系统所做的操作。或者说,权限是指某个特定的用户具有特定的系统资源使用权力。

1.权限与用户的关系

在Linux系统中,权限用来定义用户能做什么、不能做什么。针对文件定义了三种身份,分别是属主 Owner、属组 Group、其他人 Others。每种身份又对应三种权限,分别是读 read、写 write、执行 execute。

优麒麟

Linux 中权限由 rwxr-xr-x 这 9 位字符来表示,主要控制文件的属主 Owner、属组 Group 以及其他用户 Others 的权限。

优麒麟

一个用户访问文件的流程如下:

1.判断用户是否为文件属主,如果是则按属主权限进行访问;

2.判断用户是否为文件属组,如果是则按属组权限进行访问;

3.如果不是文件属主、也不是该文件属组,则按其他人权限进行访问。

我们在使用 Linux 的过程中,时常会遇到一些关于属主和属组的问题,比如最常见的你想要在某个路径下执行某个指令,会经常出现“Permission denied”错误提示,这其实也是由权限问题导致的。

2.如何修改文件权限

修改权限简单来说就是:赋予某个用户或组-->能够以何种方式(读写执行)-->访问文件。

变更文件权限使用的是 chmod 这个命令,但是,权限的设置有两种方式,可以分别使用数字或者符号进行权限变更。对于 root 用户而言,可以修改任何人的文件权限;普通用户仅仅只能变更属于自己的文件权限。

(1)NUM 方式

我们可以使用数字来表示 Linux 文件的各个权限。

一般 r 表示 4;w 表示 2;x 表示 1,每种身份各自的权限是需要累加的,比如 rwx 就表示 4+ 2 + 1 = 7。比如我们最常见的 chmod777 它就表示赋予所有的权限,也就是说谁都能看/写/执行,但是这种文件也存在极大的安全问题。

示例

●  设定文件权限 644,rw-r--r--

●  设定文件权限 600,rw-------

●  设定目录权限为 755,递归授权 rwxr-xr-x

优麒麟

(2)UGO 方式

九种文件权限分别对应着:user、group 和 others,所以我们可以借由 u,g,o 来代表三种身份的权限。除此之外,a 代表 all 即全部的身份。

示例:

●  给文件所有人添加读写执行权限: chmod a=rwx file

●  取消文件的所有权限: chmod a=-rwx file

●  属主读写执行,属组读写,其他人无权限: chmod u=rwx,g=rw,o=- file

●  属主属组读写执行,其他人读权限: chmod ug=rwx,o=r file

优麒麟

(3)UGO 和 NUM 的区别

●  UGO 权限是把对文件的访问者做权限;

●  NUM 权限是对文件本身做权限。

3.修改文件权限的影响

Windows 系统下通过查看文件扩展名判断文件是否能够执行,比如 .exe,.bat, .com 等,但是在 Linux 中,判断文件是否具有可执行权限是直接判断文件有没有 x 这个权限,和文件名无关。

但是在 Linux 中,不只有文件具有权限,目录也有权限,文件是存放实际数据的地方,而目录是记录文件所在位置的清单,我们只有通过目录才能找到文件放在哪里!在 Linux 中权限的设定对文件和对目录的影响也是有区别的。

优麒麟

(1)对于文件:

●  r :可以读取文件内容(比如命令 cat more head tail)。

●  w :可以编辑文件(比如命令 vim echo ),但是不能删除文件,因为文件名没有放在自己的文件空间,而是放在了上一级的目录空间下。

●  x :可以执行。

(2)对于目录:

●  r:可以查询目录下的文件(比如命令 ls  ll)。

●  w:具有修改目录结构的权限,比如新建文件和目录,删除此目录下文件和 目录,重命名此目录下文件和目录,剪切和复制(比如命令 cp mv touch rm)。

●  x:目录有执行权限但是不能运行,可以进入目录(cd 命令)。

对文件来说最高权限是 x,对于目录来说最高权限是 w,一般给目录赋予权限 0,5(rx),7(rxw),赋予 4,1,6 都是没有意义的。对于文件能否删除,首先要对目录具有执行权限,同时对文件也具有执行权限。

chown 命令:用来改变文件或目录的所有者和所属用户组。

chgrp 命令:用来改变文件或目录的所属的用户组。

示例

(1)chown(changeowner)

准备环境,创建文件和目录;

修改所属主为 bin;

修改所属组为 adm;

修改目录所属主为 root,所属组为 root,并进行递归授权。

优麒麟

(2)chgrp(changegroup)

准备环境,创建文件和目录;

修改所属组为 adm。

优麒麟

本文介绍了几种常用的权限命令,掌握一些基础的 Linux 知识有助于我们更好的使用系统。需要注意的是,不要随意更改系统文件夹的权限,这样可能会导致您的系统某些功能无法正常使用。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK