Linux权限的概念和管理

news2025/1/21 2:55:17

Linux权限的概念和管理

  • 1. Linux权限的概念
  • 2. Linux权限管理
    • 2.1 文件访问者的分类(人)
    • 2.2 文件类型和访问权限(事物属性)
      • 2.2.1 文件类型
      • 2.2.2 基本权限
    • 2.3 文件权限值的表示方法
    • 2.4文件访问权限的相关设置方法
      • 1. chmod(重点)
      • 2. chown
      • 3. chgrp
      • 4. umask
    • 2.5 目录的权限
    • 2.6 粘滞位
    • 2.7 关于权限的总结

1. Linux权限的概念

Linux下有两种用户:超级用户(root)、普通用户。

  • 超级用户:可以再linux系统下做任何事情,不受限制
  • 普通用户:在linux下做有限的事情。

超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。
命令:su [用户名]
功能:切换用户。

例如,要从root用户切换到普通用户user,则使用 su user。 要从普通用户user切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的口令。

2. Linux权限管理

2.1 文件访问者的分类(人)

  • 文件和文件目录的所有者:u—User(中国平民 法律问题)
  • 文件和文件目录的所有者所在的组的用户:g—Group(不多说)
  • 其它用户:o—Others (外国人)

    2.2 文件类型和访问权限(事物属性)

在这里插入图片描述

2.2.1 文件类型

d:文件夹
-:普通文件
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件

2.2.2 基本权限

i. 读(r):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限。
ii. 写(w):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限。
iii. 执行(x):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限。
iv. “-”表示不具有该项权限。

2.3 文件权限值的表示方法

在这里插入图片描述

2.4文件访问权限的相关设置方法

1. chmod(重点)

功能: 设置文件的访问权限
格式: chmod [参数] 权限 文件名
常用选项:
R -> 递归修改目录文件的权限
说明:只有文件的拥有者和root才可以改变文件的权限

chmod命令权限值的格式:
① 用户表示符+/-=权限字符

+:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限
=:向权限范围赋予权限代号所表示的权限
用户符号:
u:拥有者
g:拥有者同组用
o:其它用户
a:所有用户

例:chmod u+rwx file.txt
将给文件所有者添加读、写和执行权限。

例:chmod go-w file.txt
将移除文件所属组和其他用户的写权限。

例: chmod 755 file.txt
将文件file.txt的权限设置为:

  • 文件所有者:读、写、执行(4 + 2 + 1 = 7)
  • 所属组:读、执行(4 + 1 = 5)
  • 其他用户:读、执行(4 + 1 = 5)

2. chown

功能:修改文件的拥有者
格式:chown [参数] 用户名 文件名

chown user1 f1
chown -R user1 filegroup1

3. chgrp

功能:修改文件或目录的所属组
格式:chgrp [参数] 用户组名 文件名
常用选项:-R 递归修改文件或目录的所属组

i. 将文件的所属组更改为特定组:

chgrp staff file.txt

ii. 递归地将目录及其子目录中的所有文件和目录的所属组更改为特定组:

chgrp -R staff directory/

4. umask

功能:查看或修改文件掩码
新建文件夹默认权限=0666
新建目录默认权限=0777
但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是: mask &~umask
格式:umask 权限值
说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用户默认为0002。

显示当前的权限掩码(符号形式):umask -s
显示当前的权限掩码(八进制形式):umask -p
设置新的权限掩码为 0022::umask 0022

2.5 目录的权限

  • 可执行权限: 如果目录没有可执行权限, 则无法cd到目录中.
  • 可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容.
  • 可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件.

于是, 问题来了~~
换句话来讲, 就是只要用户具有目录的写权限, 用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写权限.
这好像不太科学啊, 我张三创建的一个文件, 凭什么被你李四可以删掉? 我们用下面的过程印证一下

[mzh@VM-8-6-centos dir]$ ll
total 4
drwxrwxr-x 2 hsl hsl 4096 Sep 10 19:40 abc
--w-rw---- 1 hsl hsl    0 Sep 10 19:40 test.c
-rw-rw-r-- 1 hsl hsl    0 Sep 10 19:40 test.cpp
-rw-rw-r-- 1 hsl hsl    0 Sep 10 19:40 test.txt
[mzh@VM-8-6-centos dir]$ rm test.c
rm: remove write-protected regular empty file ‘test.c’? y
[mzh@VM-8-6-centos dir]$ ll
total 4
drwxrwxr-x 2 hsl hsl 4096 Sep 10 19:40 abc
-rw-rw-r-- 1 hsl hsl    0 Sep 10 19:40 test.cpp
-rw-rw-r-- 1 hsl hsl    0 Sep 10 19:40 test.txt
[mzh@VM-8-6-centos dir]$ 

2.6 粘滞位

[root@localhost ~]# chmod +t /home/ # 加上粘滞位
[root@localhost ~]# ls -ld /home/
drwxrwxrwt. 3 root root 4096 919 16:00 /home/
[root@localhost ~]# su - litao
[litao@localhost ~]$ rm /home/abc.c #litao不能删除别人的文件
rm:是否删除有写保护的普通空文件 "/home/abc.c"?y
rm: 无法删除"/home/abc.c": 不允许的操作

当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由
一、超级管理员删除
二、该目录的所有者删除
三、该文件的所有者删除

2.7 关于权限的总结

  • 目录的可执行权限是表示你可否在目录下执行命令。

  • 如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)

  • 而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限,所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/996901.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++的运算符重载介绍

所谓重载,就是赋予新的含义。函数重载(Function Overloading)可以让一个函数名有多种功能,在不同情况下进行不同的操作。运算符重载(Operator Overloading)也是一个道理,同一个运算符可以有不同的功能。 实际上,我们已经在不知不觉中使用了运算符重载。例如,+号可以对…

IDEA控制台取消悬浮全局配置SpringBoot配置https

IDEA控制台取消悬浮 idea 全局配置 SpringBoot(Tomcat) 配置https,同时支持http 利用JDK生成证书 keytool -genkey -alias httpsserver -keyalg RSA -keysize 2048 -keystore server.p12 -validity 3650配置类 Configuration public class TomcatConfig {Value(&quo…

【golang】调度系列之m

调度系列 调度系列之goroutine 上一篇中介绍了goroutine,最本质的一句话就是goroutine是用户态的任务。我们通常说的goroutine运行其实严格来说并不准确,因为任务只能被执行。那么goroutine是被谁执行呢?是被m执行。 在GMP的架构中&#xff…

PC首页资源加载速度由8s降到2s的优化实践

随着需求的不断开发,前端项目不断膨胀,业务提出:你们的首页加载也太慢啦,我都需要7、8秒才能看到内容,于是乎主管就让我联合后端开启优化专项,目标是3s内展示完全首页的内容。 性能指标 开启优化时&#…

G0第28章:Go语言微服务框架

Go-kit Go kit教程04——中间件和日志 本文主要介绍了Go kit 中的中间件,并以日志中间件为例演示了如何设计和实现中间件。 上一篇中,我们对go kit搭建的项目进行了目录结构拆分 中间件 在 go kit 中,它对中间件的定义是一个接收Endpoint…

DataGridView绑定数据更新

1、创建数据类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace DataGridViewTest {internal class UserData{public string Name { get; set; }public int Weight { get; set; }public int …

“内存炸弹”DDOS拒绝服务攻击

Windows平台演示 最早的内存炸弹是 zip 炸弹,也称为死亡 zip,它是一种恶意计算机文件,旨在使读取该文件的程序崩溃或瘫痪。zip 炸弹不会劫持程序的操作,而是利用解压缩压缩文件所需的时间、磁盘空间或内存。 zip 炸弹的一个示例…

ConnectionError: Error connecting to Visdom server

pip install visdom python -m visdom.server点击网站即可访问

Modelsim仿真问题解疑三:LM_LICENSE_FILE与Vivado命名冲突

现象: modelsim和Vivado同一时间只能使用一个,另一个会报license相关的错误 原因: modelsim和Vivado的环境变量名称都为LM_LICENSE_FILE,值配置为其中一个时会导致另一个值被覆盖 解决: 对LM_LICENSE_FILE同时配置modelsim和v…

win10环境安装使用docker-maxwell

目的:maxwell可以监控mysql数据变化,并同步到kafka、mq或tcp等。 maxwell和canal区别: maxwell更轻量,canal把表结构也输出了 docker bootstrap可导出历史数据,canal不能 环境 :win10,mysql5…

反编译小程序 SyntaxError: Unexpected token ‘}‘ 异常处理

反编译小程序出现异常: SyntaxError: Unexpected token ‘}’ 网上很多都说使用最新版本的反编译 wxappUnpacker-master 包可以进行解析,但是大神已经停止了更新wxappUnpacker-master 包; 查找了网上大部分的wxappUnpacker-master 包&#…

查看mysql数据库的charset和collation

SELECT * FROM information_schema.SCHEMATA WHERE schema_name test_data; 发现: chaset是utf8mb4,collation是utf8mb4_generic_ci 可笑的是我导入sql脚本,要把脚本中所有的utf8mb4改为utf8,将utf8mb4_generic_ci为utf8_unico…

有哪些适合初学者的编程语言?

C语言 那为什么我还要教你C语言呢?因为我想要让你成为一个更好、更强大的程序员。如果你要变得更好,C语言是一个极佳的选择,其原因有二。首先,C语言缺乏任何现代的安全功能,这意味着你必须更为警惕,时刻了…

日志平台搭建第二章:Linux使用docker安装elasticsearch-head

一、elasticsearch-head的安装启动 #下载镜像 docker pull alivv/elasticsearch-head #启动 docker run -d --name eshead -p 9100:9100 alivv/elasticsearch-head 查看日志 docker logs -f eshead 出现如下证明启动成功 浏览器访问9100端口,出现以下页面也说明…

End-to-end 3D Human Pose Estimation with Transformer

基于Transformer的端到端三维人体姿态估计 摘要 基于Transformer的架构已经成为自然语言处理中的常见选择,并且现在正在计算机视觉任务中实现SOTA性能,例如图像分类,对象检测。然而,卷积方法在3D人体姿态估计的许多方法中仍然保…

vue学习之基本用法

1. 前期准备 安装vs code IDE&#xff0c;vs code 安装 插件 open in brower新建 vue-learning 文件夹vs code IDE打开文件夹 2. 基本用法 创建demo1.html文件,内容如下 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8&qu…

Converting Phase Noise to Random Jitter(Cycle-to-Cycle)

借用Phase Noise to Random Jitter(Period)的转换过程推导了Cycle to Cycle random Jitter&#xff0c;一般展频时钟调制,用来评估相邻周期的随机抖动。

AMD锐龙R5600GVEGA7 GPU环境搭建

AMD的GPU驱动很早就合入LINUX开源主线了,非常适合对GPU分析和学习,所以组装了一台搭配AMD锐龙R5 5600G CPU主机,配有VEGA7核显。不过,经过测试,由于是2021年的产品,所以需要安装较新的LINUX发行版,至少是UBUNTU20.04之后的,主机环境简单记录如下: 配置参数: 基础评分…

C语言之指针进阶篇(2)

目录 函数指针 函数名和&函数名 函数指针的定义 函数指针的使用 函数指针陷阱 代码1 代码2 注意 函数指针数组定义 函数指针数组的使用 指向函数指针数组的指针 书写 终于军训圆满结束了&#xff0c;首先回顾一下指针进阶篇&#xff08;1&#xff09;主要是…

C语言实现三字棋

实现以下&#xff1a; 1游戏不退出&#xff0c;继续玩下一把&#xff08;循环&#xff09; 2应用多文件的形式完成 test.c. --测试游戏 game.c -游戏函数的实现 game.h -游戏函数的声明 (2)游戏再走的过程中要进行数据的存储&#xff0c;可以使用3*3的二维数组 char bor…