您的位置:首页 > 文旅 > 旅游 > Linux:账号和权限管理(二)

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

2024/12/23 16:54:16 来源:https://blog.csdn.net/qq_44421043/article/details/140939056  浏览:    关键词: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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com