文章目录
- 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
who
、users
以及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 示例
- 更改文件(目录同)的所有者
chown newowner filename
- 同时更改文件的所有者和所属组
chown newowner:newgroup filename
- 递归地更改目录及其内容的所有者和所属组
chown -R newowner:newgroup directoryname
解释:递归地将directoryname
目录及其内部所有文件和子目录的所有者更改为newowner
,并将所属组更改为newgroup
。
- 使用参考文件更改所有者和所属组
chown --reference=referencefile targetfile
解释:将targetfile
的所有者和所属组更改为与referencefile
相同。
chgrp 示例
- 更改文件(目录同)的属组
chgrp developers example.txt
- 递归地更改目录及其所有子文件和子目录的属组
chgrp -R groupname directory
5、设置目录和文件的默认权限-umask
用于设置新创建的文件和目录的默认权限。它通过屏蔽(即禁止)某些权限位来控制默认权限。每个文件和目录在创建时都会根据 umask
值减去相应的权限位,从而确定最终的权限。
原理
文件的默认权限是:666
目录的默认权限是:777
利用反掩码,从默认值中减去掩码的权限,从而确定最终的权限。
新创建的目录权限:
- 默认情况下,新创建的目录权限是
777
。 umask 027
会屏蔽掉权限中的002
和007
位,即去掉组的写权限和其他用户的读写执行权限。- 因此,新创建的目录权限是
777 - 027 = 750
(即:所有者拥有读、写、执行权限,组有读、执行权限,其他用户没有权限)。
新创建的文件权限:
- 默认情况下,新创建的文件权限是
666
(因为执行权限默认不赋予新文件)。 umask 027
会屏蔽掉权限中的002
和007
位,即去掉组的写权限和其他用户的读写权限。- 因此,新创建的文件权限是
666 - 027 = 640
(即:所有者拥有读、写权限,组有读权限,其他用户没有权限)。
格式
umask [选项] [mask值]
解释:[mask]
:八进制或符号形式的掩码,用于设置新的 umask
值。如果不提供掩码,命令会显示当前的 umask
值。
选项
-S
:以符号形式显示umask
值- 无选项:直接显示当前
umask
值
示例
- umask查看:umask
- umask设置:umask 000
- 以符号形式显示当前
umask
值
umask -S
输出示例:
u=rwx,g=rx,o=rx
- 设置新的
umask
值为027
:
umask 027
这会使新创建的文件具有 750
权限(因为默认文件权限为 777
减去 027
),新创建的目录具有 640
权限(因为默认目录权限为 666
减去 027
)。
- 设置新的
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