百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 优雅编程 > 正文

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

sinye56 2025-01-09 15:57 11 浏览 0 评论

关注优麒麟,更多干货等着你!

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 知识有助于我们更好的使用系统。需要注意的是,不要随意更改系统文件夹的权限,这样可能会导致您的系统某些功能无法正常使用。

相关推荐

程序员:JDK的安装与配置(完整版)_jdk的安装方法

对于Java程序员来说,jdk是必不陌生的一个词。但怎么安装配置jdk,对新手来说确实头疼的一件事情。我这里以jdk10为例,详细的说明讲解了jdk的安装和配置,如果有不明白的小伙伴可以评论区留言哦下...

Linux中安装jdk并配置环境变量_linux jdk安装教程及环境变量配置

一、通过连接工具登录到Linux(我这里使用的Centos7.6版本)服务器连接工具有很多我就不一一介绍了今天使用比较常用的XShell工具登录成功如下:二、上传jdk安装包到Linux服务器jdk...

麒麟系统安装JAVA JDK教程_麒麟系统配置jdk

检查检查系统是否自带java在麒麟系统桌面空白处,右键“在终端打开”,打开shell对话框输入:java–version查看是否自带java及版本如图所示,系统自带OpenJDK,要先卸载自带JDK...

学习笔记-Linux JDK - 安装&配置

前提条件#检查是否存在JDKrpm-qa|grepjava#删除现存JDKyum-yremovejava*安装OracleJDK不分系统#进入安装文件目...

Linux新手入门系列:Linux下jdk安装配置

本系列文章是把作者刚接触和学习Linux时候的实操记录分享出来,内容主要包括Linux入门的一些理论概念知识、Web程序、mysql数据库的简单安装部署,希望能够帮到一些初学者,少走一些弯路。注意:L...

测试员必备:Linux下安装JDK 1.8你必须知道的那些事

1.简介在Oracle收购Sun后,Java的一系列产品就被整合到Oracle官网中,打开官网乍眼一看也不知道去哪里下载,还得一个一个的摸索尝试,而且网上大多数都是一些Oracle收购Sun前,或者就...

Linux 下安装JDK17_linux 安装jdk1.8 yum

一、安装环境操作系统:JDK版本:17二、安装步骤第一步:下载安装包下载Linux环境下的jdk1.8,请去官网(https://www.oracle.com/java/technologies/do...

在Ubuntu系统中安装JDK 17并配置环境变量教程

在Ubuntu系统上安装JDK17并配置环境变量是Java开发环境搭建的重要步骤。JDK17是Oracle提供的长期支持版本,广泛用于开发Java应用程序。以下是详细的步骤,帮助你在Ubuntu系...

如何在 Linux 上安装 Java_linux安装java的步骤

在桌面上拥抱Java应用程序,然后在所有桌面上运行它们。--SethKenlon(作者)无论你运行的是哪种操作系统,通常都有几种安装应用程序的方法。有时你可能会在应用程序商店中找到一个应用程序...

Windows和Linux环境下的JDK安装教程

JavaDevelopmentKit(简称JDK),是Java开发的核心工具包,提供了Java应用程序的编译、运行和开发所需的各类工具和类库。它包括了JRE(JavaRuntimeEnviro...

linux安装jdk_linux安装jdk软连接

JDK是啥就不用多介绍了哈,外行的人也不会进来看我的博文。依然记得读大学那会,第一次实验课就是在机房安装jdk,编写HelloWorld程序。时光飞逝啊,一下过了十多年了,挣了不少钱,买了跑车,娶了富...

linux安装jdk,全局配置,不同用户不同jdk

jdk1.8安装包链接:https://pan.baidu.com/s/14qBrh6ZpLK04QS8ogCepwg提取码:09zs上传文件解压tar-zxvfjdk-8u152-linux-...

运维大神教你在linux下安装jdk8_linux安装jdk1.7

1.到官网下载适合自己机器的版本。楼主下载的是jdk-8u66-linux-i586.tar.gzhttp://www.oracle.com/technetwork/java/javase/downl...

window和linux安装JDK1.8_linux 安装jdk1.8.tar

Windows安装JDK1.8的步骤:步骤1:下载JDK打开浏览器,找到JDK下载页面https://d.injdk.cn/download/oraclejdk/8在页面中找到并点击“下载...

最全的linux下安装JavaJDK的教程(图文详解)不会安装你来打我?

默认已经有了linux服务器,且有root账号首先检查一下是否已经安装过java的jdk任意位置输入命令:whichjava像我这个已经安装过了,就会提示在哪个位置,你的肯定是找不到。一般我们在...

取消回复欢迎 发表评论: