当前位置: 首页 > news >正文

Linux 基础命令-文件权限与所有权

1. 文件权限概述

在Linux中,每个文件和目录都有与之关联的权限和所有权,来控制谁可以访问、修改或执行文件。文件权限与所有权可以防止未经授权的用户对文件进行访问或修改。

1.1 文件权限的组成

每个文件在Linux系统中都有三种类型的权限:

  • 读取权限(read, r):允许查看文件内容或列出目录内容。
  • 写入权限(write, w):允许修改文件内容或在目录中创建、删除文件。
  • 执行权限(execute, x):允许执行文件或进入目录。

文件的权限分为三组:

  1. 文件所有者(owner):文件的创建者,拥有对文件的完全控制。
  2. 同组用户(group):文件所属的用户组中的所有用户。
  3. 其他用户(others):系统中的其他所有用户。

1.2 文件权限的表示方式

文件权限可以通过两种方式表示:

  • 符号模式:用字母rwx分别表示读、写和执行权限,文件权限用三个三位组的符号表示,如rwxr-xr--。其中:

    • rwx:代表所有者的权限。
    • r-x:代表同组用户的权限。
    • r--:代表其他用户的权限。
  • 数字模式:用八进制数字表示文件权限,每种权限对应的数字如下:

    • r = 4
    • w = 2
    • x = 1
    • - = 0

    文件权限以三组数字来表示,如755,其中:

    • 7 = 4 + 2 + 1,即rwx(所有者权限)。
    • 5 = 4 + 1,即r-x(同组用户权限)。
    • 5 = 4 + 1,即r-x(其他用户权限)。

2. 查看文件权限与所有权

2.1 使用 ls -l 命令

ls -l 命令可以详细显示文件或目录的权限、所有权及其他信息。

$ ls -l

输出示例:

-rw-r--r--  1 user  group  4096 Sep  9 12:00 file.txt

解释:

  • -rw-r--r--:文件的权限。第一位表示文件类型(-表示文件,d表示目录)。接下来的九位分为三组,每组表示所有者、同组用户和其他用户的权限。
  • 1:硬链接数。
  • user:文件的所有者。
  • group:文件所属的用户组。
  • 4096:文件大小(以字节为单位)。
  • Sep 9 12:00:文件的修改时间。
  • file.txt:文件名。

2.2 使用 stat 命令

stat 命令提供了更详细的文件状态信息,包括权限、所有者、文件大小等。

$ stat file.txt

输出示例:

  File: ‘file.txt’Size: 4096       Blocks: 8          IO Block: 4096   regular file
Device: 802h/2050d Inode: 123456      Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/ user)   Gid: ( 1000/ group)
Access: 2023-09-09 12:00:00.000000000 +0000
Modify: 2023-09-09 12:00:00.000000000 +0000
Change: 2023-09-09 12:00:00.000000000 +0000Birth: -

3. 修改文件权限

3.1 使用 chmod 命令

chmod(change mode)命令用于更改文件或目录的权限。可以使用符号模式或数字模式来修改权限。

3.1.1 使用符号模式修改权限

符号模式允许更灵活地修改文件权限,使用u(用户)、g(组)、o(其他用户)和a(所有人)进行操作。

  • +:添加权限。
  • -:移除权限。
  • =:设置为指定权限。

示例:

  • 给文件所有者添加执行权限:
$ chmod u+x file.txt
  • 移除同组用户的写权限:
$ chmod g-w file.txt
  • 给所有人设置读权限:
$ chmod a+r file.txt
3.1.2 使用数字模式修改权限

数字模式更直观,直接设置文件权限的八进制表示。

示例:

  • 将文件的权限设置为755(所有者rwx,组用户r-x,其他用户r-x):
$ chmod 755 file.txt
  • 将文件的权限设置为644(所有者rw-,组用户r--,其他用户r--):
$ chmod 644 file.txt

3.2 修改目录权限

chmod命令同样适用于目录。注意,给目录添加执行权限表示用户可以进入该目录。

  • 递归修改目录及其子文件的权限:
$ chmod -R 755 /path/to/directory

4. 修改文件所有权

4.1 使用 chown 命令

chown(change owner)命令用于更改文件或目录的所有者和所属组。

4.1.1 修改文件所有者

示例:

  • 将文件的所有者修改为newuser
$ chown newuser file.txt
4.1.2 修改文件所属组

使用冒号(:)来指定用户组。

  • 将文件的所属组修改为newgroup
$ chown :newgroup file.txt
4.1.3 同时修改文件所有者和所属组
  • 将文件的所有者修改为newuser,并将所属组修改为newgroup
$ chown newuser:newgroup file.txt

4.2 使用 chgrp 命令

chgrp(change group)命令专门用于修改文件或目录的所属组。

  • 修改文件的所属组为newgroup
$ chgrp newgroup file.txt

4.3 递归修改目录的所有权

  • 使用-R选项递归修改目录及其子目录和文件的所有者和所属组:
$ chown -R newuser:newgroup /path/to/directory

5. 特殊权限

Linux文件系统还支持一些特殊的权限设置,如SUIDSGID和粘滞位(Sticky Bit)。这些权限主要用于特殊的场景,如共享文件夹或需要临时提高权限的程序。

5.1 SUID(Set User ID)

SUID是文件的特殊权限,当设置了SUID位的文件被执行时,该文件将以文件所有者的身份运行,而不是以执行者的身份运行。

  • 设置SUID权限:
$ chmod u+s file.txt

5.2 SGID(Set Group ID)

SGID是目录的特殊权限,当目录设置了SGID位时,所有在该目录下创建的文件将继承该目录的用户组,而不是创建者的默认组。

  • 设置SGID权限:
$ chmod g+s /path/to/directory

5.3 粘滞位(Sticky Bit)

粘滞位通常用于共享目录。当目录设置了粘滞位后,只有文件的所有者或root用户才能删除该目录中的文件,即使其他用户对目录有写权限。

  • 设置粘滞位:
$ chmod +t /path/to/directory
  • 查看粘滞位:当粘滞位生效时,目录权限的最后一位显示为t
drwxrwxrwt 2 root root 4096 Sep 9 12:00 /tmp

6. 文件权限管理示例

下面是几个常见场景的权限管理示例:

6.1 共享文件夹

权限设置

假设我们有一个共享文件夹/shared,所有用户都可以写入文件,但不能删除其他用户的文件。

  1. 创建共享文件夹:
$ mkdir /shared
  1. 设置目录权限为777,允许所有用户读、写和执行(进入)该目录:
$ chmod 777 /shared
  1. 设置粘滞位,防止用户删除其他用户的文件:
$ chmod +t /shared

6.2 限制文件访问权限

假设有一个敏感文件secret.txt,只有文件所有者能读取和修改该文件,其他用户不能访问。

  1. 创建文件:
$ touch secret.txt
  1. 设置权限为600,只有文件所有者有读写权限:
$ chmod 600 secret.txt

7. 总结

Linux文件权限和所有权机制是保障系统安全的关键部分。通过使用chmodchownls -l等命令,用户可以灵活地管理文件的读写执行权限及所有权。

相关文章:

Linux 基础命令-文件权限与所有权

1. 文件权限概述 在Linux中,每个文件和目录都有与之关联的权限和所有权,来控制谁可以访问、修改或执行文件。文件权限与所有权可以防止未经授权的用户对文件进行访问或修改。 1.1 文件权限的组成 每个文件在Linux系统中都有三种类型的权限&#xff1a…...

气压测试实验(用IIC)

I2C: 如果没有I2c这类总线,连接方法可能会如下图: 单片机所有的通讯协议,无非是建立在引脚(高低电平的变换高低电平持续的时间)这二者的组合上,i2c 多了一个clock线,负责为数据传输打节拍。 (i2…...

C++ lambda闭包消除类成员变量

原文链接:https://blog.csdn.net/qq_51470638/article/details/142151502 一、背景 在面向对象编程时,常常要添加类成员变量。 然而类成员一旦多了之后,也会带来干扰。 拿到一个类,一看成员变量好几十个,就问你怕不…...

等待唤醒机制和阻塞队列

1. 等待唤醒机制 由于线程的随机调度,可能会出现“线程饿死”的问题:也就是一个线程加锁执行,然后解锁,其他线程抢不到,一直是这个线程在重复操作 void wait() 当前线程等待,直到被其他线程唤醒 void no…...

IO多路复用是如何处理多个客户端同时访问一个数据的

1. 原理概述 IO多路复用通过单个线程或进程监听多个文件描述符的状态变化,当某个文件描述符就绪(例如,有数据可读、可写或发生异常)时,线程或进程会收到通知,并对该文件描述符执行相应的IO操作。这种方式显…...

QT中使用UTF-8编码

在Qt中,确保应用程序使用UTF-8编码是非常重要的,尤其是在处理国际化和多语言文本时。以下是一些确保在Qt应用程序中使用UTF-8编码的方法: ### 1. 设置全局默认编码 在应用程序启动时,可以设置全局默认编码为UTF-8。这可以通过调…...

我对 monorepo 的一些思考

我对 monorepo 的一些思考 我对 monorepo 的一些思考 前言它的由来技术选型 管理工具语言与打包调试工具测试框架代码规范与质量控制本地引用与发包替换发包流程Github 相关配置部署 使用手册 功能特性总结如何使用?清除默认的包(可选)模板包介绍 packagesapps 更新…...

Java学习Day41:骑龙救!(springMVC)

springMVC与sevlet都是对应表现层web的,但是越复杂的项目使用SpringMVC越方便 基于Java实现MVC模型的轻量级web框架 目标: 小案例: 1.导入依赖 spring-context: 提供 Spring 框架的核心功能,如依赖注入、事件发布和其他应用上…...

Redis 常用命令总结

文章目录 目录 文章目录 1 . 前置内容 1.1 基本全局命令 KEYS EXISTS ​编辑 DEL EXPIRE TTL TYPE 1.2 数据结构和内部编码 2. String类型 SET GET MGET MSET SETNX INCR INCRBY DECR DECYBY INCRBYFLOAT 命令小结 内部编码 3 . Hash 哈希类型 HSET …...

Mysql SqlServer 分页

一、MySQL分页 SELECT column1, column2 FROM table ORDER BY column1 LIMIT Offset, Fetch; SELECT column1, column2 FROM table WHERE id BETWEEN StartId AND EndId ORDER BY column1; 二、Sql Server 分页 SELECT column1, column2 FROM table ORDER BY column1 OFFSE…...

电子支付原理

电子支付原理 1.电子支付概述2.线下支付概念和一般流程线下支付技术分类 3.线上支付概念和一般流程 参考自:https://www.topsec.com.cn/uploads/2023-10-08/49dab9d0-004b-4955-808a-d1c83998b8191696745486491.pdf 1.电子支付概述 电子支付通用支付流程一般涉及四…...

什么是OAuth 2.0?OAuth 2.0的工作流程是什么?与OAuth 1.0有哪些区别?

在浏览网页时,你肯定会遇到允许你使用社交媒体账户登录的网站。此功能一般是使用流行的OAuth 2.0框架构建的。OAuth 2.0是对OAuth 1.0的彻底重写,OAuth 2.0与OAuth 1.0或1.1不向后兼容。 1. OAuth产生背景 为了更好的理解OAuth,我们假设有如…...

Unity+LeapMotion2的使用

开始吧 导入步骤1.到官网下载软件并安装2.安装插件3.场景中添加检测管理器4.场景中添加手部模型 更多细节 导入步骤 1.到官网下载软件并安装 地址 重启电脑后连接设备 可以看到连接成功 2.安装插件 (也可以看官方教程) Project—>PackageManag…...

【CanMV K230 AI视觉】 跌倒检测

【CanMV K230 AI视觉】 跌倒检测 跌倒检测 动态测试效果可以去下面网站自己看。 B站视频链接:已做成合集 抖音链接:已做成合集 跌倒检测 跌倒检测主要根据人体姿态来判断,可以用于老人、小孩跌倒监护。 实验名称:跌倒检测 实验…...

谈谈PCIe VID、DID、SSID、SSVID背后的智慧

PCIe Vendor ID 想了半天还是觉得从“ID是什么”这个问题开始比较好。那么ID是什么?ID就是身份。那身份又是什么?身份就是一个合理存在,用于区分不同个体。为什么叫“合理存在”呢?如果国家不给你发身份证,你就是黑户…...

9月11日

使用绘制事件完成钟表的绘制 头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include<QTcpSocket> #include<QMessageBox>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpub…...

昇腾310内存拷贝测试

目的 从服务器将数据拷贝到昇腾310 ai卡 结论 数据进入到服务器后的内存不能直接用昇腾acl接口拷贝到AI卡。 需要 1&#xff09;先用acl接口申请内存&#xff1b; 2&#xff09; 将数据拷贝到acl申请的内存 3&#xff09;用acl接口将数据拷贝到AI卡 makefile # Copyri…...

‘$store‘ is not defined.

vueX不知道是否发挥作用&#xff1f;this.$store获取不到store/index.js中的数据 原因&#xff1a;版本问题 vuex版本不对&#xff0c;获取不到store 默认版本说明vuevue3vueXvue4vuex4只能在vue3中使用 vue默认vue3版本&#xff0c;vuex默认vuex4版本&#xff0c;vuex4只能…...

如何利用Linux提升工作效率和安全性?

Linux&#xff0c;作为一款自由和开放源代码的操作系统&#xff0c;已经在全球范围内得到了广泛的应用。无论是服务器、云计算、物联网&#xff0c;还是超级计算机&#xff0c;Linux都扮演着重要的角色。本文将深入探讨Linux的应用场景&#xff0c;以及如何利用Linux提升工作效…...

初始Linux 和 各种常见指令

目录 Linux背景 1. 发展史 Linux发展历史 1.历史 2. 开源 Linux下基本指令 01. ls 指令 02. pwd命令 03. cd 指令 04. touch指令 05.mkdir指令&#xff08;重要&#xff09;&#xff1a; 06.rmdir指令 && rm 指令&#xff08;重要&#xff09;&#xff1a; …...

【稀疏矩阵】使用torch.sparse模块

文章目录 稀疏矩阵的格式coocsrcsc Construction of Sparse COO tensorsConstruction of CSR tensorsLinear Algebra operations&#xff08;稀疏与稠密之间混合运算&#xff09;Tensor methods and sparse&#xff08;与稀疏有关的tensor成员函数&#xff09;coo张量可用的ten…...

如何增加谷歌网站曝光率?

增加谷歌网站曝光率其实就是让更多的人在搜索相关内容时&#xff0c;能看到你的网站。首先你就要搞清楚用户在搜索什么&#xff0c;这样才能把正确的内容呈现在他们面前。首先&#xff0c;你得站在用户的角度思考&#xff0c;想想他们在搜索与你网站相关的信息时&#xff0c;可…...

虚幻中的c++(持续更新)

文章目录 虚幻中的cUPROPERTY参数 UFUNCTION参数 虚幻中的c UPROPERTY 是虚幻中用于声明属性的宏&#xff0c;它用于标记某个属性是一个虚幻托管的属性&#xff0c;并且可以在编辑器中进行访问和操作。其提供了一系列参数&#xff0c;用于定义属性的各种行为&#xff0c;例如是…...

83-MySQL 索引有几种

MySQL中的索引主要有以下几种&#xff1a; 普通索引&#xff1a;最基本的索引类型&#xff0c;没有唯一性的限制&#xff0c;可以通过多个字段创建复合索引。 唯一索引&#xff1a;与普通索引类似&#xff0c;但区别在于唯一索引的每一个索引值只对应唯一的数据记录。 主键索…...

文献解读-The trans-omics landscape of COVID-19

关键词&#xff1a;流行病学&#xff1b;基因测序&#xff1b;变异检测&#xff1b; 文献简介 标题&#xff08;英文&#xff09;&#xff1a;The trans-omics landscape of COVID-19 标题&#xff08;中文&#xff09;&#xff1a;COVID-19的跨组学全景 发表期刊&#xff1a…...

Unity核心实践小项目

要源码包的私信我。 简介 衔接Unity核心学习后的实操小项目 需求分析 准备工作 面板基类 为了能够控制一画布整体的透明度&#xff0c;所以需要给每个面板都添加一个 CanvasGroup组件 UI管理器 UGUI方面的参数设置 开始场景 场景搭建 直接用资源包搭建好的场景&#xff1a;…...

Avaloia 实现国产麒麟系统中文显示界面

最近在搞一个国产麒麟系统的接口对接&#xff0c;因为&#xff0c;接口内含复杂的签名验证&#xff0c;而且还是离线环境&#xff0c;所以&#xff0c;postman不是很好用。 就想着哪个方式好一些&#xff0c;主要是有选择图片的操作&#xff0c;所以&#xff0c;在Electron和A…...

pytest 生成allure测试报告

allure的安装 github地址 allure资产列表 windows下载.zip&#xff0c;解压并配置环境变量PATH&#xff1b;linux下载tar.gz&#xff0c;解压配置&#xff1b; allure作为pytest插件 # 安装 pip install allure-pytest# 执行单元测试&#xff0c;生成allure测试数据&…...

查询GPU版本以及PyTorch中使用单GPU和多GPU

文章目录 多GPU介绍GPU可用性及版本检查使用单个GPU使用多个GPU多GPU介绍 多GPU是指使用多个显卡来同时进行计算,以加速深度学习模型的训练和推断。每个GPU都有自己的内存和计算能力,通过同时利用多个GPU可以并行地执行模型的计算,从而提高整体的计算效率。 GPU可用性及版…...

基于SpringBoot+Vue的线上考试系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于JavaSpringBootVueMySQL的线上考试…...