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

news/2024/9/18 21:01:07/ 标签: 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等命令,用户可以灵活地管理文件的读写执行权限及所有权。


http://www.ppmy.cn/news/1525677.html

相关文章

使用Ansible进行多云环境的自动化部署与管理

使用Ansible进行多云环境的自动化部署与管理 引言 随着云计算技术的飞速发展,多云环境已经成为现代企业IT架构的主流选择。多云环境不仅提供了更高的灵活性和可用性,还能有效降低供应商锁定的风险。然而,多云环境的管理和部署复杂性也随之增…

vue devtools的使用

vue devtools的使用 Vue Devtools 是一个强大的浏览器扩展,旨在帮助你调试和开发 Vue.js 应用。它支持 Chrome 和 Firefox 浏览器,并提供了一些工具和功能,可以让你更轻松地查看和调试 Vue 应用的状态和行为。以下是如何安装和使用 Vue Devtools 的详细指南。 安装 Vue De…

《Python青少年趣味编程108例》书籍介绍

文章目录 前言为什么选择Python?书籍介绍文章目录配套资源 前言 在这个数字化飞速发展的时代,编程已经成为了一项不可或缺的技能。对于青少年而言,学习编程不仅能够培养逻辑思维、解决问题的能力,还能激发无限创意,让…

【PyQt6 应用程序】一键视频解说克隆字幕切割版

在当今数字时代,视频解说已经成为影视剧宣传和观众互动的重要手段。然而,手动制作高质量的影视剧解说视频需要大量的时间和精力。为了简化这一过程并提高生产效率,我们开发了基于PyQt6的应用程序“一键视频解说克隆字幕切割版”。该应用程序能够自动复刻别人的影视剧解说视频…

概率论原理精解【13】

文章目录 在度量空间中,连续映射概述一、度量空间与距离函数二、连续映射的定义三、连续映射的等价定义四、连续映射的性质五、应用与例子 球形邻域刻画一、球形邻域的定义二、连续映射的球形邻域刻画三、等价性证明四、应用与例子 将度量空间上的连续映射推广到拓扑…

软件测试面试从哪方面面试?

一、面试基础题 简述测试流程: 什么是软件测试?软件测试的目的与原则 问:软件生存周期及其模型是什么? 什么是软件质量? 自动化测试脚本开发的主要步骤: 目前主要的测试用例设计方法是什么? 常见的测试用例设计…

二次规划及其MATLAB实现

引言 二次规划(Quadratic Programming, QP)是一类重要的优化问题,其目标函数为二次函数,约束条件为线性不等式或等式。二次规划问题在工程、经济、金融等领域有广泛应用,如投资组合优化、人脸表情动画的权重求解、机械…

后端开发刷题 | 把数字翻译成字符串(动态规划)

描述 有一种将字母编码成数字的方式&#xff1a;a->1, b->2, ... , z->26。 现在给一串数字&#xff0c;返回有多少种可能的译码结果 数据范围&#xff1a;字符串长度满足 0<n≤90 进阶&#xff1a;空间复杂度 O(n)&#xff0c;时间复杂度 O(n) 示例1 输入&a…

HJ36字符串加密

提示&#xff1a;文章 文章目录 前言一、背景二、 2.1 2.2 总结 前言 前期疑问&#xff1a; 本文目标&#xff1a; 一、背景 最近 二、 2.1 HJ36字符串加密 解题 #include <stdio.h> #include <stdbool.h>int GetStrIndex(char c, char* dict, int len) {…

Python中给定一个数组a = [2,3,9,1,0],找出其中最大的一个数,并打印出来 求解?

Python有内置的max函数可以取最大值&#xff1a; max([2,3,9,1,0])也可以使用sorted先排序&#xff0c;再索引取出最大值&#xff1a; sorted([2,3,9,1,0])[-1]如果不用内置函数&#xff0c;自己排序算法来找出最大值&#xff0c;也有很多选择。 比如冒泡排序、循环排序、交…

算法设计(二)

1.归并排序 介绍 归并排序是建立在归并操作上的一种有效&#xff0c;稳定的排序算法&#xff0c;该算法是采用分治法的一个非常典型的应用。将已有序的子序列合并&#xff0c;得到完全有序的序列&#xff1b;即先使每个子序列有序&#xff0c;再使子序列段间有序。若将两个有…

【人工智能学习笔记】4_4 深度学习基础之生成对抗网络

生成对抗网络&#xff08;Generative Adversarial Network, GAN&#xff09; 一种深度学习模型&#xff0c;通过判别模型&#xff08;Discriminative Model&#xff09;和生成模型&#xff08;Generative Model&#xff09;的相互博弈学习&#xff0c;生成接近真实数据的数据分…

leecode100题-双指针-三数之和

给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所有和为 0 且不重复的三元组。 答案中不可以包含重复的三元组。 示例 1&#xff1a; 输入…

【Hot100】LeetCode—169. 多数元素

目录 1- 思路题目识别技巧 2- 实现⭐136. 只出现一次的数字——题解思路 3- ACM 实现 原题链接&#xff1a;169. 多数元素 1- 思路 题目识别 识别1 &#xff1a;统计数组中出现数量多余 [n/2] 的元素 技巧 值相同&#xff0c;则对 count 1&#xff0c;如果不相同则对值进行…

线性代数 第六讲 特征值和特征向量_相似对角化_实对称矩阵_重点题型总结详细解析

文章目录 1.特征值和特征向量1.1 特征值和特征向量的定义1.2 特征值和特征向量的求法1.3 特征值特征向量的主要结论 2.相似2.1 相似的定义2.2 相似的性质2.3 相似的结论 3.相似对角化4.实对称矩阵4.1 实对称矩阵的基本性质4.2 施密特正交化 5.重难点题型总结5.1 判断矩阵能否相…

D - 1D Country(AtCoder Beginner Contest 371)

题目链接: D - 1D Country (atcoder.jp) 题目描述: 数据范围: 输入输出: 题目分析: 典型的l, r 区间问题&#xff0c;即是前缀和问题&#xff0c;但是注意到数据范围, 数据范围1e-9 到 1e9 数据范围&#xff0c;要是从最小到最大直接for循环去模拟的话&#xff0c;时间复杂度…

使用iperf3测试局域网服务器之间带宽

文章目录 一、下载安装1、windows2、centos 二、使用0、参数详解1、centos 一、下载安装 1、windows https://iperf.fr/iperf-download.php 拉到最下面选最新版&#xff1a; 2、centos yum install iperf3二、使用 0、参数详解 服务器或客户端&#xff1a; -p, --port #…

Python+Pytest框架,“api_key.py文件怎么编写“?

1、在"api_keyword"文件夹下新增"api_key.py" import allure import requests import json import jsonpath from deepdiff import DeepDifffrom config import *allure.title("测试用例执行") class ApiKey:allure.step(">>>:开…

HTTP 协议和 APACHE 服务

WEB 服务基础 Internet 因特网 因特网是 Internet 的中文译名 在 20 世纪 60 年代&#xff08;冷战时期&#xff09;&#xff0c;美国国防部高等研究计划署&#xff08;ARPA&#xff09;出于军事上的目的&#xff0c;建立了 ARPA 网络&#xff0c;该网络由四个分布在不同地方…

大数据新视界 --大数据大厂之Kafka消息队列实战:实现高吞吐量数据传输

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…