当前位置: 首页 > news >正文

Linux速成入门教程——从零基础开始快速入门,一文了解Linux用户管理与权限

2.1 用户与组管理

用户与组的基本概念

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


2.2 文件权限与访问控制

文件权限的详细讲解

在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


2.3 特殊权限与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权限,两者会同时生效。某些情况下,需要同时配置两者以确保权限设置的正确性。

2.4 进阶用户管理技巧

限制用户资源的/etc/security/limits.conf

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用户管理与权限

2.1 用户与组管理 用户与组的基本概念 在Linux系统中&#xff0c;用户和组是管理权限和资源访问的基本单元。每个用户都有一个唯一的用户ID&#xff08;UID&#xff09;&#xff0c;每个组都有一个唯一的组ID&#xff08;GID&#xff09;。用户可以属于一个或多个组&#xff…...

网工内推 | 宁德时代IT运维,晋升空间大,带薪年假,包吃包住

01 宁德时代 &#x1f537;招聘岗位&#xff1a;IT运维服务 &#x1f537;任职要求 1、大专及以上学历专业不限&#xff0c;应届毕业生或计算机、网络维护等相关专业优先&#xff1b; 2、具备较强的服务意识和良好的语言表达能力、沟通能力、记忆能力、心理承受能力和学习能力…...

Linux---系统安全

文章目录 系统安全系统账号清理密码安全控制命令历史限制终端自动注销如设置时间短的处理方式 使用su命令切换用户用途及用法密码验证限制使用su命令的用户查看su操作记录限制使用su命令的用户查看su操作记录su命令的安全隐患 PAM(Pluggable Authentication Modules)可插拔式认…...

手写数字识别实战

全部代码&#xff1a; import matplotlib.pyplot import torch from torch import nn # nn是完成神经网络相关的一些工作 from torch.nn import functional as F # functional是常用的一些函数 from torch import optim # 优化的工具包import torchvision from matplotlib …...

二叉树遍历

二叉树的遍历是二叉树操作中的一个基本且重要的概念&#xff0c;它指的是按照一定的规则访问二叉树中的每个节点&#xff0c;并且每个节点仅被访问一次。常见的二叉树遍历方式有四种&#xff1a;前序遍历&#xff08;Pre-order Traversal&#xff09;、中序遍历&#xff08;In-…...

uni app 调用前置摄像头

uniapp开发app并没有相关Api调用前置摄像头。只能使用5app的api 调用前置摄像头拍照 plus.camera.getCamera(index) 获取需要操作的摄像头对象&#xff0c;如果要进行拍照或摄像操作&#xff0c;需先通过此方法获取摄像头对象 index指定要获取摄像头的索引值&#xff0c;1表…...

哈工大李治军老师OS课程笔记(4)——内存管理

一 内存使用与分段&#xff08;实验六&#xff09; 内存是如何用起来的&#xff1f; 内存使用&#xff1a;将程序放在内存中&#xff0c;PC指向开始地址 重定位&#xff1a;修改程序中的地址&#xff08;是相对地址&#xff09; 什么时候完成重定位&#xff1f; 编译时加基址…...

代码随想录算法训练营第43天:动态规划part10:子序列问题

300.最长递增子序列 力扣题目链接(opens new window) 给你一个整数数组 nums &#xff0c;找到其中最长严格递增子序列的长度。 子序列是由数组派生而来的序列&#xff0c;删除&#xff08;或不删除&#xff09;数组中的元素而不改变其余元素的顺序。例如&#xff0c;[3,6,2…...

传智教育引通义灵码进课堂,为技术人才教育学习提效

7 月 17 日&#xff0c;阿里云与传智教育在阿里巴巴云谷园区签署合作协议&#xff0c;双方将基于阿里云智能编程助手通义灵码在课程共建、品牌合作及产教融合等多个领域展开合作&#xff0c;共同推进 AI 教育及相关业务的发展&#xff0c;致力于培养适应未来社会需求的高素质技…...

企业信息化建设搞得好了叫系统工程,搞不好叫面子工程

2024-06-13 09:26贝格前端工场...

程序员如何平衡日常编码工作与提升式学习?

在快速变化的编程领域中&#xff0c;平衡日常编码工作与个人成长确实是一个重要且富有挑战性的议题。以下是我对这一问题的看法和建议&#xff1a; 1. 认识到平衡的重要性 首先&#xff0c;理解两者之间的平衡并非零和游戏&#xff0c;而是相辅相成的。高效的编码工作能够为个…...

Linux---文件系统和日志分析

文章目录 文件系统和日志分析inode和block概述inode包含文件的元信息用stat命令可以查看某个文件的inode信息Linux系统文件三个主要的时间属性 目录文件的结构用户通过文件名打开文件时&#xff0c;系统内部的过程查看inode号码的方法硬盘分区后的结构访问文件的简单流程inode的…...

MySQL 体系架构

文章目录 一. MySQL 分支与变种1. Drizzle2. MariaDB3. Percona Server 二. MySQL的替代1. Postgre SQL2. SQLite 三. MySQL 体系架构1.连接层2 Server层&#xff08;SQL处理层&#xff09;3. 存储引擎层1&#xff09;MySQL官方存储引擎概要2&#xff09;第三方引擎3&#xff0…...

跨站脚本攻击漏洞

1.JavaScript JavaScript 是一种脚本&#xff0c;一门编程语言&#xff0c;它可以在网页上实现复杂的功能&#xff0c;网页展现给你的不再是简单的静态信息&#xff0c;而是实时的内容更新&#xff0c;交互式的地图&#xff0c;2D/3D动画&#xff0c;滚动播放的视频等等。 &a…...

RabbitMQ入门与进阶

RabbitMQ入门与进阶 基础篇1. 为什么需要消息队列?2. 什么是消息队列?3. RabbitMQ体系结构介绍4. RabbitMQ安装5. HelloWorld6. RabbitMQ经典用法(工作模式)7. Work Queues8. Publish/Subscribe9. Routing10. Topics 进阶篇1. RabbitMQ整合SpringBoot2. 消息可靠性投递故障情…...

Unity新输入系统 之 InputActions(输入配置文件)

本文仅作笔记学习和分享&#xff0c;不用做任何商业用途 本文包括但不限于unity官方手册&#xff0c;unity唐老狮等教程知识&#xff0c;如有不足还请斧正​ 首先你应该了解新输入系统的基本单位Unity新输入系统 之 InputAction&#xff08;输入配置文件最基本的单位&#xff0…...

Linux运维篇-误删/bin,/sbin目录怎么修复系统

这里写自定义目录标题 前言实例挂载镜像&#xff0c;重启系统进入救援模式拷贝镜像系统中的/bin和/sbin目录到原系统重启系统 总结 前言 当你看到这篇文章的时候&#xff0c;你的系统可能已经无法登录&#xff0c;或者正在处于登录状态但是不能执行任何常规的命令&#xff0c;…...

构建高效外贸电商系统的技术探索与源码开发

在当今全球化的经济浪潮中&#xff0c;外贸电商作为连接国内外市场的桥梁&#xff0c;其重要性日益凸显。一个高效、稳定、功能全面的外贸电商系统&#xff0c;不仅能够助力企业突破地域限制&#xff0c;拓宽销售渠道&#xff0c;还能提升客户体验&#xff0c;增强品牌竞争力。…...

Java设计模式:中介者模式详解与最佳实践

Java设计模式&#xff1a;中介者模式详解与最佳实践 1. 引言 在软件开发过程中&#xff0c;特别是复杂系统的构建中&#xff0c;模块间的交互往往成为影响代码质量的重要因素。当模块之间耦合度过高时&#xff0c;系统的维护、扩展和理解成本都会显著增加。为了降低模块之间的…...

Matlab绘制像素风字母颜色及透明度随机变化动画

本文是使用 Matlab 绘制像素风字母颜色及透明度随机变化动画的教程 实现效果 实现代码 如果需要更改为其他字母组合&#xff0c;在下面代码的基础上简单修改就可以使用。 步骤&#xff1a;(1) 定义字母形状&#xff1b;(2) 给出字母组合顺序&#xff1b;(3) 重新运行程序&#…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用&#xff1a;实现组件通用属性的渐变过渡效果&#xff0c;提升用户体验。支持属性&#xff1a;width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项&#xff1a; 布局类属性&#xff08;如宽高&#xff09;变化时&#…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一&#xff09; 1. CSI-2层定义&#xff08;CSI-2 Layer Definitions&#xff09; 分层结构 &#xff1a;CSI-2协议分为6层&#xff1a; 物理层&#xff08;PHY Layer&#xff09; &#xff1a; 定义电气特性、时钟机制和传输介质&#xff08;导线&#…...

基于Uniapp开发HarmonyOS 5.0旅游应用技术实践

一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架&#xff0c;支持"一次开发&#xff0c;多端部署"&#xff0c;可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务&#xff0c;为旅游应用带来&#xf…...

服务器硬防的应用场景都有哪些?

服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式&#xff0c;避免服务器受到各种恶意攻击和网络威胁&#xff0c;那么&#xff0c;服务器硬防通常都会应用在哪些场景当中呢&#xff1f; 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile&#xff0c;新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心

当仓库学会“思考”&#xff0c;物流的终极形态正在诞生 想象这样的场景&#xff1a; 凌晨3点&#xff0c;某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径&#xff1b;AI视觉系统在0.1秒内扫描包裹信息&#xff1b;数字孪生平台正模拟次日峰值流量压力…...