Linux基础入门 --8 DAY

news/2024/9/17 7:12:02/ 标签: linux, 运维, 服务器

文件权限管理

设置文件的所有者chown

        格式:

chown [OPTION]... [OWNER][:[GROUP]] FILE...

chown [OPTION]... --reference=RFILE FILE...

        示例: 

chown admin(所有者):admin(所属组)f1.txt

chown admin(所有者).admin(所属组)f1.txt

chown --reference=f1.txt f2.txt 参考f1属性修改f2

chown -R admin:admin dir1(文件夹)   递归更改

设置文件所属组信息 chgrp

        格式:

chgrp [OPTION]... GROUP FILE...

chgrp [OPTION]... --reference=RFILE FILE...

        -R 递归

        范例:

chgrp admin f1.txt  <=> chown :admin f1.txt

文件权限

        文件权限说明:

r        Readable    

w        Writable       

x        execute       

        注意:用户的最终权限,是从左到右进行匹配,即,所有者,所属组,其他人,一旦匹配权限立即生效,不在向右查看其他权限(顺序匹配).

        对文件的权限: 

 r         可以使用文件查看类工具,比如cat,可获取其内容

w        可修改其内容

x         可以把文件提请内核启动为一个进程,即可以执行(运行)此文件

        对目录的权限:

r        可以使用ls查看此目录中的文件列表

w        可在此目录中创建文件,也可以删除此目录的文件

x        可以使用ls -l 命令查看此目录中的文件元数据(需配合r),可以cd进入此目录

X        只给目录权限,不给无执行权限的文件x权限

        数学法的权限:

r        4

w        2

x        1 

drwxr-xr-x. 2 root root  6 Sep  4 06:51 backup

        查看所属组及附属组存在存在的成员

[root@localhost ~]# groups wtj
wtj : wtj
[root@localhost ~]# groupmems -l -g root 

        ls <=> dir 

[root@localhost ~]# dir
backuo    backup    bc  bc.sh  dead.letter    err.log  -f  f1.log  test.log
[root@localhost ~]# ls
backuo  backup  bc  bc.sh  dead.letter  err.log  -f  f1.log  test.log

 修改权限Chown

chmod命令是Linux和Unix系统中用于改变文件或目录权限的重要工具。它允许用户设置谁可以读取、写入或执行文件。以下是chmod命令的详细解析:

一、权限类型

在Linux中,文件权限分为三类用户:

  • 文件所有者(owner):文件的创建者或拥有者。
  • 所属组(group):文件所属的组。
  • 其他用户(others):既不是文件所有者也不属于文件所属组的其他所有用户。

每类用户都可以被赋予读(r)、写(w)和执行(x)权限。这些权限的数值表示如下:

  • 读(r)= 4
  • 写(w)= 2
  • 执行(x)= 1

二、chmod命令的两种用法

1. 数字模式

使用数字来直接设置权限。权限值是将上述权限的数值相加得到的。例如,读+写=4+2=6,读+执行=4+1=5,写+执行=2+1=3,读+写+执行=4+2+1=7。

  • chmod 755 file.txt:设置file.txt的权限,使得文件所有者具有读、写和执行权限(7),所属组和其他用户具有读和执行权限(5)。
  • chmod 644 file.txt:设置file.txt的权限,使得文件所有者具有读和写权限(6),所属组和其他用户只有读权限(4)。
  • chmod 700 file.txt:设置file.txt的权限,使得只有文件所有者可以读、写和执行,其他人没有任何权限。
2. 字母模式

使用字母来设置权限,适用于更直观的权限修改。

  • u:代表文件所有者(user)。
  • g:代表所属组(group)。
  • o:代表其他用户(others)。
  • a:代表所有用户(all,即u+g+o)。
  • +:添加权限。
  • -:移除权限。
  • =:设置权限(覆盖现有权限)。

例如:

  • chmod u+x file.txt:给文件所有者添加执行权限。
  • chmod g-w file.txt:移除所属组的写权限。
  • chmod o+rwx file.txt:给其他用户添加读、写和执行权限。
  • chmod u=rwx,g=rx,o=r file.txt:设置文件所有者具有读、写和执行权限,所属组和其他用户具有读和执行权限,但所属组没有写权限。

三、常用选项

  • -R:递归修改目录及其子目录下的所有文件和目录权限。
  • -v:显示命令执行过程中修改的文件或目录的权限信息。
  • -c:只在修改了文件或目录的权限时才显示其详细信息。
  • -f:不显示错误信息。

四、注意事项

  • 使用chmod命令时,需要谨慎,因为错误的权限设置可能会影响文件的安全性和可访问性。
  • 只有文件的所有者或者root用户才能改变文件的权限。
  • 在使用数字模式时,确保理解每个数字所代表的权限组合。

五、总结

chmod命令是Linux和Unix系统中用于改变文件或目录权限的强大工具。通过数字模式和字母模式,用户可以灵活地设置文件或目录的访问权限,以满足不同的安全和管理需求。在使用时,需要注意权限设置的合理性和安全性,以避免潜在的风险。

新建文件目录的默认权限 

        umask的值可以用来保留创建文件权限

        实现方式:

                新建文件的默认权限:666-umask,如果所得结果某位存在执行奇数权限,则将其权限+1,偶数不变

                新目录的默认权限为:777-umask

        非特权用户umask默认为022

        root的umask默认是022

        查看umask

umask 

#模式方式显示

umask -S

#输出可被调用

umask -p

        修改umask

umask # 

        范例:
[root@localhost ~]# umask 755
[root@localhost ~]# umask
0755 

如果想永久生效可在家目录的.bashrc内设置.

Linux文件系统上的特殊权限

        前面介绍了三种常见权限:r , w , x 还有三种特殊权限:SUID ,SGID ,Sticky

        特殊权限SUID

三种特殊权限详解

  1. SUID(Set User ID)

    • 作用:当文件被执行时,进程的有效用户ID会被设置为文件的所有者ID,而不是执行者的用户ID。这允许普通用户以文件所有者的权限执行文件。
    • 表示方法:在文件权限的属主(user)部分,执行权限(x)位置如果变为小写s(s或S,S表示执行权限被关闭但仍设置了SUID),则表示该文件具有SUID权限。
    • 示例:如果/usr/bin/passwd文件具有SUID权限,则普通用户在执行passwd命令更改密码时,会以root用户的权限进行,因为/usr/bin/passwd的所有者是root
  2. SGID(Set Group ID)

    • 作用:与SUID类似,但应用于文件所属组。当文件被执行时,进程的有效组ID会被设置为文件的组ID。这通常用于目录,以确保在其中创建的文件和目录继承该目录的组ID。
    • 表示方法:在文件权限的所属组(group)部分,执行权限(x)位置如果变为小写s(s或S,S表示执行权限被关闭但仍设置了SGID),则表示该文件或目录具有SGID权限。
    • 示例:如果某个目录具有SGID权限,那么在该目录下创建的新文件和目录将继承该目录的组ID,而不是创建者的默认组ID。
  3. Sticky Bit(粘滞位)

    • 作用:在目录上设置时,只有目录的所有者、文件的所有者或超级用户才能删除或重命名目录中的文件。这通常用于公共目录,如/tmp,以防止普通用户删除或重命名其他用户的文件。
    • 表示方法:在目录权限的其他用户(others)部分,执行权限(x)位置如果变为小写t(t或T,T表示执行权限被关闭但仍设置了粘滞位),则表示该目录具有粘滞位。
    • 示例:在/tmp目录下,普通用户只能删除或重命名自己创建的文件,而不能删除或重命名其他用户的文件,即使他们有足够的权限来执行这些操作。

设定文件权限特殊属性 

        不能删除,改名,更改

        chattr +i

        只能追加内容

        chattr +a 

        显示特定属性

        lsatter 

        范例:

 [root@localhost ~]# chattr +i dir
[root@localhost ~]# rm -rf dir
[root@localhost ~]# lsattr dir
----i----------- dir

访问控制列表 

ACL权限功能

        ACL: Access Control List,灵活实现管理

        除了文件所有者,所属组和其他人,可以对更多用户设置权限        

        CentOS7默认创建的xfs和ext4文件系统有ACL功能

        CentOS7之前版本,默认手工创建的ext4文件系统无ACL功能,需要手动添加

tune2fs -o acl /dev/sdb1

mount -o acl /dev/sdb1        /mnt/test

        ACL生效顺序:

        所有者 ->自定义用户->所属组|自定义组->其他人

ACL相关命令 

        setfacl 可以设置ACL权限

        getfacl 可以查看设置的ACL权限

        范例:

[root@localhost test]# ll
total 0
-rw-r--r--. 1 root root 0 Sep  6 23:40 f1.txt
[root@localhost test]# setfacl -m u:wtj:- f1.txt
[root@localhost test]# su wtj
[wtj@localhost test]$ cat f1.txt 
cat: f1.txt: Permission denied
[wtj@localhost test]$ ll
total 0
-rw-r--r--+ 1 root root 0 Sep  6 23:40 f1.txt

[root@localhost test]# ll
total 0
-rw-r--r--+ 1 root root 0 Sep  6 23:40 f1.txt
[root@localhost test]# setfacl -b f1.txt  // 清空ACL列表
[root@localhost test]# ll
total 0
-rw-r--r--. 1 root root 0 Sep  6 23:40 f1.txt

[root@localhost test]# setfacl -x u:root f1.txt 
[root@localhost test]# getfacl f1.txt 
# file: f1.txt
# owner: root
# group: root
user::rw-
group::r--
other::r--

 ACL-MASK 

在Linux系统中,ACL(Access Control List,访问控制列表)的mask(掩码)是一个非常重要的概念,它用于限制ACL中基础权限的掩码,以确保不会将不需要授予的权限授予文件或目录。以下是关于ACL mask的详细解析:

定义与作用

  • 定义:mask是ACL中的一个有效权限掩码,表示允许任意类型用户的更大权限。它用于在权限完全从基础权限集中得到计算后,确定文件或目录的最终权限。
  • 作用
    1. 权限控制核心:mask是ACL控制权限的核心部分之一,通过限制基础ACL权限来控制权限授予。
    2. 权限限制:确保不会将不需要授予的权限授予文件或目录,提高系统的安全性。
    3. 管理辅助:向管理员提供建议,帮助管理员理解ACL权限,从而更有效地管理和保护系统。

如何工作

  • 当为文件或目录设置ACL权限时,如果指定了用户或组的权限,这些权限会与mask权限进行“按位相与”运算。最终得出的结果即为该用户或组对文件或目录的有效权限。
  • 如果用户或组被赋予的权限超出了mask规定的范围,超出部分将被视为无效。

示例

假设有一个文件file1,其基础权限为所有者可读写执行(rwx),组用户和其他用户可读(r--)。现在为用户tom设置了对file1的读和执行权限(r-x),同时mask权限被设置为rwx。

  • 在这种情况下,尽管为tom用户设置了r-x权限,但由于mask权限为rwx,因此tom用户实际上对file1的权限将是r-x(因为r-x在rwx的范围内)。
  • 如果将mask权限更改为r--,则tom用户的r-x权限中与r--不相符的部分(即写权限w)将被忽略,tom用户最终只有r权限。

设置与修改

  • 使用setfacl命令可以设置和修改ACL权限,包括mask权限。
  • 例如,要设置file1的mask权限为r-x,可以使用命令setfacl -m m:r-x file1

注意事项

  • 在设置ACL权限时,需要谨慎考虑mask权限的设置,以确保不会授予不必要的权限。
  • 如果不确定如何设置ACL权限,建议先了解相关概念和操作,或在有经验的管理员的指导下进行。

总之,ACL mask是Linux系统中ACL机制的一个重要组成部分,它通过限制基础ACL权限来控制权限授予,提高系统的安全性和可管理性。

 

备份和还原ACL 

在Linux系统中,备份与还原ACL(Access Control List,访问控制列表)是一项重要的管理任务,特别是在需要暂时修改文件权限以进行故障排除、更新或维护,并且之后需要恢复原始权限时。以下是备份与还原ACL的详细步骤:

备份ACL

要备份当前目录下(包括子目录)所有文件的ACL权限,可以使用getfacl命令配合重定向操作符>。以下是一个示例步骤:

  1. 打开终端:首先,你需要以root用户或具有足够权限的用户身份打开终端。

  2. 切换到目标目录:使用cd命令切换到包含要备份ACL的文件和目录的目录。

  3. 执行备份命令:运行getfacl -R . > permissions.txt命令。这里,-R选项表示递归地处理当前目录及其所有子目录和文件,.代表当前目录,>将命令的输出重定向到名为permissions.txt的文件中。这样,所有文件和目录的ACL信息都将被写入到permissions.txt文件中。

还原ACL

在需要恢复之前备份的ACL权限时,可以使用setfacl命令的--restore选项。以下是一个示例步骤:

  1. 打开终端:同样,你需要以root用户或具有足够权限的用户身份打开终端。

  2. 切换到备份文件所在目录:使用cd命令切换到包含permissions.txt备份文件的目录。

  3. 执行还原命令:运行setfacl --restore=permissions.txt命令。这个命令会读取permissions.txt文件中的ACL信息,并将其应用到相应的文件和目录上,从而恢复之前的ACL权限设置。

注意事项

  • 在进行备份和还原操作之前,请确保你有足够的权限来读取和写入目标文件和目录。
  • 如果你在备份后修改了文件系统结构(例如,删除了某些文件或目录),那么在还原ACL时可能会遇到错误。在这种情况下,你可能需要手动编辑permissions.txt文件,以删除不再存在的文件或目录的ACL条目。
  • ACL备份文件(如permissions.txt)应保存在安全的位置,以防止未经授权的访问或修改。

通过备份和还原ACL,你可以轻松地管理Linux系统中的文件权限,确保在需要时能够恢复到之前的状态。这对于维护系统的安全性和稳定性至关重要。


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

相关文章

Linux下构建Docker镜像

Docker在Linux构建镜像 Docker是一种轻量级的容器化技术&#xff0c;可以让开发者将应用程序及其所有依赖项打包到一个独立的容器中&#xff0c;从而实现跨平台和快速部署&#xff0c;在Linux系统上&#xff0c;我们可以使用D0cker来构建自己的镜像&#xff0c;并且可以通过简…

Win32函数调用约定(Calling Convention)

平常我们在C#中使用DllImportAttribute引入函数时&#xff0c;不指明函数调用约定(CallingConvention)这个参数&#xff0c;也可以正常调用。如FindWindow函数 [DllImport("user32.dll", EntryPoint"FindWindow", SetLastError true)] public static ext…

SpringBoot实现前后端传输加密设计

在Web应用中&#xff0c;确保前后端之间的数据传输安全是非常重要的。这通常涉及到使用HTTPS协议、数据加密、令牌验证等安全措施。本文通过将前后端之间的传输数据进行加密&#xff0c;用于在Spring Boot应用中实现前后端传输加密设计。 一、数据加密方案 即使使用了HTTPS&…

IP地址中的子网掩码

目录 一、子网掩码的概念 二、引入子网掩码的原因 1. 网络分段&#xff08;Subnetting&#xff09; 2. IP地址的组织 3. 有效利用IP地址 4. 减少广播域 5. 支持路由 三、子网掩码的划分 例子1 例子2 1. 子网掩码的二进制表示 2. 网络地址 3. 广播地址 4. 可用主机…

C++语法知识点合集:7.string类

文章目录 一、标准库中的string类1.string类2.auto和范围for3.string类的常用接口说明 二、string类的模拟实现1. 经典的string类问题2.浅拷贝3.深拷贝 一、标准库中的string类 1.string类 string是表示字符串的字符串类该类的接口与常规容器的接口基本相同&#xff0c;再添加…

【微处理器系统原理与应用设计第八讲】程序设计的开发框架包括编程语言、程序的基本要素、汇编程序结构、集成开发环境

一、编程语言 从处理器的角度看&#xff1a;一个指令只是一个操作&#xff0c;那么执行多条指令构成的程序就是完成一个完整功能的操作。 从程序执行的角度看&#xff1a;处理器读取指令后译码执行&#xff0c;完成所有操作。 从程序设计的角度看&#xff1a;用指令来描述所…

F12抓包06-3:浏览器导入/导出请求

使用场景&#xff1a;比如测试过程中通过抓包排查的问题&#xff0c;可以将请求记录导出给开发查看。 使用的是HAR文件&#xff0c;即HTTP归档格式(HTTP Archive Format)&#xff0c;是用于记录HTTP会话信息的文件格式。 ① 抓包&#xff1a;鼠标右键打开“检查”工具&#xff…

远心镜头选型公式

在当今的机器视觉领域&#xff0c;远心镜头凭借其独特的远心光路设计以及超低畸变、高远心度和高景深等特点&#xff0c;成为尺寸测量和视觉对位中的得力工具。然而&#xff0c;如何进行快速而准确的选型呢&#xff1f;答案就在于选型公式&#xff1a;倍率 焦距 N.A.Sensor 尺…

Transiting from CUDA to HIP(三)

一、Workarounds 1. memcpyToSymbol 在 HIP (Heterogeneous-compute Interface for Portability) 中&#xff0c;hipMemcpyToSymbol 函数用于将数据从主机内存复制到设备上的全局内存或常量内存中&#xff0c;这样可以在设备端的内核中访问这些数据。这个功能特别有用&#x…

2024最新Redis面试题含答案

&#xff08;3&#xff09;、队列 Reids在内存存储引擎领域的一大优点是提供 list 和 set 操作&#xff0c;这使得Redis能作为一个很好的消息队列平台来使用。Redis作为队列使用的操作&#xff0c;就类似于本地程序语言&#xff08;如Python&#xff09;对 list 的 push/pop 操…

Shell教程_在Bash_Shell中使用for循环详解

Shell教程_在Bash_Shell中使用for循环详解 在编程语言中, 循环是必不可少的组件, 当您想要一遍又一遍地重复代码直到满足指定条件时使用。 在 Bash 脚本中, 循环扮演着几乎相同的角色, 并用于自动执行重复性任务, 就像在编程语言中一样。 在 Bash 脚本中, 有 3 种类型的循环…

Component name “Find“ should always be multi-word

出现原因 这个是vue的vue文件名校验&#xff0c;意思是你的组件文件名应为多个单词且大驼峰&#xff0c;这样语义性更强&#xff0c; 解决方法 可采用3种方法解决 如果解决不了记得重启vue工程 1.改文件名 比如FindIndex,如此大驼峰 2.给组件添加name属性&#xff0c;注…

坐牢第三十六天(QT)

自定义QQ界面 wedget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QDebug> //qt中信息调试类 #include <QIcon> //图标类 #include <QPushButton>//按钮类 #include <QLabel> //标签类 #include <QMovie> //动图类…

真人模特失业?AI虚拟试衣一键成图,IDM-VTON下载介绍

在电商行业竞争尤为激烈的当下&#xff0c;除了打价格战外&#xff0c;如何有效的控制成本&#xff0c;是每个从业者都在思考的问题 IDM-VTON是一个AI虚拟换装工具&#xff0c;旨在帮助服装商家解决约拍模特导致的高昂成本问题&#xff0c;只需一张服装图片&#xff0c;就可以…

手写 Vue Router 中的 Hash 模式和 History 模式

Vue Router 是 Vue.js 的官方路由库&#xff0c;负责管理 Vue应用中的页面导航。它与 Vue.js 核心深度集成&#xff0c;让用 Vue.js 构建单页应用变得轻而易举。Vue Router 提供两种常见的模式&#xff1a;Hash 模式和 History 模式。这两种模式的主要区别在于它们如何管理 URL…

解决启动Nginx时80端口被占用的问题

文章目录 前言 解决方法1. 搜索服务打开![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/c7600d266d194bdb864f7660a5bc5890.png)2. 找到World Wide Web 发布服务这个服务&#xff0c;右键属性&#xff0c;将它的启动类型改为手动&#xff0c;然后停止掉该服务。3. 此…

mysql笔记—基础

1.SQL语句 DDL&#xff08;数据库对象操作&#xff09;、DML&#xff08;增删改&#xff09;、DQL&#xff08;查询&#xff09;、DCL&#xff08;用户和权限操作&#xff09; 2.DDL&#xff1a; 1.数据库操作&#xff1a; show databases; create database []; use []; sele…

oracle数据块内部结构详解

文章目录 Oracle数据块详解概述Oracle块具有以下特点&#xff1a;① 最小的I/O单元&#xff1b;② 包含一个或多个OS块&#xff1b;③ 大小由参数DB_BLOCK_SIZE决定&#xff1b;④ 数据库创建时设置&#xff0c;数据库创建后不能更改 Oracle数据块详解 概述 操作系统块是…

Django跨域问题

简介 由于本站以及很大部分项目都是前后端分离模式&#xff0c;前后端所配置的域名并不相同&#xff0c;所以会受到浏览器的同源策略限制&#xff0c;导致不能正确的请求资源&#xff0c;以下内容先用最简单的方法实现Django后端的跨域问题解决&#xff0c;后续原理再慢慢补充…

ctfshow之文件包含(web78~web86)

web78 if(isset($_GET[file])){$file $_GET[file];include($file); }else{highlight_file(__FILE__); } 解法一&#xff1a;data伪协议 ?filedata://text/plain,<?php system("tac flag.php"); 解法二&#xff1a;php:filter伪协议 ?filepHp://FilTer/conver…