linux的权限

embedded/2024/12/23 9:03:29/

1.Linux的用户

在Linux操作系统中,用户管理是系统安全性和资源管理的重要组成部分。以下是关于Linux用户的一些基本概念:

用户类型

  1. 超级用户(Root)

    • Linux系统中的管理员账户,拥有最高的系统权限。
    • 可以执行所有系统管理和维护任务。
    • 通常建议只在必要时使用root账户,以避免误操作导致系统损坏。
  2. 普通用户

    • 普通用户账户权限有限,只能访问授权的文件和资源。
    • 普通用户通常用于日常工作和应用程序的运行。
    • 每个普通用户都有自己的家目录,通常位于 /home/username
  3. 服务用户

    • 专门为运行特定服务或应用程序而创建的用户。
    • 这些用户通常没有登录shell的权限,仅用于运行特定的服务进程。
    • 例如,Apache Web服务器通常以 apache 用户身份运行。

用户管理命令

  • useradd:用于添加新用户。
  • userdel:用于删除用户。
  • passwd:用于设置或更改用户密码。
  • usermod:用于修改用户账户的属性。
  • id:用于显示用户的用户ID(UID)和组ID(GID)。
  • whoami:用于显示当前登录用户的名称。

用户组

  • 用户组是用户的集合,用于简化权限管理。
  • 用户可以属于一个或多个组。
  • 组的权限可以应用于组的所有成员。

用户相关的文件

  • /etc/passwd:包含系统用户账户信息。
  • /etc/shadow:包含用户密码的加密信息。
  • /etc/group:包含系统组的信息。
  • /etc/gshadow:包含组密码的加密信息。

2.Linux的权限管理

Linux的权限管理是确保系统安全性和数据完整性的关键机制。它控制着用户和组对文件、目录和其他系统资源的访问权限。以下是Linux权限管理的一些基本概念和常用命令。

权限类型

  • 读权限(r):允许读取文件内容或列出目录内容。
  • 写权限(w):允许修改文件内容或修改目录结构(创建、删除文件/目录)。
  • 执行权限(x):允许执行文件或访问目录(即进入该目录)。

权限分类

  • 用户权限(User):文件所有者的权限。
  • 组权限(Group):文件所属组的成员的权限。
  • 其他权限(Others):既不是文件所有者也不是文件所属组成员的其他用户的权限。

权限表示

使用ls -l命令可以查看文件或目录的权限信息,例如:

-rwxr-xr-- 1 user group 4096 Mar 10 10:00 filename

 

  • 文件类型(-表示普通文件,d表示目录)
  • 用户权限(rwx表示用户有读、写、执行权限)
  • 组权限(r-x表示组有读、执行权限,无写权限)
  • 其他权限(r--表示其他用户有读权限,无写和执行权限)
  • 硬链接数
  • 文件所有者
  • 文件所属组
  • 文件大小
  • 最后修改日期
  • 文件名

 

权限设置命令

  • chmod:改变文件或目录的权限。

    • 数字表示法:chmod 755 filename(用户=rwx,组=rx,其他=rx)
    • 符号表示法:chmod u+x filename(给用户增加执行权限)
  • chown:改变文件的所有者和/或所属组。

    • chown user:group filename(改变文件的所有者和组)
  • chgrp:改变文件所属的组。

    • chgrp group filename(改变文件的所属组)
  • umask:设置创建文件和目录时的默认权限。

特殊权限

  • 设置用户ID(Setuid):当执行文件时,用户获得文件所有者的权限。设置方法:chmod u+s filename
  • 设置组ID(Setgid):当执行文件或访问目录时,用户获得文件所属组的权限。设置方法:chmod g+s filename
  • 粘滞位(Sticky Bit):通常用于目录,防止用户删除或重命名不属于他们的文件。设置方法:chmod +t directory

 给文件增加所有用户的执行权限:

chmod a+x filename

 设置文件所有者为user,所属组为group:

chown user:group filename

 设置新创建文件的默认权限为644(rw-r–r–):

umask 022

3.文件类型

在Linux系统中,文件类型是由文件系统的inode信息确定的,而不是由文件扩展名(如 .txt 或 .jpg)决定的。以下是Linux系统中常见的文件类型:

  1. 普通文件(Regular file)

    • 扩展名:通常有扩展名,但不是必须的。
    • 表示:-
    • 描述:包含实际数据的文件,可以是文本文件、二进制文件、图片、视频等。
  2. 目录(Directory)

    • 扩展名:没有扩展名。
    • 表示:d
    • 描述:用于组织其他文件和目录的容器。
  3. 块设备文件(Block special file)

    • 扩展名:没有扩展名。
    • 表示:b
    • 描述:提供对块设备(如硬盘、软盘)的访问。
  4. 字符设备文件(Character special file)

    • 扩展名:没有扩展名。
    • 表示:c
    • 描述:提供对字符设备(如串行端口、打印机)的访问。
  5. 管道(FIFO,也称为命名管道)

    • 扩展名:没有扩展名,但有时使用 .fifo
    • 表示:p
    • 描述:用于进程间通信的管道。
  6. 套接字(Socket)

    • 扩展名:没有扩展名。
    • 表示:s
    • 描述:用于网络通信的端点。
  7. 链接文件(Symbolic link)

    • 扩展名:没有扩展名,但有时使用 .lnk
    • 表示:l
    • 描述:指向另一个文件或目录的快捷方式或引用。
  8. Door(Solaris系统特有):

    • 扩展名:没有扩展名。
    • 表示:D
    • 描述:用于进程间通信的机制。
-rw-r--r--  1 user group  4096 Mar 10 10:00 filename.txt
drwxr-xr-x  2 user group  4096 Mar 10 10:00 directory
brw-rw----  1 user disk   8,  0 Mar 10 10:00 /dev/sda
crw-rw-rw-  1 user tty    5,  0 Mar 10 10:00 /dev/tty
prw-rw-r--  1 user group  0     Mar 10 10:00 pipe
srwxr-xr-x  1 user group  0     Mar 10 10:00 socket
lrwxrwxrwx  1 user group  8     Mar 10 10:00 link -> filename

4.目录权限

在Linux和类Unix操作系统中,目录权限决定了用户和用户组能够对目录执行哪些操作。权限分为三种类型,并且可以针对三种不同的类别设置:文件所有者(owner)、文件所属组(group)和其他用户(others/world)。以下是目录权限的详细说明:

权限类型

  1. 读权限(r)

    • 允许查看目录中的文件和子目录列表。
    • 使用命令如 ls 来列出目录内容。
  2. 写权限(w)

    • 允许在目录中创建、删除和重命名文件和子目录。
    • 注意,即使有写权限,用户也需要有对文件的相应权限才能修改文件内容。
  3. 执行权限(x)

    • 对于目录,执行权限允许用户进入目录,即使用 cd 命令切换到该目录。
    • 如果没有执行权限,即使有读权限,用户也无法查看目录内容,因为没有权限“进入”目录。

权限表示

权限通常以一组九个字符表示,分为三组,每组三个字符。每组分别代表所有者、所属组和其他用户的权限。

drwxr-xr-x

 

  • 第一个字符 d 表示这是一个目录。
  • 接下来的三组 rwxr-x 和 r-x 分别表示所有者、所属组和其他用户的权限。

在这个例子中:

  • 所有者(owner)有读(r)、写(w)和执行(x)权限。
  • 所属组(group)和其他用户(others)有读(r)和执行(x)权限,但没有写(w)权限。

 

设置目录权限:

可以使用 chmod 命令来更改目录权限。以下是一些示例:

  • 给所有者添加写权限:chmod u+w directory_name
  • 移除所属组的执行权限:chmod g-x directory_name
  • 允许所有用户读取和执行目录,但不允许写入:chmod a=rx directory_name

权限的特殊情况:

  • 粘滞位(Sticky bit):设置在目录上时,只有文件所有者或超级用户才能删除或重命名文件,即使其他人有写权限。通常用于公共目录,如 /tmp
  • 设置用户ID(Setuid) 和 设置组ID(Setgid):这些权限通常用于文件,但也可以应用于目录。当应用于目录时,它们会影响目录内部创建的新文件和子目录的权限。

5.进行sudo的配置

 在Linux系统中,sudo 命令允许授权用户以超级用户(root)或其他用户的身份执行命令。配置 sudo 涉及编辑 /etc/sudoers 文件,这是 sudo 的配置文件。以下是如何安全地配置 sudo 的步骤:

注意事项

  • 在编辑 /etc/sudoers 文件之前,请确保你具有足够的权限。
  • 使用 visudo 命令而不是直接编辑该文件,因为 visudo 提供了语法检查功能,可以防止配置错误。
  • 请确保备份原始的 /etc/sudoers 文件,以防万一。

配置步骤

1.打开终端。

2.运行以下命令以编辑 /etc/sudoers 文件

sudo visudo

3.在文件中,你可以看到以下类型的条目

root    ALL=(ALL:ALL) ALL

 这表示root用户可以从任何终端(ALL)以任何用户(ALL)的身份执行任何命令(ALL)。

 4.要给特定用户添加 sudo 权限,可以按照以下格式添加一行

username ALL=(ALL:ALL) ALL

 其中 username 是你想要授权的用户名。

 5.如果你只想允许用户执行特定的命令,可以指定命令路径

username ALL=(ALL:ALL) /usr/sbin/service

这将允许用户 username 只能使用 sudo 执行 service 命令。

6.你也可以为用户组添加 sudo 权限,使用 %groupname 代替 username

%wheel ALL=(ALL:ALL) ALL

7. 如果你想要用户在执行 sudo 命令时不需要输入密码,可以使用 NOPASSWD 关键字

username ALL=(ALL:ALL) NOPASSWD: /usr/sbin/service

8.保存并关闭文件。visudo 会自动检查语法错误。

测试配置

  1. 退出终端并重新登录,以确保权限更改生效。

  2. 尝试使用 sudo 执行命令

sudo whoami


http://www.ppmy.cn/embedded/148032.html

相关文章

泷羽sec-shell编程(9)

shell(9) 声明! 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他…

Mac上Stable Diffusion的环境搭建(还算比较简单)

https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Installation-on-Apple-Silicon AI兴起的速度是真的快,感觉不了解点相关的东西都要与时代脱节了,吓得我赶紧找个AIGC看看能不能实现我艺术家的人梦想(绷不住了) 我…

【Spring事务】深入浅出Spring事务从原理到源码

什么是事务 保证业务操作完整性的一种数据库机制 (driver 驱动)事务特定 ACID A 原子性 (多次操作 要不一起成功 要不一起失败 (部分失败 savepoint)) C 一致性 (事务开始时数据状态&#xff0c…

如何使用 Python 连接 SQLite 数据库?

SQLite是一种轻量级的嵌入式数据库,广泛应用于各种应用程序中。 Python提供了内置的sqlite3模块,使得连接和操作SQLite数据库变得非常简单。 下面我将详细介绍如何使用sqlite3模块来连接SQLite数据库,并提供一些实际开发中的建议和注意事项…

flask-admin+Flask-WTF 实现实现增删改查

背景: flask-adminflask-wtf在网上可以搜索到很多资料,但有价值的很少,或许是太简单,或者是很少人这么用,或者。。。,本文将作者近礼拜摸索到的一点经验分享出来,给自己做个记录。 材料&#…

tryhackme-Pre Security-HTTP in Detail(HTTP的详细内容)

任务一:What is HTTP(S)?(什么是http(s)) 1.What is HTTP? (HyperText Transfer Protocol)(什么是 HTTP?(超文本传输协议)) http是你查看网站的时候遵循的…

探索 Vue.js 组件开发:从基础到进阶的完整指南

引言 在现代前端开发中,Vue.js 凭借其易用性和强大的功能,成为了开发者钟爱的框架之一。其核心理念——组件化开发,不仅让代码更加模块化、可维护,还大大提高了开发效率。本文将从基础入手,详细探讨 Vue.js 组件开发的…

uniapp blob格式转换为video .mp4文件使用ffmpeg工具

前言 介绍一下这三种对象使用场景 您前端一旦涉及到文件或图片上传Q到服务器,就势必离不了 Blob/File /base64 三种主流的类型它们之间 互转 也成了常态 Blob - FileBlob -Base64Base64 - BlobFile-Base64Base64 _ File uniapp 上传文件 现在已获取到了blob格式的…