linux 用户鉴权文件学习

一、 /etc/sudoers

/etc/sudoers用于管理 Linux 系统上特权操作的访问控制列表(ACL)。该文件指定了哪些用户、组或主机可以执行特权命令,以及他们可以执行哪些命令。

# sudoers file.
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for the details on how to write a sudoers file.
## Override builtin defaults
Defaults    syslog=auth,timestamp_timeout=300,!set_logname
Defaults:admin    lecture=always
Defaults:admin    lecture_file=/etc/sudoers.lecture
Defaults:admin    passwd_timeout=0.5
Defaults:hwnoc !requiretty# Host alias specification# Cmnd alias specification
Cmnd_Alias  SHELLS = /bin/sh,/bin/ash,/bin/bsh,/bin/bash,/bin/csh, \/bin/ksh,/bin/rsh,/bin/tcsh,/bin/zsh
Cmnd_Alias  VIETC = /usr/sbin/visudo,/usr/sbin/vipw,/usr/sbin/vigr
Cmnd_Alias  USERADD = /usr/sbin/useradd,/usr/sbin/adduser
Cmnd_Alias SUPERMIT = !/usr/bin/sudo *,!/bin/su *,/bin/su -c*,/bin/su [a-zA-Z0-9]*,!/bin/su *root*
Cmnd_Alias SUDOEXEC = /bin/sh [/~.a-zA-z0-9]*, /bin/sh -c*, \/bin/ash [/~.a-zA-z0-9]*, /bin/ash -c*, \/bin/bsh [/~.a-zA-z0-9]*, /bin/bsh -c*, \/bin/bash [/~.a-zA-z0-9]*, /bin/bash -c*, \/bin/csh [/~.a-zA-z0-9]*, /bin/csh -c*, \/bin/ksh [/~.a-zA-z0-9]*, /bin/ksh -c*, \/bin/rsh [/~.a-zA-z0-9]*, /bin/rsh -c*, \/bin/tcsh [/~.a-zA-z0-9]*, /bin/tcsh -c*, \/bin/zsh [/~.a-zA-z0-9]*, /bin/zsh -c*## settings from ali local# default
%users  ALL=(users) ALL
root    ALL=(ALL) ALLCmnd_Alias WHITELIST1 = /bin/grep
mysql  ALL=(ALL) NOPASSWD:WHITELIST1Cmnd_Alias WHITELIST2 = /usr/bin/crontab -l -u admin,/usr/bin/crontab -u admin -l
guest  ALL=(ALL) NOPASSWD:WHITELIST2appadmin  ALL=(ALL) NOPASSWD:ALL,SUPERMIT,!SHELLS,SUDOEXEC,!VIETC,!USERADD%tbops  ALL=(ALL) ALL,SUPERMIT,!SHELLS,SUDOEXEC%tbpe  ALL=(ALL) ALL,SUPERMIT,!SHELLS,SUDOEXEC,!VIETC%tbdba  ALL=(ALL) ALL,SUPERMIT,!SHELLS,SUDOEXEC,!VIETC%tbnoc  ALL=(ALL) ALL,SUPERMIT,!SHELLS,SUDOEXEC,!VIETC,!USERADD%tbscm  ALL=(ALL) ALL,SUPERMIT,!SHELLS,SUDOEXEC,!VIETC,!USERADD%tbdev  ALL=(ALL) ALL,SUPERMIT,!SHELLS,SUDOEXEC,!VIETC,!USERADD%tbtest  ALL=(ALL) ALL,SUPERMIT,!SHELLS,SUDOEXEC,!VIETC,!USERADD# Compatible with the /home/staragent/plugins/osteam.src/osteam.cur/account.sh
Cmnd_Alias ALINOC_CMD = /usr/bin/kill,/usr/sbin/shutdown,/usr/sbin/halt,/usr/sbin/reboot,/bin/sh,/bin/ash,/bin/bsh,/bin/bash,/bin/csh,/bin/ksh,/bin/rsh,/bin/tcsh,/bin/zsh,/usr/bin/passwd,/usr/bin/chsh,/usr/bin/chfn,/usr/bin/su,/bin/su,/usr/sbin/su,/usr/sbin/visudo,/usr/sbin/vipw,/usr/sbin/vigr,/usr/sbin/useradd,/usr/sbin/adduser,/user/sbin/userdel,/user/sbin/usermod,/user/sbin/userpasswd,/user/sbin/groupadd,/user/sbin/groupdel,/user/sbin/groupmod,/usr/bin/sudo*,/bin/su*,/bin/su [a-zA-Z0-9]*,/bin/su *root*,/bin/chmod,/bin/chown,/bin/chattr,/bin/rm,/bin/rmdir,/sbin/rmmod,/sbin/insmod
hwnoc  ALL=(ALL) NOPASSWD:ALL,SUPERMIT,!VIETC,!USERADD,!ALINOC_CMDadmin  ALL=(ALL) NOPASSWD:ALL,SUPERMIT,!VIETC,!USERADD%admin  ALL=(ALL) NOPASSWD:ALL,SUPERMIT,!VIETC,!USERADD

1.1、Defaults

定义默认信息,包括默认的用户、默认的命令、默认的主机等。

格式:Defaults parameter=value

如文件中的Defaults syslog=auth,timestamp_timeout=300,!set_logname这条规则意味着当用户使用 sudo 命令时,sudo 命令的执行信息将被记录到系统的安全日志中,并且超时时间为 5 分钟,而且不会记录当前用户的登录名信息。

  • syslog:指定日志级别和设备,这里的 auth 表示将 sudo 命令的执行信息记录在系统的安全日志中。
  • timestamp_timeout:指定 sudo 命令的超时时间,这里是 300 秒,也就是 5 分钟。
  • !set_logname:表示禁用记录当前用户的登录名信息。
格式:Defaults:admin parameter=value
# 针对admin用户设置
Defaults:admin    lecture=always
Defaults:admin    lecture_file=/etc/sudoers.lecture
Defaults:admin    passwd_timeout=0.5lecture:指定 sudo 命令的提示信息,这里是 always,表示每次使用 sudo 命令时都会提示用户一条信息。
lecture_file:指定 sudo 命令的提示信息来源,这里是 /etc/sudoers.lecture,表示提示信息将从该文件中读取。
passwd_timeout:指定密码的超时时间,这里是 0.5,表示在输入密码后 0.5 秒内必须使用 sudo 命令,否则需要重新输入密码。# 意味着当名为 admin 的用户使用 sudo 命令时,每次都会收到一条来自 /etc/sudoers.lecture 文件的提示信息,提醒用户操作的风险和注意事项。另外,用户必须在输入密码后 0.5 秒内使用 sudo 命令,否则需要重新输入密码。

Defaults:hwnoc !requiretty

!requiretty:表示不要求用户在 tty 控制台上使用 sudo 命令。# 通常情况下,sudo 命令要求用户必须在 tty 控制台上输入密码,这样可以确保用户是在本地执行命令,而不是在远程机器上执行。然而,在某些情况下,用户可能需要在无 tty 的情况下使用 sudo 命令,如通过 ssh 等远程连接执行命令。这时就需要通过 !requiretty 参数来禁用 tty 控制台的要求。因此,这条规则意味着当名为 hwnoc 的用户使用 sudo 命令时,不需要在 tty 控制台上输入密码。

1.2、Cmnd_Alias

定义命令别名,将一个或多个命令映射到一个别名。

格式:Cmnd_Alias aliasname=command1,command2,...

与此类似的还有:

  • User_Alias:定义用户别名,将一个或多个用户映射到一个别名。

  • Runas_Alias:定义运行用户别名,将一个或多个运行用户映射到一个别名。

  • Host_Alias:定义主机别名,将一个或多个主机映射到一个别名。

1.3、对用户及用户组权限限制

admin  ALL=(ALL) NOPASSWD:ALL,SUPERMIT,!VIETC,!USERADD

解释:

  • admin:指定用户名为 admin。
  • ALL:指定所有主机都适用该规则。
  • (ALL):指定使用任何用户身份执行命令。
  • NOPASSWD:ALL:表示在执行 sudo 命令时不需要输入密码。
  • SUPERMIT:指定 SUPERMIT 命令别名,可以在执行 sudo 命令时调用。
  • !VIETC:表示不允许执行 VIETC 命令别名。
  • !USERADD:表示不允许执行 USERADD 命令别名。

因此,这条规则意味着用户 admin 在所有主机上可以使用 sudo 命令以任何用户身份执行任何命令,而且不需要输入密码。此外,用户 admin 可以使用 SUPERMIT 命令别名,但是不能使用 VIETC 和 USERADD 命令别名,以保证系统的安全性和稳定性。

%tbops  ALL=(ALL) ALL,SUPERMIT,!SHELLS,SUDOEXEC

这条规则意味着 tbops 用户组中的用户可以在所有主机上使用 sudo 命令以任何用户身份执行任何命令,同时也可以使用 SUPERMIT 命令别名和 SUDOEXEC 命令别名。但是,用户不允许执行 SHELLS 命令别名,以保证系统的安全性和稳定性。

二、 /etc/passwd

/etc/passwd是系统用户配置文件,存储了系统中所有用户的基本信息,并且所有用户都可以对此文件执行读操作。
文件示例如下:

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync

格式为:

用户名:密码:用户标识号:组标识号:注释性描述:主目录:登录 Shell

具体解释如下表:

字段解释
用户名代表用户账户的字符串,通常长度不超过 8 个字符,并且由大小写字母和/或数字组成
密码存放着加密后的用户密码字,但是由于安全隐患,现在多数 Linux 系统使用 shadow 技术将真正的加密后的用户密码字存放到 /etc/shadow 文件中
UID一个整数,系统内部用它来标识用户。一般情况下它与用户名是一一对应的。
GID记录用户所属的用户组。它对应着 /etc/group 文件中的一条记录。
用户信息记录着用户的一些个人情况,例如用户的真实姓名、电话、地址等,这个字段并没有什么实际的用途。
用户主目录用户的起始工作目录,即用户在登录到系统之后所处的目录。
登录shell用户登录后启动的进程,也就是用户与 Linux 系统之间的接口。

密码字段x*的区别

x:表示用户密码已经被加密,实际密码存储在 /etc/shadow 文件中。
*:表示密码字段为空,也就是用户无法通过密码登录,比如系统用户或者没有密码的用户

各种 /etc/passwd 之间的区别

文件名介绍
/etc/passwd这是最常见的 /etc/passwd 文件,用于存储所有用户账户的信息,包括用户名、UID、GID、密码、用户信息、主目录和默认 shell 程序等。
/etc/passwd-这是 /etc/passwd 文件的备份文件,通常在管理员对 /etc/passwd 文件进行修改时,系统会自动创建该备份文件。
/etc/passwd+这是一些 Linux 发行版(如 Gentoo)使用的 /etc/passwd 文件,与普通 /etc/passwd 文件的格式略有不同,一般包括用户名、UID、GID、用户信息和主目录等。
/etc/passwd.org这是一些 Linux 发行版(如 Debian)的 /etc/passwd 文件备份,通常备份的时间点与系统安装时的 /etc/passwd 文件相同。
/etc/passwd-这是 AIX 操作系统中的 /etc/passwd 文件,与普通的 /etc/passwd 文件的格式略有不同,一般包括用户名、UID、GID、用户信息、主目录、默认 shell 程序和账号过期时间等。

管理/etc/passwd 文件命令

useradd
创建用户useradd-test,并设置密码为123,并同时创建一个与用户名相同的用户组,作为用户的主组

useradd -p 123 -U useradd-test
$ cat /etc/passwd | grep useradd-test
useradd-test:x:1000:1000::/home/useradd-test:/bin/bash$ cat /etc/shadow | grep useradd-test
useradd-test:123:19562:0:99999:7:::

由上可知,useradd 创建用户设置密码是明文的,无法加密,加密需要使用passwd命令

passwd
修改用户密码

$ sudo passwd useradd-test
Changing password for user useradd-test.
New password: 
BAD PASSWORD: The password fails the dictionary check - it is based on a dictionary word
Retype new password: 
passwd: all authentication tokens updated successfully.
cat /etc/shadow | grep useradd-test
useradd-test:$6$k.sul8dF$pgZaR8zG1BYjIp9vTemeROXhA2npYLqUfblpZnCgChyVtr4yi9QZSyMLOtqyH85b2ONXeMK.RJU1awlDEUMww/:19562:0:99999:7:::

usermod 修改属性

$ usermod -c "useradd test" useradd-test$ cat /etc/passwd | grep useradd-test
useradd-test:x:1000:1000:useradd test:/home/useradd-test:/bin/bash

usermod常见参数

参数命令含义
-lusermod -l newname oldname修改用户的用户名,其中 newname 是新的用户名,oldname 是旧的用户名。
-cusermod -c "User Info" username修改用户的用户信息,其中 “User Info” 是用户信息,username 是要修改信息的用户名。
-gusermod -g groupname username修改用户所属的主组,其中 groupname 是要更改的用户组名,username 是要修改的用户名。
-Gusermod -G group1,group2 username将用户添加到多个用户组中,其中 group1、group2 是要添加的用户组,username 是要修改的用户名。
-susermod -s /bin/bash username修改用户的默认 shell 程序,其中 /bin/bash 是新的 shell 程序,username 是要修改的用户名。
-dusermod -d /home/newhome username修改用户的主目录,其中 /home/newhome 是新的主目录,username 是要修改的用户名。
-eusermod -e 2022-12-31 username修改用户账号的过期时间,其中 2022 年 12 月 31 日是账号过期的日期,username 是要修改的用户名。
-pusermod -p password username修改用户的密码,其中 password 是新的密码,username 是要修改密码的用户名。需要注意的是,这种方式无法对密码进行加密,因此不太安全,建议使用 passwd 命令来设置密码。
-uusermod -u uid username修改用户的 UID,其中 uid 是新的用户 ID,username 是要修改的用户名。

userdel删除账号

userdel useradd-test

三、 /etc/shadow

/etc/shadow 目录是用于存储用户密码信息的文件目录,也被称为“影子文件”。该目录只有root用户拥有读权限,其他用户不能直接查看或修改该目录下的文件。
格式如下:

用户名:加密密码:最后一次修改时间:最小修改时间间隔:密码有效期:密码需要变更前的警告天数:密码过期后的宽限时间:账号失效时间:保留字段

具体解释:

字段含义
用户名(Username)该字段指定了用户的登录名。
加密的密码(Password)该字段存储了用户的密码,使用加密算法进行加密。
最近一次修改密码的时间(Last change)该字段指定了密码上次被修改的时间,表示距离 1970 年 1 月 1 日的天数。
最小密码生存期(Minimum days)该字段指定了密码修改后必须经过多少天才能再次修改密码。
最大密码生存期(Maximum days)该字段指定了密码的有效期,表示密码自上次修改后可以保持多长时间。
密码过期警告时间(Warning days)该字段指定了在密码过期前提醒用户的天数。
帐号失效时间(Inactive days)该字段指定了多少天用户没有登录系统后,帐号会被自动失效。
帐号失效日期(Account expiration)该字段指定了帐号的终止日期,表示距离 1970 年 1 月 1 日的天数。

/etc/shadow*!!区别

在 /etc/shadow 文件中,两个特殊字符 * 和 !! 都表示该用户账户无法登录系统,但它们之间有一些细微的区别。

  • *:如果 /etc/shadow 文件中的密码字段为 *,则表示该用户账户已被锁定,无法使用密码进行登录。这种情况通常是由于管理员手动锁定用户账户导致的。

  • !!:如果 /etc/shadow 文件中的密码字段为 !!,则表示该用户账户已被禁用,无法使用密码进行登录。这种情况通常是由于系统自动禁用用户账户,例如密码过期或用户长时间未登录系统等。

需要注意的是,无论是 * 还是 !!,都表示该用户账户无法登录系统,但它们之间的区别在于,* 表示用户账户是被管理员手动锁定的,而 !! 则表示用户账户是被系统自动禁用的。在实际使用中,管理员需要根据实际情况进行相应的处理,以确保系统的安全性和稳定性。

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

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

相关文章

Docker Compose 实现单机容器集群编排管理

目录 Docker ComposeDocker Compose 三大概念1. Docker Compose 环境安装2. YAML 文件格式及编写注意事项3. Docker Compose配置restart 设置重启策略,no,always,no-failure,unless-stopped 4. Docker Compose 常用命令选项5. Doc…

基础算法-数组模拟栈

栈:先进后出 队列:先进先出 栈 例题: 实现一个栈,栈初始为空,支持四种操作: push x – 向栈顶插入一个数 x;pop – 从栈顶弹出一个数;empty – 判断栈是否为空;query …

mysql实现in且模糊匹配、实现 in( like xxx ) 效果

问题 删除某表涉及到指定任务id的数据,没有直接关联字段,只有在某表的body字段中存储有含任务id的json串,所以需要批量模糊匹配 用到的函数 REGEXP 可以实现模糊匹配多个值 select * from xxx where body like %"taskId":1% or…

CPU渲染or GPU渲染,你选对了吗?看完这六点就懂了!

在进行动画或效果图渲染时,选择适合的渲染方式对于项目的速度和质量至关重要。CPU渲染和GPU渲染作为两种主要的渲染方式,哪一种更适合你现在的情况?接下来我将从以下六个方面带大家深入了解,看完就知道怎么选了。 1.渲染原理 CPU…

OS1_进程与线程的管理

序言 1.OS以进程、线程的方式在CPU中执行静态保存在外存(内存)中的程序,进程的构成与状态转化,特别是进程的切换; 2.当有多个进程处于就绪态,有哪些常见的挑选以执行方式; 3.并发执行(乱序发射)的进程,共享…

Pytorch深度学习------torchvision中dataset数据集的使用(CIFAR10)

文章目录 一、什么是TorchVision二、以torchvision.datasets子模块下的CIFAR10数据集为例1、CIFAR10数据集参数2、代码中使用 一、什么是TorchVision torchvision是pytorch的一个图形库,用来处理图像,主要用来构建计算机视觉模型。 从下面的官网截图可以…

手写设计模式

单例模式 饿汉式 public class SingleTon {private static SingleTon instance new SingleTon();private SingleTon(){};public static SingleTon getInstance(){return instance;} }要点: 静态 private instance私有的构造器方法返回 instance 懒汉式 public…

TCP/UDP的首部

TCP/UDP首部信息 TCP首部第一个4字节第二个4字节与第三个4字节第四个4字节第五个4字节选项最大报文段长度(MSS)选项窗口扩大选项时间戳选项 什么时候发送RST包UDP首部 TCP首部 TCP 首部长度为20字节,加上选项部分最大可达60字节。 第一个4…

微服务远程调用openFeign简单回顾

目录 一. OpenFeign简介 二. OpenFeign原理 演示使用 provider模块 消费者模块 配置全局feign日志 示例源代码: 一. OpenFeign简介 OpenFeign是SpringCloud服务调用中间件,可以帮助代理服务API接口。并且可以解析SpringMVC的RequestMapping注解下的接口&#x…

接口漏洞-DVWS(XXE+鉴权)+阿里云KEY

dvws靶场 靶场:https://github.com/snoopysecurity/dvws-node 开启靶场,注册一个普通用户,登录成功 来到首页点击admin area 发现进入几秒钟之后又跳转回到首页,只有管理员admin用户才能进入。 点击admin area抓包,发现…

C# List 详解四

目录 18.FindLast(Predicate) 19.FindLastIndex(Int32, Int32, Predicate) 20.FindLastIndex(Int32, Predicate) 21.FindLastIndex(Predicate) 22.ForEach(Action) 23.GetEnumerator() 24.GetHashCode() 25.GetRange(Int32, Int32) C#…

实验二十四、滞回比较器电压传输特性的测量

一、题目 滞回比较器电压传输特性的测量。 二、仿真电路 电路如图1所示。 为便于观察电压传输特性的变化,输入信号采用信号发生器产生的幅值为 10 V 10\,\textrm V 10V、频率为 20 Hz 20\,\textrm{Hz} 20Hz 的三角波电压。采用虚拟的运算放大电路,其…

js中的数据结构之栈

js中的数据结构之栈 一、定义 栈是一种限定仅在表尾进行插入和删除操作的线性表,遵循后入先出的原则。 二、描述 栈是和列表类似的一种数据结构,也可以说栈就是一种特殊的列表。 栈里面的元素只能通过列表的一端访问,这一端称为栈顶。相…

树莓派 使用 docker安装showdoc

最近在使用showdoc时感觉挺方便的,但是在树莓派上拉取showdoc对应的镜像时特别慢,熬了一天半发现镜像倒在了最后一步,重试了好几次都没有拉去下来。后来仔细阅读了官网操作文档再加一点小运气今天成功给安装成功了。 showdoc的安装环境&…

Windows系统实现唤醒+合成+命令词智能语音交互

1、之前写过离线能力调用,今天来个终极版,实现智能交互或者结合大模型的智能交互示例,下面进入正题。上B站效果离线唤醒离线合成离线命令词实现智能交互_哔哩哔哩_bilibili 2、到讯飞开放平台下载唤醒合成命令词的离线组合包,找到…

【华为OD机试】按单词下标区间翻转文章内容【2023 B卷|100分】

【华为OD机试】-真题 !!点这里!! 【华为OD机试】真题考点分类 !!点这里 !! 题目描述: 输入一个英文文章片段,翻转指定区间的单词顺序,标点符号和普通字母一样处理。 例如输入字符串 “I am a developer.”,区间[0,3]则输出 “developer. a am I”。 输入描述: 使用换…

【趟坑记录】d3.zoom()的正确使用姿势 @d3.v7

【趟坑记录】d3.zoom()的正确使用姿势 d3.v7 文章目录 【趟坑记录】d3.zoom()的正确使用姿势 d3.v7问题重现原因分析解决方案放缩平移写法特殊修改transform函数的写法 总结 在开发一个D3应用的时候遇到了一个 zoom相关的问题,记录解决思路与方案 问题重现 最近在…

动态监控U盘重启容器

需求背景 Ubuntu机器需要动态根据插入的U盘进行导入数据, 路径是约定为U盘内的固定路径. 但是服务是docker服务, 插入U盘并不会直接挂在到容器内部, 需要重启容器才能生效, 每次手动重启很麻烦, 自动检测U盘路径变化来操作容器. 配置动态监控脚本和服务 编写脚本 vim moni…

Windows 10, version 22H2 (updated Jul 2023) 中文版、英文版下载

Windows 10, version 22H2 (updated Jul 2023) 中文版、英文版下载 Windows 10 22H2 企业版 arm64 x64 请访问原文链接:https://sysin.org/blog/windows-10/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org Window…

FPGA——verilog实现格雷码与二进制的转换

文章目录 一、格雷码简介二、二进制转格雷码三、格雷码转二进制四、仿真 一、格雷码简介 格雷码是一种循环二进制码或者叫作反射二进制码。跨时钟域会产生亚稳态问题(CDC问题):从时钟域A过来的信号难以满足时钟域B中触发器的建立时间和保持时…