Linux系统的账号和权限管理

目录

一、管理用户账号和组账号

1、useradd 

2、passwd

3、usermod

4、userdel 

二、管理目录和文件的属性

1、组账号管理

1)groupadd

2)gpasswd

3)groupdel

4)groups

2、文件权限

1)chmod

2)chown


一、管理用户账号和组账号

用户账号

  • 超级用户:拥有系统中的最高权限,并可以执行系统中的任何操作。
  • 普通用户:是系统中的常规用户,通常用于执行一般的日常任务,如浏览文件、运行应用程序等。权限通常受到限制。
  • 程序用户:是为了运行特定的服务或应用程序而创建的用户账户。通常具有最小的权限。

组账号

  • 基本组(私有组):当用户创建文件或目录时,默认情况下,它们的所属组将设置为用户的基本组。
  • 附加组(公共组):附加组是用户可以加入的其他组。
  • UID:是用户的唯一标识符,用于在系统中区分不同的用户。0 是超级用户(root用户)的标识符,具有最高的权限。
  • GID:是组的唯一标识符,用于在系统中区分不同的组。0 是超级用户(root用户)的基本组的标识符。

用户账号文件    /etc/passwd      有7个字段  
用户名:x密码占位符:UID:GID:用户说明:家目录:登录shell
允许登录系统/bin/bash  不允许登录系统/sbin/nologin  /bin/false         
用户密码文件    /etc/shadow      有9个字段  
用户名:密码字符串:上一次修改密码的时间:密码最短有限期:密码最长有限期:密码过期提前告警的时间:密码过期禁用用户的时间:账号失效的时间:空
  从1970.1.1开始算起   默认为0不限制  默认为99999永不过期  默认为7             

1、useradd 

useradd 是 Linux 和 Unix 系统中用于创建新用户账户的命令。这个命令是 usermoduserdelpasswd 等命令的一部分,这些命令一起构成了用户管理的基础工具。以下是 useradd 命令的一些基本用法和选项:

基本用法:

  1. 指定用户主目录:

    sudo useradd -d /home/newhome username

    这会创建一个新用户,并指定其主目录为 /home/newhome

  2. 指定用户ID:

    sudo useradd -u uid username

    这会创建一个新用户,并分配指定的用户ID(uid)。

  3. 指定用户组:

    sudo useradd -g groupname username

    这会创建一个新用户,并将其加入到指定的用户组。

  4. 创建用户并指定其Shell:

    sudo useradd -s /bin/bash username

    这会创建一个新用户,并指定其默认 shell 为 /bin/bash

常用选项:

  • -m:在创建用户的同时,为其创建一个家目录。
  • -M:不为用户创建家目录。
  • -e YYYY-MM-DD:设置账户的过期日期。
  • -u:指定UID
  • -g:基本组名或GID
  • -G:附加组名或GID
  • -d:指定家目录
  • -s:指定登录shell

示例:

  1. 创建一个新用户 bob,并设置其家目录为 /home/bob

    sudo useradd -m -d /home/bob bob
  2. 创建一个新用户 alice,设置其默认 shell 为 /bin/bash

    sudo useradd -s /bin/bash alice
  3. 创建一个新用户 service,设置其为系统用户,并添加到 servicegroup 用户组:

    sudo useradd -r -g servicegroup service

2、passwd

passwd 是一个用于更改用户密码的命令。它可以允许用户更改自己的密码,也可以允许超级用户(root)更改其他用户的密码。以下是 passwd 命令的一些基本用法和选项:

基本用法:

  1. 更改当前用户密码:

    passwd

    这会提示您输入当前用户的旧密码,然后要求您输入新密码两次以进行确认。

  2. 更改指定用户密码(需要超级用户权限):

    passwd username

    这会提示超级用户输入要更改密码的用户名,并要求输入新密码两次以进行确认。

常用选项:

  • -d:删除用户密码,使用户账户变成无密码状态。
  • -l:锁定用户账户,禁止用户登录。
  • -u:解锁用户账户,允许用户登录。
  • -S:显示密码的状态信息,如过期时间、是否被锁定等。

示例:

  1. 更改用户 alice 的密码:

    passwd alice
  2. 锁定用户 bob 的账户:

    passwd -l bob
  3. 解锁用户 alice 的账户:

    passwd -u alice

3、usermod

usermod 是一个用于修改用户账户属性的命令,它可以用于修改用户的各种属性,如用户名、用户ID、主目录、默认shell等。以下是 usermod 命令的一些基本用法和选项:

基本用法:

  1. 修改用户的用户名:

    usermod -l new_username old_username

    这会将用户的用户名从 old_username 修改为 new_username

  2. 修改用户的用户ID(UID):

    usermod -u new_uid username

    这会将用户的用户ID修改为 new_uid

  3. 修改用户的主目录:

    usermod -d /new/home/dir username

    这会将用户的主目录修改为 /new/home/dir

常用选项:

  • -c:用于添加一些关于用户的描述信息。
  • -g:修改用户的主要用户组。
  • -G:修改用户的附加用户组。
  • -a:在 -G 选项中使用,用于将用户添加到附加用户组,而不是覆盖原有的用户组。
  • -e:设置账户的过期日期。

4、userdel 

userdel 是一个用于删除用户账户的命令,它用于从系统中删除指定的用户账户及相关文件。以下是 userdel 命令的一些基本用法和选项:

基本用法:

  1. 删除用户账户:

    userdel username

    这会删除系统中的指定用户账户及其相关文件,但不会删除该用户的主目录(默认情况下)。

  2. 删除用户账户及其主目录:

    userdel -r username

    添加 -r 选项会删除用户账户及其关联的主目录和文件。

常用选项:

  • -f:强制删除用户账户,即使用户当前登录或用户的进程仍在运行中。
  • -r:同时删除用户的主目录及其相关文件。
  • -Z:删除用户的 SELinux 用户记录。

二、管理目录和文件的属性

系统环境初始化配置文件   /etc/profile      /etc/bashrc    对所有用户有效     
用户环境初始化配置文件~/.bash_profile      ~/.bashrc     ~/.bash_logout 只对当前用户有效  
/etc/profile   ~/.bash_profile设置用户每次登录时要执行的命令(前面加export
/etc/bashrc    ~/.bashrc设置切换shell环境时(包括登录系统时)要执行的命令
~/.bash_logout  设置退出登录或shell环境时执行的命令

组账号文件   /etc/group      有4个字段                             
             组账号名:x占位符:GID号:组账号成员  

1、组账号管理

1)groupadd

groupadd 是一个用于在系统中创建新用户组的命令。它允许管理员在系统中添加一个新的用户组,并可以指定该用户组的组ID(GID)和其他属性。以下是 groupadd 命令的基本用法和选项:

基本用法:

  1. 创建新用户组:
    groupadd groupname   #这会在系统中创建一个名为 groupname 的新用户组。

常用选项:

  • -g GID:指定新用户组的组ID(GID)。如果未指定,系统将自动分配一个未被使用的GID。
  • -r:创建一个系统用户组。这将为用户组分配一个低的GID,通常在500以下。

2)gpasswd

gpasswd 是一个用于管理用户组的命令,它允许管理员为用户组设置密码、添加或删除组成员等操作。以下是 gpasswd 命令的基本用法和选项:

基本用法:

  1. 设置用户组密码:

    gpasswd groupname

    这会提示您输入一个密码,并将其与指定的用户组相关联。

  2. 添加用户到用户组:

    gpasswd -a username groupname

    这会将指定的用户添加到指定的用户组中。

  3. 从用户组中删除用户:

    gpasswd -d username groupname

    这会从指定的用户组中删除指定的用户。

常用选项:

  • -A username:指定一个用户作为管理员。管理员可以添加或删除用户组成员,以及更改用户组密码。
  • -M username1,username2,...:直接设置用户组的成员列表,取代原有成员列表。
  • -R:指定用户组为只读模式,禁止普通用户修改用户组。

3)groupdel

groupdel 是一个 Linux 命令,用于删除系统中的一个用户组。在删除用户组之前,通常需要确保没有任何用户属于该组,否则会出现错误。

命令格式如下:

groupdel [options] groupname

其中:

  • groupname 是要删除的用户组的名称。

选项可以包括一些额外的参数,如 -f 用于强制删除组,即使仍有用户属于该组。

4)groups

groups 命令用于显示当前用户所属的用户组列表。在执行此命令时,系统会返回当前用户所属的所有用户组名称。

命令格式如下:

groups [username]

其中:

  • username 是要查询其所属用户组的用户名。如果未指定用户名,则默认为当前登录用户。

示例:

groups

这会显示当前登录用户所属的所有用户组。

groups username

这会显示指定用户(username)所属的所有用户组。

注意:groups 命令仅显示当前用户的用户组列表,不会显示其他用户的信息。

查询登录系统的用户: w  who  users

2、文件权限

1)chmod

chmod 是一个用于修改文件或目录权限的命令,它允许用户设定文件或目录的读取、写入和执行权限。以下是 chmod 命令的基本用法和选项:

基本用法:

  1. 设定文件权限:

    chmod permissions filename

    这会将指定文件的权限设置为 permissions 所指定的权限。

  2. 设定目录权限:

    chmod permissions directory

    这会将指定目录的权限设置为 permissions 所指定的权限。

权限表示方式:

  • 数字形式表示权限:

    • 0:没有权限
    • 1:执行权限
    • 2:写入权限
    • 4:读取权限
    • 可以通过将这些数字相加来指定多个权限。例如,7 表示读、写、执行权限4 + 2 + 1)。
  • 符号形式表示权限:

    • r:读权限
    • w:写权限
    • x:执行权限
    • +:添加权限
    • -:移除权限
    • =:设定权限

常用选项:

  • -R:递归地应用权限修改,包括目录下的所有文件和子目录。

示例:

  1. 将文件 example.txt 的权限设置为所有者具有读取和写入权限,组用户具有读取权限,其他用户具有执行权限:

    chmod 640 example.txt
  2. 将目录 documents 及其下所有文件和子目录的权限设置为所有者具有读、写、执行权限,组用户和其他用户具有只读权限:

    chmod -R 755 documents
  3. 将文件 script.sh 的所有者添加执行权限:

    chmod u+x script.sh

注意:在使用 chmod 命令时,请务必谨慎,确保不会意外地更改了系统中文件或目录的权限,以免造成不必要的问题。

2)chown

chown 是一个用于改变文件或目录的所有者(owner)和/或所属组(group)的命令。这个命令通常由系统管理员使用,以便在需要时更改文件或目录的所有者和所属组。以下是 chown 命令的基本用法和选项:

基本用法:

  1. 改变文件的所有者和/或所属组:

    chown [options] owner[:group] file(s)

    这会将指定文件的所有者改变为 owner,并可选地将所属组改变为 group。如果未指定 group,则会使用当前文件的所属组。

  2. 递归地改变目录及其下所有文件和子目录的所有者和/或所属组:

    chown -R [options] owner[:group] directory(s)

    这会递归地改变指定目录下的所有文件和子目录的所有者和/或所属组。

常用选项:

  • -R, --recursive:递归地改变目录及其下所有文件和子目录的所有者和/或所属组。
  • -v, --verbose:显示每个文件的改变详细信息。
  • --reference=ref_file:从 ref_file 中复制文件所有者和/或所属组的信息。
  • -h, --no-dereference:不跟踪符号链接的目标。

示例:

  1. 将文件 example.txt 的所有者改变为 john,所属组改变为 developers

    chown john:developers example.txt
  2. 将文件 file1.txt 的所有者改变为和文件 file2.txt 相同的所有者:

    chown --reference=file2.txt file1.txt
  3. 将符号链接的目标文件的所有者改变为 admin,而不是链接本身的所有者:

    chown -h admin symlink_target

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/1373.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【python】活学活用之字典用法实战——计数器

【python】活学活用之字典用法实战——计数器 字典也可以用作计数器。例如,我们可以使用字典来统计一段文本中每个单词出现的次数: # 定义一个名为 word_count 的函数,它接受一个参数:text def word_count(text):# 创建一个空字典,用于存储每个单词及其出现的次数counts…

Elasticsearch:(二)2.安装kibana

1.环境安装介绍: 安装java环境安装Elasticsearch安装kibana安装Elasticsearch-head插件 本节文章主要讲解kibana的安装。 2.下载 下载Elasticsearch对应的版本,参考官方自身产品兼容版本:支持一览表 | Elastic 下载地址:Kibana 7.17.20 | Elastic Kibana 7.17.20 | Ela…

操作教程丨MaxKB+Ollama:快速构建基于大语言模型的本地知识库问答系统

2024年4月12日,1Panel开源项目组正式对外介绍了其官方出品的开源子项目——MaxKB(github.com/1Panel-dev/MaxKB)。MaxKB是一款基于LLM(Large Language Model)大语言模型的知识库问答系统。MaxKB的产品命名内涵为“Max …

C++ stl容器stack,queue,priority_queue的底层模拟实现

目录 前言: 文档借鉴:Reference - C Reference 1.deque a.deque的结构特点: b.deque的迭代器结构: c.面试题: 2.stack 3.queue 4.仿函数 5.priority_queue 总结: 前言: 本篇一共简单…

04节-51单片机-数码管模块

1.静态数码管显示 LED数码管:数码管是一种简单、廉价的显示器,是由多个发光二极管封装在一起组成“8”字型的器件 下图展示了数码管的线路连接 数码管的连接方式分为,公共端,共阴极和共阳极连接: 多个数码管共用引…

存储过程的查询

Oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645 在实际使用中,经常会需要查询数据库中已有的存储过程或者某一个存储过程的内容, 下面就介绍-下如何查询存储过程。 这需要使用到数据字典 user_sou…

MacBook系统升级导致idea无法打开

1 背景 MacBook的MacOS系统升级之后,之前安装的idea无法打开了。idea卸载重装仍然无法打开。 2 原因排查 2.1 寻找报错原因 为了了解具体的报错原因,通过“访达-应用程序”找到“IntelliJ IDEA”,然后右击打开“显示包内容”选项进入Intel…

Linux设置真实IP

1.查看ens33网卡信息 vi /etc/sysconfig/network-scripts/ifcfg-ens33 #添加以下内容 BOOTPROTODHCP #协议类型 dhcp bootp none ONBOOTyes #启动时是否激活 yes | no#修改文件完成后,重启网络 service network restartping www.baidu.com #验证网络是否生效 ifco…

宝塔面板国际版aaPanel 精简版安装

宝塔面板国际版aaPanel 精简版安装 很多人都知道宝塔面板,但不知道宝塔面板还有英文版,宝塔面板英文版不是单纯的宝塔面板的翻译,而是根据老外的使用习惯及国外的网络环境做了一定的优化, 比如:去掉了手机号验证、去…

【大语言模型LLM】-大语言模型如何编写Prompt?

第一部分 环境配置 1.1 安装 Anaconda 官网:Anaconda清华源镜像:Anaconda推荐安装版本:Anaconda Python 3.11 1.2 创建虚拟环境 打开:anaconda prompt创建名为env_name的虚拟环境:conda create -n env_name python…

数据结构----顺序表

在学习顺序表之前,我们先来了解一下数据结构。 数据是什么呢? 我们在生活中常见的名字,数字,性别等都属于数据。 结构又是什么呢? 在计算机中,结构就是用来保存数据的方式。 总的来说,数据…

【Cookie,Session,Token,JWT的区别】

一、Cookie Cookie 是在 HTTP 协议下,维护客户工作站上信息的一种方式。Cookie 是由 Web 服务器保存在用户浏览器上的小文本数据文件,它可以包含有关用户的信息。cookie是不可跨域的,每个cookie都会绑定一个单一的域名,并只能在指…

Python 基础02-Python 入门

官方文档:3.10.13 Documentation 一、Python 代码编写习惯 1. Python 中的编码 在 Python 3 版本之后,Python 默认使用 UTF-8 编码。UTF-8 是一种针对 Unicode 的可变长度字符编码。 2. 注释 注释可以对代码起到解释说明的作用,注释内容…

Linux的启动过程,了解一下?

Linux 系统启动过程 linux启动时我们会看到许多启动信息。 Linux系统的启动过程并不是大家想象中的那么复杂,其过程可以分为5个阶段: 内核的引导。运行 init。系统初始化。建立终端 。用户登录系统。 init程序的类型: SysV: init, CentO…

PVE8.1安装DSM 7.2

PVE8.1,安装和优化PVE8.1安装DSM 7.2,设置虚拟机具体操作DSM安装引导详细篇,rr引导激活套件Active Backup for Business 方法一,方法二PVE控制synology开关机,安装Qemu Guest Agent

linux——yum工具详解

yum是linux中自动解决软件包依赖关系的管理器 同时,yum也是一个rpm软件 这里使用yum install nginx安装nginx

CommunityToolkit.Mvvm笔记---ObservableValidator

ObservableValidator 是实现 INotifyDataErrorInfo 接口的基类,它支持验证向其他应用程序模块公开的属性。 它也继承自 ObservableObject,因此它还可实现 INotifyPropertyChanged 和 INotifyPropertyChanging。 它可用作需要支持属性更改通知和属性验证的…

目标检测中加入背景样本的思考,基于NanoDetPlus的QualityFocalLoss(原创)

文章目录 引言训练集加入无目标图像的作用NanoDetPlus的损失函数无目标图像在训练时怎么计算loss 引言 在目标检测的很多应用场景中,大多数情况下视野中是不存在检测目标的,但是在这些无目标场景下,又很容易出现误检框。为了解决这个问题&am…

Oracle解析exp、imp及常见的问题

前言 在工作中经常需要不同数据库的导入和导出。exp和imp可以实现数据的迁移。 exo会转储产生对应的二进制文件,里面包括数据的定义信息、数据内容等,即为dump文件。 下面是使用exp和imp的一些场景 exp和imp主要有4中模式: 1)数据库模式 数据库模式也就是我们说的全备…

新手理解Hugging Face:与Docker Hub对比,理解Hugging Face到底是啥东西

可以将Hugging Face类比为Docker Hub,但它们之间有一些关键区别。我们将分别解释它们的相似之处和不同之处。 相似之处: 集中存储:Hugging Face Hub和Docker Hub都是集中式存储库,提供了一个可供用户查找、分享和使用的模型或镜…