【Linux】用户和文件权限管理

💗个人主页💗
⭐个人专栏——Linux学习⭐
💫点击关注🤩一起学习C语言💯💫

目录

  • 导读:
  • 1. 用户权限
    • 1.1 用户类型
    • 1.2 用户之间的切换
  • 2. 文件权限管理
    • 2.1 文件访问者
    • 2.2 文件类型和访问权限
    • 2.3 文件权限值表示方法
    • 2.4 文件访问权限设置
    • 2.5 修改文件拥有者
    • 2.6 修改文件所属组
    • 2.7 查看或修改文件权限掩码
    • 2.8 目录权限
    • 2.9 粘滞位
  • 3. 总结

导读:

Linux一切皆文件,文件都是有对应的权限的,而今天我们就来了解一下Linux中的权限。

1. 用户权限

1.1 用户类型

在Linux系统中,有三种不同类型的用户:root用户、系统用户和普通用户。
区分这三种用户类型的目的是为了安全和权限管理。通过将不同的任务委托给不同类型的用户,可以降低系统被滥用的风险,并保护系统的安全性和稳定性。

  1. root用户:也称为超级用户,是Linux系统中最高权限的用户。

root用户具有系统的完全控制权限,可以对系统中的所有文件和目录进行读、写、执行等操作。
root用户通常用于系统管理任务,如安装软件、配置系统等。
由于root用户拥有最高权限,因此使用root用户需要谨慎,以免对系统造成不必要的损害。

  1. 系统用户:系统用户是由操作系统或安装的软件所创建的用户账号,用于执行特定的系统任务和服务。

这些用户账号通常不允许交互式登录,并且没有个人目录。
系统用户的权限通常较低,只能访问特定的文件和资源。

  1. 普通用户:普通用户是Linux系统中一般用户创建的账号,用于进行日常的工作和操作。

普通用户只拥有自己个人目录和特定文件的访问权限,不能对系统文件和目录进行修改。
普通用户的权限较低,需要通过sudo命令或root用户的授权来执行需要提权的操作。

1.2 用户之间的切换

su命令和sudo命令都是Linux系统中用于提权的命令,但它们的使用方式和权限管理方式是有所不同的。
su命令:

命令:su [用户名]
功能:切换用户。

su (Switch User)命令用于切换用户身份。通过su命令,普通用户可以切换到另一个用户账号,包括root用户。

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

sudo命令

命令:sudo [命令行]
功能:临时提权

sudo (SuperUser Do)命令用于临时提权。在默认配置下,普通用户无法直接以root用户身份执行命令,但可以使用sudo命令来执行具有root权限的命令。

sudo命令需要在命令前加上sudo关键字,然后输入当前用户的密码。只有拥有sudo权限的用户才能使用sudo命令。通常,在安装Linux系统时,第一个创建的用户会被自动添加到sudo组中,即拥有sudo权限。

2. 文件权限管理

2.1 文件访问者

在Linux中,文件权限通过三组权限标记来管理,分别是用户权限(user)、用户组权限(group)和其他用户权限(other)。
在这里插入图片描述

用户权限:表示文件所有者对文件的权限。可以通过命令ls -l查看文件的详细信息。
用户组权限:表示用户所属组对文件的权限。与用户权限类似,可以通过ls -l命令查看。
其他用户权限:表示文件所有其他用户对文件的权限。同样可以通过ls -l命令查看。

2.2 文件类型和访问权限

我们用ls -l来查看文件的详细信息。
在这里插入图片描述

第一个字符表示文件类型,-表示普通文件,d表示目录。
后面九个字符分为三组,分别表示所有者的权限、所属组的权限和其他用户的权限。

权限字符

r:读权限。用于查看文件内容。
w:写权限。用于修改文件内容。
x:执行权限。用于执行文件。
-:表示不具备对该文件的任何权限。

文件类型

符号文件类型
-表示普通文件
d表示目录
l表示符号链接
b表示块设备文件
c表示字符设备文件
s表示套接字
p表示管道

2.3 文件权限值表示方法

字符表示:

权限符号说明
r – –只读
– w –仅可写
– – x仅可执行
rw –可读可写
– wx可写可执行
r – x可读可执行
rwx可读可写可执行
– – –无任何权限

8进制数值表示:

权限符号八进制二进制
r – –4100
– w –2010
– – x1001
rw –6110
– wx3011
r – x5101
rwx7111
– – –0000

2.4 文件访问权限设置

在Linux中,可以使用chmod命令来设置文件的访问权限。

chmod命令可以使用数字模式或符号模式来指定权限。
数字模式:
用数字表示的权限模式应该是一个八进制数。

r:4
w:2
x:1

[zhy@Centos ~]$ ls -l file.txt
-rw-rw-r-- 1 zhy zhy 26 Jan  4 19:12 file.txt
[zhy@Centos ~]$ chmod 777 file.txt //加上所有权限
[zhy@Centos ~]$ ls -l file.txt
-rwxrwxrwx 1 zhy zhy 26 Jan  4 19:12 file.txt
[zhy@Centos ~]$ chmod 000 file.txt //删除所有权限
[zhy@Centos ~]$ ls -l file.txt
---------- 1 zhy zhy 26 Jan  4 19:12 file.txt
[zhy@Centos ~]$ chmod 664 file.txt //更改指定权限
[zhy@Centos ~]$ ls -l file.txt
-rw-rw-r-- 1 zhy zhy 26 Jan  4 19:12 file.txt

符号模式:
权限字符:

+:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限
=:向权限范围赋予权限代号所表示的权限

用户符号:

u:拥有者
g:拥有者同组用
o:其它用户
a:所有用户

[zhy@Centos ~]$ chmod u+r file.txt //给文件的所有者添加读权限。
[zhy@Centos ~]$ ll file.txt
-r-------- 1 zhy zhy 26 Jan  4 19:12 file.txt
[zhy@Centos ~]$ chmod o+x file.txt //给其他用户添加执行权限
[zhy@Centos ~]$ ll file.txt
-r-------x 1 zhy zhy 26 Jan  4 19:12 file.txt
[zhy@Centos ~]$ chmod g+w file.txt //将文件的用户组添加写权限
[zhy@Centos ~]$ ll file.txt
-r---w---x 1 zhy zhy 26 Jan  4 19:12 file.txt
[zhy@Centos ~]$ chmod a=rwx file.txt //将文件的权限设置为所有用户可读可写可执行。
[zhy@Centos ~]$ ll file.txt
-rwxrwxrwx 1 zhy zhy 26 Jan  4 19:12 file.txt
[zhy@Centos ~]$ chmod o-x file.txt //给其他用户的执行权限移除
[zhy@Centos ~]$ ll file.txt
-rwxrwxrw- 1 zhy zhy 26 Jan  4 19:12 file.txt

2.5 修改文件拥有者

chown命令用于改变文件的所有者和/或所属组。

sudo chown <新的所有者> <文件路径>

[zhy@Centos ~]$ sudo root file.txt

2.6 修改文件所属组

chgrp命令用于修改文件或目录的所有者组。
基本语法:

chgrp [选项] 新组 文件/目录

选项:

-c:显示修改的所有者组。
-f:不显示错误信息。
-R:递归地修改目录及其子目录下的所有文件和目录的所有者组。

2.7 查看或修改文件权限掩码

在Linux中,umask命令用于设置新创建文件和目录的默认权限掩码。默认情况下,新创建的文件和目录将继承其父目录的权限。
语法:

umask [模式]

模式是一个三位数值,表示权限掩码。每个位上的数字表示对应权限位的屏蔽值。例如,0644表示屏蔽文件的写权限,022表示屏蔽目录的写权限。

[zhy@Centos ~]$ umask //查看当前的umask值
0002
[zhy@Centos ~]$ umask 0022
[zhy@Centos ~]$ umask
0022

请注意,umask值是八进制数。在设置时,可以使用八进制数直接指定,也可以使用四位数值来指定(将八进制数每个位上的数字转换为对应的二进制数)。

umask命令对当前会话中的新创建文件和目录生效,但不会对已存在的文件和目录生效。要永久更改umask值,可以将umask命令添加到bash配置文件中,如~/.bashrc或/etc/profile。这样,在每次登录时,umask命令会自动运行并设置新的umask值。

2.8 目录权限

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

2.9 粘滞位

在Linux中,粘滞位是一种文件权限设置。它是一种特殊的权限设置,应用于某些特殊的目录,例如/tmp目录。粘滞位的设置可以防止其他用户删除或更改不属于自己的文件。

当粘滞位设置在一个目录上时,只有文件所有者和目录的所有者才能删除或重命名目录中的文件,其他用户只能读取或写入文件,但不能删除或更改文件。
root用户除外。

在Linux中,粘滞位位于文件权限的最后一位,用"T"来表示。

$ chmod +t /tmp
表示在/tmp目录上设置粘滞位。

3. 总结

作为Linux系统的管理员账户,root拥有最高的权限。

root用户对系统上的所有文件和目录都具有读、写和执行的权限。无论文件的所有者或组是什么,root都可以访问和修改它们。

需要注意的是,root用户拥有强大的权限,但也要小心使用。滥用root权限可能导致系统不稳定,数据丢失或安全漏洞。因此,应该尽量避免以root身份进行常规操作,而是使用普通用户账户,并只在需要时切换到root身份。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python+selenium实现浏览器基本操作详解

关闭 driver 启动的浏览器 上一章节文末&#xff0c;我们介绍了关于两种关闭浏览器的方式&#xff0c;这里不做过多的复述。&#xff08;实在是这一章节的内容太少了&#xff09; 在 selenium 中&#xff0c;提供了两种关闭 driver 启动的浏览器的方式&#xff1a; close() 方…

GPT-4 现在是否已经足够划算?

我通常使用 GPT 的方式是&#xff0c;先用 GPT-4 来快速搭建一个原型&#xff0c;然后不断优化&#xff0c;直到解决方案能够在 GPT-3.5 模型上运行。 这个方法在我的实践中非常高效&#xff0c;它的一个重要好处是能迅速筛选出那些“行不通”的项目——如果你在几天内都无法使…

【现代控制系统】能控性与能观性

能控性与能观性 2023年11月25日 #controlsys 文章目录 能控性与能观性1. 能控性1.1 能控性&#xff08;可控性&#xff09;的引入1.2 LTI系统的可控性1.3 LTV系统的可控性 2. 能观性2.1 能观性&#xff08;可观性&#xff09;引入2.2 LTI系统的可观性2.3 LTV系统的可观性 3. 状…

图解渠道网关:不只是对接渠道的接口(一)

这是《百图解码支付系统设计与实现》专栏系列文章中的第&#xff08;20&#xff09;篇。点击上方关注&#xff0c;深入了解支付系统的方方面面。 主要讲清楚什么是渠道&#xff0c;有哪些类型的渠道&#xff0c;什么是渠道网关&#xff0c;渠道网关在支付系统中定位、核心功能…

《动手学深度学习》学习笔记 第10章 注意力机制

文章目录 本系列为《动手学深度学习》学习笔记10.1 注意力提示10.1.1 生物学中的注意力提示10.1.2 查询、键和值10.1.3 注意力的可视化 10.2 注意力汇聚&#xff1a;Nadaraya-Watson 核回归10.2.1 生成数据集10.2.2 平均汇聚10.2.3 非参数注意力汇聚10.2.4 带参数注意力汇聚10.…

分布式Erlang/OTP(学习笔记)(一)

Erlang分布式基础 假设你在机器A和机器B上各跑着一个Simple Cache应用的实例。要是在机器A的缓存上插人一个键/值对之后&#xff0c;从机器B上也可以访问&#xff0c;那可就好了。显然&#xff0c;要达到这个目的&#xff0c;机器A必须以某种方式将相关信息告知给机器B。传递该…

网络协议与攻击模拟_04ICMP协议与ICMP重定向

ICMP协议是网络层协议&#xff0c; 利用ICMP协议可以实现网络中监听服务和拒绝服务&#xff0c;如 ICMP重定向的攻击。 一、ICMP基本概念 1、ICMP协议 ICMP是Internet控制报文协议&#xff0c;用于在IP主机、路由器之间传递控制消息&#xff0c;控制消息指网络通不通、主机是…

SpringBoot 启动优化实践!

背景 公司 SpringBoot 项目在日常开发过程中发现服务启动过程异常缓慢&#xff0c;常常需要 6-7 分钟才能暴露端口&#xff0c;严重降低开发效率。通过 SpringBoot 的 SpringApplicationRunListener 、BeanPostProcessor 原理和源码调试等手段排查发现&#xff0c;在 Bean 扫描…

K8s(一)Pod资源——Pod介绍、创建Pod、Pod简单资源配额

目录 Pod概述 pod网络 pod存储 pod和容器对比 创建pod的方式 pod运行方式分类 Pod的创建 Pod的创建过程 通过kubectl run来创建pod 通过yaml文件创建&#xff0c;yaml文件简单写法 Pod简单操作 Pod的标签labels Pod的资源配额resource 测试 Pod概述 Kubernetes …

docker部署Jira+配置MySQL8数据库

写在前面&#xff1a;如果你通过docker安装Jira且启动过&#xff0c;然后你现在又想使用mysql数据库&#xff0c;需要注意 你除了停掉原有容器&#xff0c;还需要删除&#xff1a;/var/lib/docker/volumes/jiraVolume/_data下的文件&#xff0c;否则启动后会无法正常使用。注意…

详解Vite创建Vue3项目+vue-router+ts+vite+element-plus

前言 在之前的文章中写过“Vue3TSElementPlus的安装和使用教程【详细讲解】”&#xff0c;但那篇文章写的是创建vue3的项目没有使用到Vite构建工具进行创建还是使用的常规webpacket构建工具进行创建的。提到Vite和webpacket的时候我们可以简单说一下。Vite 和 Webpack 都是现代…

iOS原生应用屏幕适配完整流程

1. 已iPhone 11 布局为设计布局,其他机型已这个来适配 2.变量与控件对应关系 txtViewer: txtAccount txtpwd seg btnOk 3.适配方法实现: //iOS屏幕适配 -(vo