linux的权限

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命令可以查看文件或目录的权限信息,例如:

cpp 复制代码
-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

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

cpp 复制代码
chmod a+x filename

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

cpp 复制代码
chown user:group filename

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

cpp 复制代码
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
    • 描述:用于进程间通信的机制。
cpp 复制代码
-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 命令切换到该目录。
    • 如果没有执行权限,即使有读权限,用户也无法查看目录内容,因为没有权限"进入"目录。

权限表示

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

cpp 复制代码
drwxr-xr-x
  • 第一个字符 d 表示这是一个目录。
  • 接下来的三组 rwxr-xr-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 文件

cpp 复制代码
sudo visudo

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

cpp 复制代码
root    ALL=(ALL:ALL) ALL

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

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

cpp 复制代码
username ALL=(ALL:ALL) ALL

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

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

cpp 复制代码
username ALL=(ALL:ALL) /usr/sbin/service

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

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

cpp 复制代码
%wheel ALL=(ALL:ALL) ALL
  1. 如果你想要用户在执行 sudo 命令时不需要输入密码,可以使用 NOPASSWD 关键字
cpp 复制代码
username ALL=(ALL:ALL) NOPASSWD: /usr/sbin/service

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

测试配置

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

  2. 尝试使用 sudo 执行命令

cpp 复制代码
sudo whoami
相关推荐
IT成长日记2 小时前
【Docker基础】Docker数据持久化与卷(Volume)介绍
运维·docker·容器·数据持久化·volume·
热爱生活的猴子2 小时前
阿里云服务器正确配置 Docker 国内镜像的方法
服务器·阿里云·docker
物联网老王4 小时前
Ubuntu Linux Cursor 安装与使用一
linux·运维·ubuntu
艾伦_耶格宇5 小时前
【ACP】阿里云云计算高级运维工程师--ACP
运维·阿里云·云计算
一位摩羯座DBA6 小时前
Redhat&Centos挂载镜像
linux·运维·centos
学习3人组6 小时前
CentOS配置网络
linux·网络·centos
计算机毕设定制辅导-无忧学长6 小时前
西门子 PLC 与 Modbus 集成:S7-1500 RTU/TCP 配置指南(一)
服务器·数据库·tcp/ip
weixin_307779136 小时前
Hive集群之间迁移的Linux Shell脚本
大数据·linux·hive·bash·迁移学习
漫步企鹅7 小时前
【蓝牙】Linux Qt4查看已经配对的蓝牙信息
linux·qt·蓝牙·配对
cui_win7 小时前
【网络】Linux 内核优化实战 - net.core.flow_limit_table_len
linux·运维·网络