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

Linux:账号和权限管理(二)


文章目录

  • 1、查询用户账号的详情信息-finger软件包
    • 安装前:配置阿里云YUM源
    • 安装finger
      • 格式
      • 使用方法
      • 输出示例
      • 输出解释
  • 2、查询已登录到主机的用户-who
    • who命令(较常用)
      • 格式
      • 选项
      • 输出示例
    • users命令
      • 格式
    • w命令
      • 格式
      • 选项
      • 输出示例
  • 3、设置目录和文件的权限-chmod
    • 符号模式
      • 格式
      • 选项
      • 示例
    • 数字模式
      • 格式
      • 示例
  • 4、设置目录和文件的归属-chown、chgrp
    • 格式(chown)
    • 多种格式(chown和chgrp)
    • 选项
      • 相同的选项
      • 不同的选项
      • chown特有:
      • chgrp特有:
    • 示例
      • chown 示例
      • chgrp 示例
  • 5、设置目录和文件的默认权限-umask
    • 原理
    • 格式
    • 选项
    • 示例
  • 6、用户组相关例题


1、查询用户账号的详情信息-finger软件包

finger是一个用于查询用户账号详情信息的工具,finger命令可以查询指定用户或所有用户的详细信息,包括用户名、真实姓名、家目录、登录Shell、登录时间、空闲时间等。

安装前:配置阿里云YUM源

拿出repobak备份文件,把阿里云的源复制到本地

若尚未配置国内镜像源要先配置

#先进入到 yum.repos.d目录
cd /etc/yum.repos.d/#将本地YUM源备份到repobak
mv local.repo repobak/#将之前备份的阿里云YUM源移动到此目录
mv repobak/epel-aliuyn.repo ./
mv repobak/CentOS-aliyun-lhr.repo ./#重建缓存
yum clean all  #清理yum缓存
yum makecache  #重建yum缓存

安装finger

yum install -y finger

检查是否安装

rpm -q finger

格式

finger [用户名]

使用方法

基本查询:直接输入finger 用户名即可查询指定用户的详细信息。如果不指定用户名,则默认显示所有用户的简短信息。

参数选项

  • l:长格式输出,显示更详细的用户信息,包括家目录、办公地址、办公电话等。
  • s:短格式输出,仅显示用户名、真实姓名、登录终端、空闲时间、登录时间等基本信息。
  • p:省略.plan和.project文件中的内容。
  • m:禁止对用户真实名字进行匹配。

输出示例

在这里插入图片描述
在这里插入图片描述

输出解释

  • Login: 显示用户的登录名,这里是 root
  • Name: 显示用户的真实姓名,但在这个例子中,它同样是 root,这表示没有设置真实的用户名字段。
  • Directory: 显示用户的家目录,对于 root 用户来说,这通常是 /root
  • Shell: 显示用户登录时使用的Shell类型,root 用户通常使用 /bin/bash
  • On since: 显示用户最后一次登录的时间,以及登录的终端和来源IP地址。在这个例子中,root 用户自“周一 8月 5日 14:35”以来一直登录着,登录的终端是 pts/0(这通常是一个伪终端,比如通过SSH或本地终端登录),并且来自IP地址 20.0.0.1
  • Idle: 显示用户空闲的时间,这里是“4 seconds idle”,意味着在命令执行时,root 用户已经空闲了4秒。
  • No mail: 表示在用户的邮箱中没有待处理的邮件。指的是系统上用于存储用户邮件的特定目录(如 /var/mail/root)中没有邮件文件。
  • No Plan: 表示用户没有设置 .plan 文件。.plan 文件是用户可以在其中写下自己当前计划或状态的一个文本文件,它会被 finger 命令显示。

2、查询已登录到主机的用户-who

whousers以及w命令都是用来查询当前已登录到系统的用户信息的工具,但它们各自提供的信息和展示方式有所不同。

此处我们重点介绍 who

who命令(较常用)

who 命令用于显示当前登录到系统的所有用户的信息。

可以列出用户的登录名、终端类型、登录时间以及从哪个IP地址登录(如果适用)。

格式

who [选项] #可有可无

选项

  • a-all:显示所有信息,等同于不带任何选项的 who 命令。
  • H-heading:在输出中包含标题行。
  • q-count:仅显示登录的用户数。
  • u:显示空闲时间,类似于 w 命令的输出。
  • -message:显示用户登录时 /var/run/utmp 文件中记录的 MESSAGE 字段。

输出示例

root     pts/0        2023-08-07 14:35 (20.0.0.1)  
john     tty1         2023-08-07 15:00

输出解释:伪终端 pts/0 ,物理终端 tty1 ;打开地址(:0代表本地,或者IP地址)

users命令

列出当前登录到系统的所有用户名,每个用户名占一行。

格式

users

w命令

显示当前登录到系统的所有用户的详细信息,包括用户名、登录时间、登录终端、来源IP(如果可用)、空闲时间、JCPU时间、PCPU时间和用户当前正在执行的命令。

格式

w [选项]

选项

  • h-no-header:不显示标题行。
  • u:显示用户登录的详细信息,类似于 who -u 的输出。
  • s:仅显示登录名和终端行。
  • -user:后跟用户名,仅显示指定用户的登录信息。

输出示例

14:45:01 up 1 day,  3:10,  2 users,  load average: 0.00, 0.01, 0.05  
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT  
root     pts/0    20.0.0.1         14:35    0.00s  0.01s  0.00s w  
john     tty1                      15:00   15:00m  0.00s  0.00s -bash

输出解释:除了显示用户信息外,w 命令还提供了系统已经运行了多长时间(up 1 day, 3:10)、当前登录的用户数(2 users)以及系统的负载平均值(load average: 0.00, 0.01, 0.05)。

对于每个用户,它还显示了他们的登录时间、空闲时间、JCPU(该终端上所有进程占用的时间)和PCPU(当前进程占用的时间),以及他们正在执行的命令(如果没有执行任何命令,则显示为 -bash 或其他Shell提示符)。

3、设置目录和文件的权限-chmod

设置目录和(普通)文件的权限。权限分为三组:文件或目录的所有者(user)、所属组(group)和其他人(others)。

符号模式

格式

chmod [ugoa...] [+-=] [rwx] 文件或目录

选项

  • “ugoa”表示该权限设置所针对的用户类别

  • “u”代表文件属主

  • “g”代表文件属组内的用户

  • “o”代表其他任何用户

  • “a”代表所有用户(缺省时为a)

  • ”±=” 表示设置权限的操作动作。

    ”+”代表增加相应权限,”-”代表减少相应权限,“=”代表仅设置对应的权限

  • “rwx”是权限的字符组合形式,也可以拆分使用,如“r”、”rx”等

示例

  • chmod u+x 123.sh:将文件的用户(owner)权限设置为可执行。
  • chmod g+x 123.sh:将文件的群组(group)权限设置为可执行。
  • chmod g+w 123.sh:将文件的群组权限设置为可写
  • chmod u-x 123.sh:将文件的用户权限设置为不可执行。

数字模式

每个权限(读、写、执行)分别对应一个数字值:

  • 读(r)= 4
  • 写(w)= 2
  • 执行(x)= 1

例如:第一个用户只能读写,组只能读,其他用户没有任何权限

对应:RW R - 对应:6 4 0

权限值是通过将这些数字相加来计算的。例如,权限7(4+2+1)表示读、写和执行权限都设置。

格式

chmod 数字权限模式 文件或目录

示例

chmod 755 directory

解释:将目录directory的权限设置为所有者具有读、写和执行权限(7),所属组成员具有读和执行权限(5),其他人也具有读和执行权限(5)。

4、设置目录和文件的归属-chown、chgrp

chown改变文件或目录的所有者和和所属组。

chgrp只用于更改所属组。

格式(chown)

chown [选项] [所有者]:[所属组] 文件或目录...

:如果只更改所有者而不更改所属组,可以省略:[所属组]部分

多种格式(chown和chgrp)

chown 属主 文件或目录  #只改属主chown :属组 文件或目录 #不建议,只改属组
chgrp 属组 文件或目录  #建议,专门改属组chown 属主:属组 文件或目录 #同时改属主和属组
chown 属主.属组 文件或目录 #也是同时改,不建议,有些系统不支持

选项

相同的选项

  • R-recursive:递归地更改指定目录及其内部所有文件和子目录的所有者和/或所属组。
  • h-no-dereference:更改符号链接本身的所有者和/或所属组,而不是它所指向的文件的所有者和/或所属组。
  • v-verbose:在执行时显示详细信息,列出每个被处理的文件和目录。
  • c-changes:类似于 -verbose,但仅显示实际发生更改的文件和目录。
  • -dereference:默认行为,更改符号链接所指向的文件的所有者和/或所属组(如果没有明确指定 h 选项)。
  • -no-preserve-root:允许命令递归地操作根目录(危险操作,需谨慎)。
  • -preserve-root:默认行为,防止命令递归地操作根目录。
  • -reference=RFILE:使用参考文件 RFILE 的所有者和/或所属组来设置目标文件的所有者和/或所属组。
  • -help:显示帮助信息并退出。
  • -version:显示版本信息并退出。

不同的选项

chown特有:

  • -from=CURRENT_OWNER:CURRENT_GROUP:只在当前所有者和/或所属组匹配时才更改。

chgrp特有:

  • -no-dereference:默认行为,更改符号链接所指向的文件的属组。

    chown 也有类似的功能,但它是在默认行为下完成的。

示例

chown 示例

  1. 更改文件(目录同)的所有者
chown newowner filename
  1. 同时更改文件的所有者和所属组
chown newowner:newgroup filename
  1. 递归地更改目录及其内容的所有者和所属组
chown -R newowner:newgroup directoryname

解释:递归地将directoryname目录及其内部所有文件和子目录的所有者更改为newowner,并将所属组更改为newgroup

  1. 使用参考文件更改所有者和所属组
chown --reference=referencefile targetfile

解释:将targetfile的所有者和所属组更改为与referencefile相同。

chgrp 示例

  1. 更改文件(目录同)的属组
chgrp developers example.txt
  1. 递归地更改目录及其所有子文件和子目录的属组
chgrp -R groupname directory

5、设置目录和文件的默认权限-umask

用于设置新创建的文件和目录的默认权限。它通过屏蔽(即禁止)某些权限位来控制默认权限。每个文件和目录在创建时都会根据 umask 值减去相应的权限位,从而确定最终的权限。

原理

文件的默认权限是:666

目录的默认权限是:777

利用反掩码,从默认值中减去掩码的权限,从而确定最终的权限。

新创建的目录权限:

  • 默认情况下,新创建的目录权限是 777
  • umask 027 会屏蔽掉权限中的 002007 位,即去掉组的写权限和其他用户的读写执行权限。
  • 因此,新创建的目录权限是 777 - 027 = 750(即:所有者拥有读、写、执行权限,组有读、执行权限,其他用户没有权限)。

新创建的文件权限:

  • 默认情况下,新创建的文件权限是 666(因为执行权限默认不赋予新文件)。
  • umask 027 会屏蔽掉权限中的 002007 位,即去掉组的写权限和其他用户的读写权限。
  • 因此,新创建的文件权限是 666 - 027 = 640(即:所有者拥有读、写权限,组有读权限,其他用户没有权限)。

格式

umask [选项] [mask值]

解释[mask]:八进制或符号形式的掩码,用于设置新的 umask 值。如果不提供掩码,命令会显示当前的 umask 值。

选项

  • -S:以符号形式显示 umask
  • 无选项:直接显示当前umask

示例

  1. umask查看:umask
  2. umask设置:umask 000
  3. 以符号形式显示当前 umask
umask -S

输出示例:

u=rwx,g=rx,o=rx
  1. 设置新的 umask 值为 027
umask 027

这会使新创建的文件具有 750 权限(因为默认文件权限为 777 减去 027),新创建的目录具有 640 权限(因为默认目录权限为 666 减去 027)。

  1. 设置新的 umask 值为 002
umask 002

这会使新创建的文件具有 775 权限(默认文件权限 777 减去 002),新创建的目录具有 664 权限(默认目录权限 666 减去 002)。

6、用户组相关例题

创建4个用户、创建组、添加3个用户到组里,创建文件

# 创建用户
useradd user1
useradd user2
useradd user3
useradd user4# 创建组
groupadd mygroup# 添加用户到组
usermod -aG mygroup user1
usermod -aG mygroup user2
usermod -aG mygroup user3# 创建文件
sudo -u user1 touch /path/file.txt

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 掀起 .NET 风暴:用 Docker 快速打造并部署你的炫酷应用!
  • the request was rejected because no multipart boundary was found
  • FP8量化
  • 精益生产管理培训机构怎么选?三大维度助你精准定位
  • 从科幻到现实:AIGC助力打造个性化数字人
  • MySQL:先插入数据库,然后再查询
  • linux shell 函数
  • STM32控制机械臂与传感器:整合ESP32通讯、Spark与人工智能优化的智能制造解决方案(代码说明)
  • 机器学习第五章-神经网络
  • ubantu-elasticsearch
  • echarts横向柱状图
  • Vue3发送验证码,开启倒计时,并且倒计时结束前无法点击
  • 21LTR-Scene打靶渗透【附POC】(权限提升)
  • uniapp 多渠道打包实现方案
  • 【Buffer Pool】定长内存池的实现
  • Angular 2 DI - IoC DI - 1
  • bootstrap创建登录注册页面
  • fetch 从初识到应用
  • JAVA_NIO系列——Channel和Buffer详解
  • JavaScript DOM 10 - 滚动
  • javascript从右向左截取指定位数字符的3种方法
  • MySQL QA
  • node 版本过低
  • Python进阶细节
  • quasar-framework cnodejs社区
  • Shadow DOM 内部构造及如何构建独立组件
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • TypeScript迭代器
  • 安卓应用性能调试和优化经验分享
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 漫谈开发设计中的一些“原则”及“设计哲学”
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 少走弯路,给Java 1~5 年程序员的建议
  • 一文看透浏览器架构
  • ​​​【收录 Hello 算法】10.4 哈希优化策略
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • (C语言)字符分类函数
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (待修改)PyG安装步骤
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • (四)Android布局类型(线性布局LinearLayout)
  • (转) Face-Resources
  • (转) 深度模型优化性能 调参
  • (转)fock函数详解
  • (转)视频码率,帧率和分辨率的联系与区别
  • (转)项目管理杂谈-我所期望的新人
  • (转载)虚函数剖析
  • .bat批处理(二):%0 %1——给批处理脚本传递参数
  • .NET Core 成都线下面基会拉开序幕
  • .net 获取某一天 在当月是 第几周 函数
  • .NET/C# 检测电脑上安装的 .NET Framework 的版本
  • .net实现头像缩放截取功能 -----转载自accp教程网