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

💗个人主页💗

⭐个人专栏------Linux学习

💫点击关注🤩一起学习C语言💯💫

目录

  • 导读:
  • [1. 用户权限](#1. 用户权限)
    • [1.1 用户类型](#1.1 用户类型)
    • [1.2 用户之间的切换](#1.2 用户之间的切换)
  • [2. 文件权限管理](#2. 文件权限管理)
    • [2.1 文件访问者](#2.1 文件访问者)
    • [2.2 文件类型和访问权限](#2.2 文件类型和访问权限)
    • [2.3 文件权限值表示方法](#2.3 文件权限值表示方法)
    • [2.4 文件访问权限设置](#2.4 文件访问权限设置)
    • [2.5 修改文件拥有者](#2.5 修改文件拥有者)
    • [2.6 修改文件所属组](#2.6 修改文件所属组)
    • [2.7 查看或修改文件权限掩码](#2.7 查看或修改文件权限掩码)
    • [2.8 目录权限](#2.8 目录权限)
    • [2.9 粘滞位](#2.9 粘滞位)
  • [3. 总结](#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 -- -- 4 100
-- w -- 2 010
-- -- x 1 001
rw -- 6 110
-- wx 3 011
r -- x 5 101
rwx 7 111
-- -- -- 0 000

2.4 文件访问权限设置

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

chmod命令可以使用数字模式或符号模式来指定权限。
数字模式:

用数字表示的权限模式应该是一个八进制数。

r:4

w:2

x:1

bash 复制代码
[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:所有用户

bash 复制代码
[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 <新的所有者> <文件路径>

bash 复制代码
[zhy@Centos ~]$ sudo root file.txt

2.6 修改文件所属组

chgrp命令用于修改文件或目录的所有者组。

基本语法:

chgrp 选项 新组 文件/目录

选项:

-c:显示修改的所有者组。

-f:不显示错误信息。

-R:递归地修改目录及其子目录下的所有文件和目录的所有者组。

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

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

语法:

umask 模式

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

bash 复制代码
[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身份。

相关推荐
A小辣椒3 小时前
TShark:Wireshark CLI 功能
linux
A小辣椒6 小时前
TShark:基础知识
linux
AlfredZhao9 小时前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao1 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334661 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪1 天前
linux 拷贝文件或目录到指定的位置
linux
大树882 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠2 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质2 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush42 天前
嵌入式linux学习记录十四、术语
linux·嵌入式