Linux用户管理与常见权限命令

 更新时间:2024年08月24日 14:01:03   作者:Starlet33  
在Linux系统中,用户和组是管理权限和资源访问的基本单元,用户可以属于一个或多个组,组用于集中管理一组用户的权限,文件权限决定了用户或组对文件的访问级别,每个文件或目录都有三个权限集,分别适用于文件所有者(User)、所属组(Group)和其他用户(Others)

用户与组管理

用户与组的基本概念

在Linux系统中,用户和组是管理权限和资源访问的基本单元。每个用户都有一个唯一的用户ID(UID),每个组都有一个唯一的组ID(GID)。用户可以属于一个或多个组,组用于集中管理一组用户的权限。

  • 用户:代表系统中的一个个体,可以是人或系统服务。每个用户都有一个独立的主目录、默认Shell以及独立的文件权限。
  • :一组用户的集合,用于简化权限管理。一个文件可以被多个用户通过组共享和访问。

创建和删除用户账户

在Linux中,用户管理的基本操作包括创建、删除和修改用户账户。以下是一些常用命令:

  • useradd:用于创建一个新的用户账户。
sudo useradd username

该命令创建一个新用户,但不会自动设置密码和主目录。可以使用-m选项创建主目录,-s选项指定默认Shell。

例如,创建一个名为john的新用户,并创建其主目录和默认Shell:

sudo useradd -m -s /bin/bash john
  • passwd:用于设置或更改用户密码。
sudo passwd username

例如,为john设置密码:

sudo passwd john
  • userdel:用于删除用户账户。
sudo userdel username

要删除用户并删除其主目录和邮件文件,可以使用-r选项:

sudo userdel -r john

用户组的创建与管理

用户组的管理与用户类似,可以通过以下命令来创建和管理组:

  • groupadd:用于创建一个新的用户组。
sudo groupadd groupname

例如,创建一个名为developers的新组:

sudo groupadd developers
  • groupdel:用于删除用户组。
sudo groupdel groupname

例如,删除developers组:

sudo groupdel developers
  • usermod:用于修改现有用户的属性,包括将用户添加到某个组。
sudo usermod -aG groupname username

例如,将用户john添加到developers组:

sudo usermod -aG developers john

注意:-a选项确保用户被附加到指定组而不是替换用户的现有组成员身份。

用户与组之间的关系及其配置文件

在Linux系统中,用户与组的相关信息存储在以下几个文件中:

  • /etc/passwd:包含所有用户的基本信息,如用户名、UID、GID、主目录和Shell等。每一行代表一个用户,格式如下:
username:x:UID:GID:comment:home_directory:shell

例如:

john:x:1001:1001::/home/john:/bin/bash
  • /etc/group:包含所有组的基本信息,如组名、GID和组成员列表。格式如下:
groupname:x:GID:user1,user2,...

  • 例如:
developers:x:1002:john,mary
  • /etc/shadow:包含用户密码及相关信息。文件权限严格限制,通常只有root用户可以访问。每一行代表一个用户,格式如下:
username:password:last_changed:min:max:warn:inactive:expire

这些文件是Linux系统中用户与组管理的核心,通过手动编辑这些文件可以直接修改用户和组信息,但通常建议通过系统命令来进行管理以避免错误。

文件权限与访问控制

文件权限的详细讲解

在Linux系统中,文件权限决定了用户或组对文件的访问级别。每个文件或目录都有三个权限集,分别适用于文件所有者(User)、所属组(Group)和其他用户(Others)。每个权限集包括三种类型的权限:

  1. 读(r, Read):允许查看文件内容或列出目录内容。
  2. 写(w, Write):允许修改文件内容或在目录中创建、删除文件。
  3. 执行(x, Execute):允许运行文件(如脚本)或进入目录。

文件权限的表示通常为一个10位字符串,如:

-rwxr-xr--

  • 第一个字符表示文件类型,-表示普通文件,d表示目录。
  • 接下来的三组字符分别表示所有者、组和其他用户的权限。

更改文件权限的命令

  • chmod:用于更改文件或目录的权限。可以使用符号模式或八进制模式指定权限。
    符号模式
  • u 表示所有者(User)
  • g 表示组(Group)
  • o 表示其他用户(Others)
  • a 表示所有人(All)

操作符:

  • + 添加权限
  • - 移除权限
  • = 设置精确权限

例如:

chmod u+rwx filename chmod g+rx filename chmod o-w filename

八进制模式:每种权限对应一个数字,r=4,w=2,x=1。组合这些值可以表示权限。

例如:

chmod 755 filename

这里755表示所有者有rwx权限(4+2+1=7),组和其他用户有rx权限(4+1=5)。

更改文件所有者的命令

  • chown:用于更改文件或目录的所有者和组。
sudo chown owner:group filename

例如,将文件filename的所有者改为john,组改为developers

sudo chown john:developers filename
  • chgrp:用于更改文件或目录的组。
sudo chgrp groupname filename

例如,将文件filename的组改为developers

sudo chgrp developers filename

设置与撤销SUID、SGID和Sticky Bit

  • SUID(Set User ID):当一个文件设置了SUID位(通常是可执行文件),普通用户运行该文件时将获得文件所有者的权限。通常用于需要提升权限的系统程序。
chmod u+s filename

例如:

chmod 4755 /usr/bin/passwd

  • SGID(Set Group ID):当一个文件设置了SGID位时,执行该文件的用户将临时获得文件所属组的权限。对于目录,SGID位保证该目录中创建的所有文件和目录将继承其所属组。
chmod g+s directory_name

  • Sticky Bit:Sticky Bit通常用于目录,当目录设置了Sticky Bit时,只有文件的所有者才能删除或移动该目录中的文件,即使其他用户对目录有写权限。
chmod +t directory_name

例如:

chmod 1777 /tmp

    特殊权限与ACL

    访问控制列表(ACL)的介绍与使用

    在Linux系统中,传统的权限机制(rwx)只适用于用户、组和其他用户,但在更复杂的场景下可能不够灵活。访问控制列表(ACL)允许更细粒度地控制文件或目录的访问权限,针对单个用户或组设置特定的权限。

    • 查看ACL:使用getfacl命令查看文件或目录的ACL。
    getfacl filename

    • 设置ACL:使用setfacl命令设置ACL。
    setfacl -m u:username:permissions filename

    例如,给用户john赋予读取权限:

    setfacl -m u:john:r-- filename

    • 移除ACL
    setfacl -x u:username filename

    例如,移除用户john的ACL:

    setfacl -x u:john filename

    • 默认ACL:可以为目录设置默认ACL,以便在该目录中新创建的文件或子目录自动继承这些权限。
    setfacl -d -m u:username:permissions directory_name

    使用ACL的注意事项

    ACL是一个强大的权限管理工具,但在使用时需要注意以下几点:

    1. 兼容性:并非所有文件系统都支持ACL,使用前请确认文件系统是否启用ACL支持。
    2. 复杂性:ACL提供了灵活的权限控制,但也增加了管理的复杂性。建议仅在需要细粒度控制时使用。
    3. 与传统权限的结合:ACL不会完全替代传统的rwx权限,两者会同时生效。某些情况下,需要同时配置两者以确保权限设置的正确性。

    进阶用户管理技巧

    限制用户资源

    Linux系统允许通过/etc/security/limits.conf文件来限制用户或组的系统资源使用,如最大进程数、最大文件大小等。该文件使用以下格式:

    <domain> <type> <item> <value>

    • <domain>:可以是用户名、组名或*(所有用户)。
    • <type>softhard,分别表示软限制和硬限制。
    • <item>:表示受限制的资源,如nofile(最大文件数)和nproc(最大进程数)。
    • <value>:设置的具体数值。

    例如,限制用户john的最大进程数为100:

    john hard nproc 100

    使用sudo提升权限

    sudo命令允许普通用户在执行特定命令时临时获得超级用户权限。sudo的权限配置通过/etc/sudoers文件进行管理。

    • 添加用户到sudo
    sudo usermod -aG sudo username

    例如,将john添加到sudo组:

    sudo usermod -aG sudo john

    • 编辑/etc/sudoers文件
    sudo visudo

    在此文件中,可以为特定用户或组配置sudo权限。例如,允许john在不输入密码的情况下执行所有命令:

    john ALL=(ALL) NOPASSWD: ALL

    总结

    到此这篇关于Linux用户管理与常见权限命令的文章就介绍到这了,更多相关Linux用户管理权限内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    相关文章

    • 详解如何在Linux系统中更改文件和目录的权限

      详解如何在Linux系统中更改文件和目录的权限

      在Linux系统中,文件和目录权限是安全性和访问控制的关键组成部分,正确设置文件和目录的权限可以确保只有授权的用户能够读取、写入或执行这些文件和目录,本文将详细介绍如何在Linux系统中更改文件和目录的权限,需要的朋友可以参考下
      2023-12-12
    • Linux内核设备驱动之内核的时间管理笔记整理

      Linux内核设备驱动之内核的时间管理笔记整理

      今天小编就为大家分享一篇关于Linux内核设备驱动之内核的时间管理笔记整理,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
      2018-12-12
    • Linux自动删除n天前日志及实例命令

      Linux自动删除n天前日志及实例命令

      这篇文章主要介绍了Linux自动删除n天前日志及实例命令,需要的朋友可以参考下
      2018-10-10
    • 简单谈谈apache与nginx

      简单谈谈apache与nginx

      简单的说apache是计算密集型,nginx是io密集型,各有优势,不存在谁取代谁
      2014-12-12
    • Linux使用HTTPie进行HTTP请求的详细教程

      Linux使用HTTPie进行HTTP请求的详细教程

      HTTPie 是一个用户友好的 HTTP 客户端工具,旨在让与 HTTP 服务器的交互变得更简单、更直观,无论是开发人员、测试人员还是运维工程师,HTTPie 都是执行 HTTP 请求、调试和测试 API 的理想工具,本文将详细介绍Linux使用HTTPie进行HTTP请求的详细教程
      2024-09-09
    • Apache RewriteBase 指令使用介绍

      Apache RewriteBase 指令使用介绍

      RewriteBase指令显式地设置了目录级重写的基准URL。在下文中,你将看到RewriteRule可以用于目录级的配置文件中(.htaccess)并在局部范围内起作用,即规则实际处理的只是剥离了本地路径前缀的一部分
      2016-04-04
    • Linux下wget命令详细介绍

      Linux下wget命令详细介绍

      本文详细讲解了Linux下wget命令的使用方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
      2021-12-12
    • 在Linux上识别同样内容的文件详解

      在Linux上识别同样内容的文件详解

      这篇文章主要给大家介绍了关于如何在Linux上识别同样内容的文件的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Linux具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
      2019-06-06
    • 浅谈Linux 网络 I/O 模型简介(图文)

      浅谈Linux 网络 I/O 模型简介(图文)

      这篇文章主要介绍了浅谈Linux 网络 I/O 模型简介(图文),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
      2017-12-12
    • Linux中Centos7搭建Hadoop服务步骤

      Linux中Centos7搭建Hadoop服务步骤

      本篇文章给大家详细讲述了Linux中Centos7搭建Hadoop服务步骤,对此有需要的读者朋友们可以参考下。
      2018-02-02

    最新评论