06_Linux 文件权限与管理命令

系列文章导航:01_Linux基础操作CentOS7学习笔记-CSDN博客

文章目录

  • Linux 文件权限与管理命令
    • 一、Linux 文件类型
    • 二、用户/组管理
      • 用户相关文件
      • 用户信息解析
      • 用户密码管理:`shadow` 阴影文件解析
      • 用户管理命令
        • 1. **`useradd`**:添加新用户
        • 2. **`usermod`**:修改用户信息
        • 3. **`userdel`**:删除用户
        • 4. **`chage`**:用户密码管理
        • 5. **`passwd`**:更改用户密码
        • 6. **`id`**:显示用户 ID 信息
        • 7. **`su`**:切换用户身份
        • 8. **`w`**:显示当前登录用户信息
        • 9. **`who`**:显示系统中的用户信息
        • 10. **`whoami`**:显示当前用户名称
      • 组管理命令
        • 1. **`groupadd`**:添加新组
        • 2. **`groupmod`**:修改组信息
        • 3. **`groupdel`**:删除组
        • 4. **`groupmems`**:组成员设置命令
        • 5. **`gpasswd`**:管理组密码
        • 6. **`groups`**:显示用户所属的组
    • 三、权限管理
      • 文件权限
        • 1. chmod - 改变文件模式
        • 2. chown - 改变文件所有者
        • 3. chgrp - 改变文件组
      • 特殊权限
        • 4. setuid、setgid、sticky - 特殊权限
        • 5. umask - 设置文件创建屏蔽字
        • 6. setfacl - 设置文件访问控制列表
        • 7. getfacl - 获取文件访问控制列表
        • 8. chattr - 改变文件属性
        • 9. lsattr - 显示文件属性

Linux 文件权限与管理命令

在 Linux 系统中,文件权限和用户/组管理是保证系统安全性和数据完整性的重要机制。本章将详细介绍 Linux 中用于管理文件权限和用户/组的相关命令。


一、Linux 文件类型

在 Linux 系统中,文件类型是多样化的,包括普通文件、目录文件、块设备文件等。我们可以通过 file 命令来查看文件的具体类型:

file 文件名  # 查看文件类型

常见的文件类型包括:

  • b:块设备文件
  • c:字符设备文件
  • d:目录文件
  • p:管道文件
  • -:普通文件/文本文件
  • l:链接文件
  • s:套接字文件

二、用户/组管理

用户相关文件

在 Linux 系统中,用户信息被存储在多个关键文件中,包括:

  • /etc/login.defs: 用户建立的模板 决定默认调用useradd的一些选项

  • /etc/passwd: 存储用户信息(决定一个用户是否存在)

  • /etc/shadow: 存储密码信息

  • /etc/group:存储组信息

  • /etc/gshadow:存储组密码信息,当前没有启用组密码功能

  • $HOME:用户的家目录 /home/user01 /root

  • ~/.bash_profile: 环境变量

  • ~/.bashrc: bash配置文件

  • ~/.bash_logout: 注销用户执行的脚本

  • /etc/skel/*: 用户环境配置文件模板(建立用户家目录后,拷贝skel目录下所有文件到用户家)

用户信息解析

/etc/passwd 文件中的用户信息由多个字段组成,以冒号分隔:

username:x:UID:GID:GECOS:Home_Directory:Shell

例如:

cen2333:x:1000:1000:cen2333:/home/cen2333:/bin/bash
1.cen2333用户名
2.x  密码占未符  如果此为空 登陆无需密码
3.1000 用户uid
4.1000 用户组gid
5.cen2333用户的注释信息
6./home/cen2333  用户家目录
7./bin/bash   用户登陆shell

/etc/passwd文件的 密码中 x 代表所有密码存放到 /etc/shadow (把用户密码分离)

    用户密码分离  --> Linux 中 shadow 功能定义shadow 定义方法 authconfig-tui 设定  [*]  use shadow passwords 使用 shadow  --> 密码存放到 /etc/shadow 不使用 shadow  --> 密码存放 /etc/passwd (不推荐使用)

​ 假如把 /etc/passwd 中密码部分删除 (x 去掉) ,登陆不校验密码
​ 用户登录为管理员或者用户切换 ( su - root ) 都不需要密码

用户密码管理:shadow 阴影文件解析

Linux 系统通过 shadow 功能增强密码的安全性,将密码信息存储在 /etc/shadow 文件中,以提供更细粒度的密码策略控制。以下是 /etc/shadow 文件中记录的字段详解:

username:hashed_password:last_change:minimum:maximum:warning:inactive:expire:

以一个实例来说明这些字段的含义:

user1001:$1$SefNk95S$OY4g7fMVcRNvcxLJWwW.91:14940:0:99999:7:0:14950:
  1. 用户名 (user1001): 这是账户的用户名。管理员可以通过 usermod -l otherName user1001 来更改用户名。

  2. 加密密码 ($1$SefNk95S$OY4g7fMVcRNvcxLJWwW.91): 这是经过加密的密码。如果这一字段为空,表示该用户不需要密码即可登录。密码可以通过 passwd user1001 命令来更改。

  3. 密码最后修改时间 (14940): 这是自1970年1月1日以来的天数,表示密码最后被修改的时间。如果设置为0,则用户在下次登录时将被强制修改密码。可以通过 chage -d 0 user1001 来设置。

  4. 密码最小修改间隔 (0): 这是用户两次密码修改之间的最小天数。如果设置为0,用户可以随时更改密码。可以通过 chage -m 3 user1001 来设置为3天。

  5. 密码最大有效期限 (99999): 这是密码的最大有效天数。如果设置为15天,则用户必须每15天更改一次密码。可以通过 chage -M 15 user1001 来设置。

  6. 密码过期前警告天数 (7): 这是在密码过期前系统开始警告用户的天数。可以通过 chage -W 7 user1001 来设置。

  7. 密码过期后账户锁定天数 (0): 这是密码过期后用户账户被锁定的天数。如果设置为0,表示账户不会被锁定。可以通过 chage -I 3 user1001 来设置为3天。

  8. 账户过期时间 (14950): 这是账户过期的绝对时间,表示自1970年1月1日以来的天数。账户过期后,用户将无法登录。可以通过 chage -E 2019-07-22 user1001 来设置。

  9. 保留标志 (通常为空): 这个字段目前没有被使用,保留以备将来使用。

通过这些字段,系统管理员可以精确控制用户的密码策略,包括密码的加密方式、修改间隔、有效期、警告期和账户锁定策略,从而增强系统的安全性。

用户管理命令

1. useradd:添加新用户

Linux useradd 命令用于建立用户帐号。

useradd 可用来建立用户帐号。帐号建好之后,再用 passwd 设定帐号的密码。而可用 userdel 删除帐号。使用 useradd 指令所建立的帐号,实际上是保存在 /etc/passwd 文本文件中。

语法

useradd [-mMnr][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-s <shell>][-u <uid>][用户帐号]

useradd -D [-b][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-s <shell>]

参数说明

  • -c<备注>  加上备注文字。备注文字会保存在passwd的备注栏位中。
  • -d<登入目录>  指定用户登入时的起始目录。
  • -D  变更预设值.
  • -e<有效期限>  指定帐号的有效期限。
  • -f<缓冲天数>  指定在密码过期后多少天即关闭该帐号。
  • -g<群组>  指定用户所属的群组。
  • -G<群组>  指定用户所属的附加群组。
  • -m  制定用户的登入目录。
  • -M  不要自动建立用户的登入目录。
  • -n  取消建立以用户名称为名的群组.
  • -r  建立系统帐号。
  • -s   指定用户登入后所使用的shell。
  • -u  指定用户ID。

实例

添加一般用户

# useradd tt

为添加的用户指定相应的用户组

# useradd -g root tt

创建一个系统用户

# useradd -r tt

为新添加的用户指定home目录

# useradd -d /home/myd tt

建立用户且制定ID

# useradd caojh -u 544
2. usermod:修改用户信息

Linux usermod命令用于修改用户帐号。

usermod可用来修改用户帐号的各项设定。

语法

usermod [-LU][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-l <帐号名称>][-s <shell>][-u <uid>][用户帐号]

参数说明

  • -c<备注>  修改用户帐号的备注文字。
  • -d登入目录>  修改用户登入时的目录。
  • -e<有效期限>  修改帐号的有效期限。
  • -f<缓冲天数>  修改在密码过期后多少天即关闭该帐号。
  • -g<群组>  修改用户所属的群组。
  • -G<群组>  修改用户所属的附加群组。
  • -l<帐号名称>  修改用户帐号名称。
  • -L  锁定用户密码,使密码无效。
  • -s  修改用户登入后所使用的shell。
  • -u  修改用户ID。
  • -U  解除密码锁定。

实例

更改登录目录

# usermod -d /home/hnlinux root

改变用户的uid

# usermod -u 777 root
3. userdel:删除用户

Linux userdel命令用于删除用户帐号。

userdel可删除用户帐号与相关的文件。若不加参数,则仅删除用户帐号,而不删除相关文件。

语法

userdel [-r][用户帐号]

参数说明

  • -r  删除用户登入目录以及目录中所有文件。

实例

删除用户账号

# userdel hnlinux
4. chage:用户密码管理

chage 命令用于更改用户账户的密码政策信息,如密码的有效期、密码修改间隔、密码过期警告期等。以下是 chage 命令的一些关键功能和用法:

主要功能

  • 修改用户密码的有效期
  • 设置密码必须更改的最小和最大时间间隔
  • 配置密码过期前的警告期
  • 规定密码过期后账户锁定的时间

命令语法

chage [选项] 用户名

选项说明

  • -d:设置密码最后修改时间。如果设置为 0,则用户在下次登录时必须更改密码。
  • -M:设置密码的最大有效期限(天数)。例如,设置为 30 表示密码每 30 天必须更改一次。
  • -m:设置密码的最小修改间隔(天数)。例如,设置为 3 表示用户可以在至少 3 天后更改密码。
  • -W:设置密码过期前警告用户的天数。例如,设置为 7 表示在密码过期前 7 天开始警告用户。
  • -I:设置密码过期后账户被锁定的天数。例如,设置为 1 表示密码过期后 1 天账户将被锁定。
  • -E:设置账户的过期日期。

示例

以下是如何使用 chage 命令来设置用户 cen233 的密码策略,以满足特定需求的示例:

需求

  • 新建用户 cen233,初始密码为 redhat
  • 第一次登录时强制修改密码
  • 每隔 30 天更新密码
  • 更新提示前 3 天提醒
  • 延期 1 天
  • 用户使用期限为 2 年
# 创建用户 "cen233"
useradd cen233# 设置初始密码为 "redhat"
echo "redhat" | passwd --stdin cen233# 使用 chage 命令设置密码策略
chage -d 0 -M 30 -W 3 -I 1 -E 2025-07-12 cen233
  • -d 0:强制用户在第一次登录时修改密码。
  • -M 30:设置密码的最大使用天数为 30 天。
  • -W 3:在密码过期前 3 天提醒用户更新密码。
  • -I 1:设置用户密码过期后延期 1 天禁用账户。
  • -E 2025-07-12:设置用户的使用期限为到 2025 年 7 月 12 日。

通过这些设置,您可以确保用户的密码定期更新,同时在密码过期前给予用户适当的警告,以维护系统的安全性。

黑客帐号 复制root ID号 并 不使用密码 直接登录

echo "hk01::0:0::/root:/bin/bash" >> /etc/passwd
5. passwd:更改用户密码
passwd  设置密码-d  去掉密码(危险)-l   锁定用户-u  解锁-S  了解用户密码信息状态# passwd     ---给当前用户设置密码
# passwd   abc  ---给abc设置密码,只有root用户才有权限给其他用户设置密码

使用非交互模式设置密码: ( | 管道,进程间通信的机制 )

echo "123456" | passwd --stdin abc
6. id:显示用户 ID 信息

Linux id命令用于显示用户的ID,以及所属群组的ID。

id 会显示用户以及所属群组的实际与有效 ID,若两个 ID 相同,则仅显示实际 ID,若仅指定用户名称,则显示目前用户的 ID。

该命令会显示用户的 UID(User ID)、GID(Group ID)以及附属于用户的所有组 ID。

语法

id [-gGnru][--help][--version][用户名称]

参数说明

  • -g 或 --group  显示用户所属群组的ID。
  • -G 或 --groups  显示用户所属附加群组的ID。
  • -n 或 --name  显示用户,所属群组或附加群组的名称。
  • -r 或 --real  显示实际ID。
  • -u 或 --user  显示用户ID。
  • -help  显示帮助。
  • -version  显示版本信息。

实例

显示当前用户信息:

[root@lianghui ~]# id
uid=0(root) gid=0(root) groups=0(root)

显示用户群组的 ID:

# id -g
0

显示所有群组的 ID:

# id -G
0 1 2 3 4 5 6 10

显示指定用户信息

[root@lianghui ~]# id redhat
uid=1002(redhat) gid=1002(redhat) groups=1002(redhat),1(bin),12(mail),2234(itgrp)
7. su:切换用户身份

Linux su(英文全拼:switch user)命令用于变更为其他使用者的身份,除 root 外,需要键入该使用者的密码。

使用权限:所有使用者。su 切换用户 ‘-’ 指切换用户时加载该用户的环境变量配置。

语法

su [-fmp] [-c command] [-s shell] [--help] [--version] [-] [USER [ARG]]

参数说明

  • -f 或 --fast 不必读启动档(如 csh.cshrc 等),仅用于 csh 或 tcsh
  • -m -p 或 --preserve-environment 执行 su 时不改变环境变数
  • -c command 或 --command=command 变更为帐号为 USER 的使用者并执行指令(command)后再变回原来使用者
  • -s shell 或 --shell=shell 指定要执行的 shell (bash csh tcsh 等),预设值为 /etc/passwd 内的该使用者(USER) shell
  • –help 显示说明文件
  • –version 显示版本资讯
  • - -l 或 --login 这个参数加了之后,就好像是重新 login 为该使用者一样,大部份环境变数(HOME SHELL USER等等)都是以该使用者(USER)为主,并且工作目录也会改变,如果没有指定 USER ,内定是 root
  • USER 欲变更的使用者帐号
  • ARG 传入新的 shell 参数

实例

变更帐号为 root 并在执行 ls 指令后退出变回原使用者

su -c ls root

变更帐号为 root 并传入 -f 参数给新执行的 shell

su root -f

变更帐号为 clsung 并改变工作目录至 clsung 的家目录(home dir)

su - clsung

切换用户

hnlinux@runoob.com:~$ whoami //显示当前用户
hnlinux
hnlinux@runoob.com:~$ pwd //显示当前目录
/home/hnlinux
hnlinux@runoob.com:~$ su root //切换到root用户
密码: 
root@runoob.com:/home/hnlinux# whoami 
root
root@runoob.com:/home/hnlinux# pwd
/home/hnlinux

切换用户,改变环境变量

hnlinux@runoob.com:~$ whoami //显示当前用户
hnlinux
hnlinux@runoob.com:~$ pwd //显示当前目录
/home/hnlinux
hnlinux@runoob.com:~$ su - root //切换到root用户
密码: 
root@runoob.com:/home/hnlinux# whoami 
root
root@runoob.com:/home/hnlinux# pwd //显示当前目录
/root
8. w:显示当前登录用户信息

Linux w命令用于显示目前登入系统的用户信息。

执行这项指令可得知目前登入系统的用户有哪些人,以及他们正在执行的程序。

单独执行 w 指令会显示所有的用户,您也可指定用户名称,仅显示某位用户的相关信息。

语法

w [-fhlsuV][用户名称]

参数说明

  • -f  开启或关闭显示用户从何处登入系统。
  • -h  不显示各栏位的标题信息列。
  • -l  使用详细格式列表,此为预设值。
  • -s  使用简洁格式列表,不显示用户登入时间,终端机阶段作业和程序所耗费的CPU时间。
  • -u  忽略执行程序的名称,以及该程序耗费CPU时间的信息。
  • -V  显示版本信息。

实例

显示当前用户

 // 显示当前用户登录信息及执行的命令
[root@lianghui ~]# w13:31:37 up  2:15,  2 users,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1                      11:17    2:14m  0.03s  0.03s -bash
root     pts/0    192.168.100.1    11:17    1.00s  0.97s  0.00s w

不显示登录位置

[root@lianghui ~]# w -f13:31:41 up  2:15,  2 users,  load average: 0.00, 0.01, 0.05
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1      11:17    2:14m  0.03s  0.03s -bash
root     pts/0     11:17    5.00s  0.98s  0.00s w -f

以精简模式显示

[root@lianghui ~]# w -s13:31:52 up  2:15,  2 users,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM              IDLE WHAT
root     tty1                       2:14m -bash
root     pts/0    192.168.100.1     0.00s w -s

不显示标题

[root@lianghui ~]# w -h
root     tty1                      11:17    2:14m  0.03s  0.03s -bash
root     pts/0    192.168.100.1    11:17    4.00s  0.98s  0.00s w -h
M       LOGIN@  IDLE  JCPU  PCPU WHAT
root   tty7   :0        Thu12  31:39m 10:10  0.60s gnome-session
root   pts/0  :0.0       17:09  2:18m 15.26s 0.15s bash
root   pts/1  192.168.1.17   18:51  1.00s 1.24s 0.14s -bash
root   pts/2  192.168.1.17   19:48  60.00s 0.05s 0.05s -bash
9. who:显示系统中的用户信息

Linux who命令用于显示系统中有哪些使用者正在上面,显示的资料包含了使用者 ID、使用的终端机、从哪边连上来的、上线时间、呆滞时间、CPU 使用量、动作等等。

使用权限:所有使用者都可使用。

语法

who - [husfV] [user]

参数说明

  • -H 或 --heading:显示各栏位的标题信息列;
  • -i 或 -u 或 --idle:显示闲置时间,若该用户在前一分钟之内有进行任何动作,将标示成"."号,如果该用户已超过24小时没有任何动作,则标示出"old"字符串;
  • -m:此参数的效果和指定"am i"字符串相同;
  • -q 或–count:只显示登入系统的帐号名称和总人数;
  • -s:此参数将忽略不予处理,仅负责解决who指令其他版本的兼容性问题;
  • -w 或-T或–mesg或–message或–writable:显示用户的信息状态栏;
  • –help:在线帮助;
  • –version:显示版本信息。

实例

显示当前登录系统的用户

[root@lianghui ~]# who
root     tty1         2023-07-23 11:17
root     pts/0        2023-07-23 11:17 (192.168.100.1)

显示标题栏

# who -H

显示用户登录来源

# who -l -H

显示终端属性

[root@lianghui ~]# who -T -H
NAME       LINE         TIME             COMMENT
root     + tty1         2023-07-23 11:17
root     + pts/0        2023-07-23 11:17 (192.168.100.1)

只显示当前用户

[root@lianghui ~]# who -m -H
NAME     LINE         TIME             COMMENT
root     pts/0        2023-07-23 11:17 (192.168.100.1)

精简模式显示

[root@lianghui ~]# who -q
root root
# users=2
10. whoami:显示当前用户名称

Linux whoami命令用于显示自身用户名称。

显示自身的用户名称,本指令相当于执行"id -un"指令。

语法

whoami [--help][--version]

参数说明

  • –help  在线帮助。
  • –version  显示版本信息。

实例

显示用户名

# whoami 
root

组管理命令

1. groupadd:添加新组

groupadd 命令用于创建一个新的工作组,新工作组的信息将被添加到系统文件中。

相关文件:

  • /etc/group 组账户信息。
  • /etc/gshadow 安全组账户信息。
  • /etc/login.defs Shadow密码套件配置。

语法

groupadd 命令 语法格式如下:

groupadd [-g gid [-o]] [-r] [-f] group

参数说明:

  • -g:指定新建工作组的 id
  • -r:创建系统工作组,系统工作组的组 ID 小于 500;
  • -K:覆盖配置文件 /etc/login.defs
  • -o:允许添加组 ID 号不唯一的工作组。
  • -f,–force: 如果指定的组已经存在,此选项将失明了仅以成功状态退出。当与 -g 一起使用,并且指定的 GID_MIN 已经存在时,选择另一个唯一的 GID(即 -g 关闭)。

实例

创建一个新的组,并添加组 ID。

#groupadd -g 344 runoob

此时在 /etc/group 文件中产生一个组 ID(GID)是 344 的项目。

2. groupmod:修改组信息

Linux groupmod命令用于更改群组识别码或名称。

需要更改群组的识别码或名称时,可用groupmod指令来完成这项工作。

语法

groupmod [-g <群组识别码> <-o>][-n <新群组名称>][群组名称]

参数

  • -g <群组识别码>  设置欲使用的群组识别码。
  • -o  重复使用群组识别码。
  • -n <新群组名称>  设置欲使用的群组名称。

实例

修改组名

[root@lianghui ~]# groupadd linuxso 
[root@lianghui ~]# tail -1 /etc/group 
linuxso:x:500: 
[root@lianghui ~]# tail -1 /etc/group 
linuxso:x:500: 
[root@lianghui ~]# groupmod -n linux linuxso 
[root@lianghui ~]# tail -1 /etc/group 
linux:x:500:
3. groupdel:删除组

Linux groupdel命令用于删除群组。

需要从系统上删除群组时,可用groupdel(group delete)指令来完成这项工作。倘若该群组中仍包括某些用户,则必须先删除这些用户后,方能删除群组。

语法

groupdel [群组名称]

实例

删除一个群组

# groupdel hnuser
4. groupmems:组成员设置命令

groupmems 命令用于管理 Linux 系统中组的成员。以下是该命令的常用选项及示例:

  • -a:将某个用户加入指定组

    # 将用户 it01 加入 itgrp 组
    groupmems -a it01 -g itgrp# 将用户 it03 加入 itgrp 组
    groupmems -a it03 -g itgrp# 将用户 it05 加入 itgrp 组
    groupmems -a it05 -g itgrp
    
  • -d:将某个用户从指定组移除

    # 从 itgrp 组中移除用户 it03
    groupmems -d it03 -g itgrp
    
  • -p:清空指定组的所有成员

    # 清空 itgrp 组的所有成员
    groupmems -p -g itgrp
    
  • -l:查询指定组中的成员

    # 查询 itgrp 组中的所有成员
    groupmems -l -g itgrp
    

通过使用 groupmems 命令,可以方便地管理用户组的成员,确保组的成员信息保持最新。

5. gpasswd:管理组密码

gpasswd 是一个用于管理 Linux 系统工作组文件 /etc/group/etc/gshadow 的工具,它允许将用户添加到组或从组中删除用户。

语法

gpasswd [选项] 组名

可选项参数

  • -a:添加用户到组。
  • -d:从组删除用户。
  • -A:指定可以管理该组的管理员。
  • -M:指定组成员列表,与 -A 类似。
  • -r:删除组的密码。
  • -R:限制只有组内的成员可以使用 newgrp 命令加入该组。

实例

  1. groupname 组设置密码,使得知道该组密码的用户可以临时加入该组:
gpasswd groupname
  1. 将用户 peter 设置为 users 组的管理员,这样 peter 就可以将其他用户添加到 users 组:
gpasswd -A peter users
  1. peter 作为管理员,将 maryallen 添加到 users 组:
gpasswd -a mary users
gpasswd -a allen users
  1. 如果您想添加一个用户到一个组并保留他们之前所属的所有组,可以使用以下命令:
gpasswd -a user_name group_name

注意:使用 usermod -G group_name user_name 命令添加用户到指定组会清空用户之前所属的所有组。

6. groups:显示用户所属的组

groups 命令用于显示当前用户所属的所有用户组。

语法格式

groups [选项] [用户]

常用参数

  • -g:仅显示用户所属的主组 ID。
  • -n:显示用户及其所属组的名称,而不是 ID。
  • -o:与 -n 选项结合使用,仅显示用户及其所属组的名称。
  • 用户:指定要显示所属组的用户。如果未指定用户,则显示当前用户所属的组。

参考示例

  1. 显示当前用户所属的所有组:
groups
  1. 显示指定用户所属的所有组:
groups username
  1. 显示当前用户的主组 ID:
groups -g
  1. 显示当前用户及其所属组的名称:
groups -n
  1. 仅显示当前用户及其所属组的名称:
groups -n -o

补充介绍:Linux 系统中,每个用户可以属于多个用户组,这些组通常用来控制文件和目录的访问权限。groups 命令可以帮助您确定当前用户所属的所有组,从而更好地管理和维护文件系统的安全性。


三、权限管理

文件权限

Linux 文件权限分为三级:文件所有者、用户组、其他用户。权限包括读(r)、写(w)和执行(x)。

1. chmod - 改变文件模式

chmod命令用于更改文件或目录的访问权限。权限分为三级:文件所有者(Owner)、用户组(Group)、其他用户(Other Users)。权限可以通过八进制数字模式或符号模式来设置。

语法:

chmod [-cfvR] mode file...

参数说明:

  • mode:权限设定字串,如[ugoa...][[+-=][rwxX]...]
  • ugo:分别代表用户(user)、组(group)、其他(others)
  • +增加权限,-取消权限,=唯一设定权限
  • r读,w写,x执行,X当文件是个目录或者已经设定为可执行时,表示可执行

示例:

chmod u+x file  # 给文件所有者增加执行权限
chmod 755 file  # 设置文件权限为所有者可读写执行,组和其他用户可读可执行
2. chown - 改变文件所有者

chown命令用于更改文件或目录的所有者和/或所属组。只有超级用户(root)或文件所有者可以执行此命令。

语法:

chown [-cfhvR] user[:group] file...

参数说明:

  • user:新的文件所有者
  • group:新的文件所属组
  • -c:仅显示更改的部分
  • -f:忽略错误信息
  • -R:递归处理目录

示例:

chown user:group file  # 更改文件的所有者和组
chown -R user:group dir  # 递归更改目录及其子目录的所有者和组
3. chgrp - 改变文件组

chgrp命令用于更改文件或目录的所属组。与chown不同,普通用户也可以更改文件的组,只要他们是该组的成员。

语法:

chgrp [-cfhRv] group file...

参数说明:

  • group:新的文件所属组
  • -c:仅显示更改的部分
  • -f:忽略错误信息
  • -R:递归处理目录

示例:

chgrp group file  # 更改文件的所属组
chgrp -R group dir  # 递归更改目录及其子目录的所属组

特殊权限

4. setuid、setgid、sticky - 特殊权限
  • setuid:设置文件的冒险位,执行文件时临时具有文件所有者的权限。
  • setgid:设置目录的强制位,新创建的文件继承父目录的组。
  • sticky:设置目录的粘滞位,用户只能删除自己的文件。

示例:

chmod u+s file  # 设置文件的setuid位
chmod g+s dir   # 设置目录的setgid位
chmod o+t dir   # 设置目录的sticky位
5. umask - 设置文件创建屏蔽字

umask命令用于设置文件创建时的默认权限屏蔽字。

示例:

umask 0022  # 设置默认的文件屏蔽字,新文件默认权限为644
6. setfacl - 设置文件访问控制列表

setfacl命令用于设置文件或目录的访问控制列表(ACL),允许更精细的权限管理。

语法:

setfacl [选项] file/directory

参数说明:

  • -m:修改现有的ACL
  • -x:移除现有的ACL
  • -R:递归应用ACL

示例:

setfacl -m u:user:rwx file  # 设置用户对文件的权限
setfacl -R -m u:user:rwx dir  # 递归设置用户对目录及其子目录的权限
7. getfacl - 获取文件访问控制列表

getfacl命令用于显示文件或目录的访问控制列表(ACL)。

示例:

getfacl file  # 显示文件的ACL
8. chattr - 改变文件属性

chattr命令用于改变文件的属性,如设置文件为只读或不可变。

语法:

chattr [+-=] attribute file

参数说明:

  • +:开启属性
  • -:关闭属性
  • =:设置属性

示例:

chattr +i file  # 设置文件为不可变
9. lsattr - 显示文件属性

lsattr命令用于显示文件的属性。

示例:

lsattr file  # 显示文件的属性

通过这些命令和设置,Linux 系统管理员可以有效地管理文件权限和用户/组,确保系统的安全性和数据的完整性。

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

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

相关文章

揭开C++ STL的神秘面纱之string:提升编程效率的秘密武器

目录 &#x1f680;0.前言 &#x1f688;1.string 构造函数 &#x1f69d;1.1string构造函数 &#x1f69d;1.2string拷贝构造函数 &#x1f688;2.string类的使用 &#x1f69d;2.1.查询元素个数或空间 返回字符串中有效字符的个数&#xff1a;size lenth 返回字符串目…

AI赋能R-Meta分析核心技术:从热点挖掘到高级模型、助力高效科研与论文发表

Meta分析是针对某一科研问题&#xff0c;根据明确的搜索策略、选择筛选文献标准、采用严格的评价方法&#xff0c;对来源不同的研究成果进行收集、合并及定量统计分析的方法&#xff0c;现已广泛应用于农林生态&#xff0c;资源环境等方面&#xff0c;成为Science、Nature论文的…

通过ssh端口反向通道建立并实现linux系统的xrdp以及web访问

Content 1 问题描述2 原因分析3 解决办法3.1 安装x11以及gnome桌面环境查看是否安装x11否则使用下面指令安装x11组件查看是否安装gnome否则使用下面指令安装gnome桌面环境 3.2 安装xrdp使用下面指令安装xrdp&#xff08;如果安装了则跳过&#xff09;启动xrdp服务 3.3 远程服务…

混个1024勋章

一眨眼毕业工作已经一年了&#xff0c;偶然进了游戏公司成了一名初级游戏服务器开发。前两天总结的时候&#xff0c;本来以为自己这一年没学到多少东西&#xff0c;但是看看自己的博客其实也有在进步&#xff0c;虽然比不上博客里的众多大佬&#xff0c;但是回头看也算是自己的…

如果自建 ChatGPT,我会如何从 Model、Inference runtime 构建整个系统

ChatGPT 是一个基于 LLM 的对话系统。本文将介绍如何构建一个类似 ChatGPT 的系统&#xff0c;包括从模型、推理引擎到整体架构的构建过程。 系统概览 让我们关注最核心的对话部分。 如上图所示&#xff0c;web 负责与用户进行交互&#xff0c;server 接受用户的对话请求&…

算法的学习笔记—数组中只出现一次的数字(牛客JZ56)

&#x1f600;前言 在数组中寻找只出现一次的两个数字是一道经典的问题&#xff0c;通常可以通过位运算来有效解决。本文将详细介绍这一问题的解法&#xff0c;深入解析其背后的思路。 &#x1f3e0;个人主页&#xff1a;尘觉主页 文章目录 &#x1f970;数组中只出现一次的数字…

【移动应用开发】界面设计(二)实现水果列表页面

续上一篇博客 【移动应用开发】界面设计&#xff08;一&#xff09;实现登录页面-CSDN博客 目录 一、采用ViewBinding实现一个RecyclerView 1.1 在app/build.gradle中添加recyclerview依赖&#xff0c;并打开viewBinding &#xff08;1&#xff09;在app/build.gradle中添加…

Servlet(三)-------Cookie和session

一.Cookie和Session Cookie和Session都是用于在Web应用中跟踪用户状态的技术。Cookie是存储在用户浏览器中的小文本文件&#xff0c;由服务器发送给浏览器。当用户再次访问同一网站时&#xff0c;浏览器会把Cookie信息发送回服务器。例如&#xff0c;网站可以利用Cookie记住用…

金融工程--pine-script 入门

背景 脚本基本组成 策略实现 实现马丁格尔策略 初始化变量&#xff1a;定义初始资本、初始头寸大小、止损百分比、止盈百分比以及当前资本和当前头寸大小等变量。 更新头寸&#xff1a;创建一个函数来更新头寸大小、止损价格和止盈价格。在马丁格尔策略中&#xff0c;每次亏…

如何在算家云搭建GPT-SOVITS(语音转换)

一、模型介绍 GPT-SOVITS是一款强大的小样本语音转换和文本转语音 WebUI工具。它集成了声音伴奏分离、自动训练集分割、中文ASR和文本标注等辅助工具。 具有以下特征&#xff1a; 零样本 TTS&#xff1a; 输入 5 秒的声音样本并体验即时文本到语音的转换。少量样本 TTS&…

micro-app【微前端实战】主应用 vue3 + vite 子应用 vue3+vite

micro-app 官方文档为 https://micro-zoe.github.io/micro-app/docs.html#/zh-cn/framework/vite 子应用 无需任何修改&#xff0c;直接启动子应用即可。 主应用 1. 安装微前端框架 microApp npm i micro-zoe/micro-app --save2. 导入并启用微前端框架 microApp src/main.ts …

智联招聘×Milvus:向量召回技术提升招聘匹配效率

01. 业务背景 在智联招聘平台&#xff0c;求职者和招聘者之间的高效匹配至关重要。招聘者可以发布职位寻找合适的人才&#xff0c;求职者则通过上传简历寻找合适的工作。在这种复杂的场景中&#xff0c;我们的核心目标是为双方提供精准的匹配结果。在搜索推荐场景下&#xff0c…

leetcode-75-颜色分类

题解&#xff08;方案二&#xff09;&#xff1a; 1、初始化变量n0&#xff0c;代表数组nums中0的个数&#xff1b; 2、初始化变量n1&#xff0c;代表数组nums中0和1的个数&#xff1b; 3、遍历数组nums&#xff0c;首先将每个元素赋值为2&#xff0c;然后对该元素进行判断统…

【开源项目】经典开源项目数字孪生工地——开源工程及源码

飞渡科技数字孪生工地管理平台&#xff0c;以物联网、移动互联网技术为基础&#xff0c;充分应用人工智能等信息技术&#xff0c;通过AI赋能建筑行业&#xff0c;对住建项目内人员、车辆、安全、设备、材料等进行智能化管理&#xff0c;实现工地现场生产作业协调、智能处理和科…

【JavaEE】【多线程】单例模式

目录 一、设计模式1.1 单例模式1.1.1 饿汉模式1.1.2 懒汉模式 1.2 线程安全问题1.3 懒汉模式线程安全问题的解决方法1.3.1 原子性问题解决1.3.2 解决效率问题1.3.3 解决内存可见性问题和指令重排序问题 一、设计模式 在讲解案例前&#xff0c;先介绍一个概念设计模式&#xff…

stm32入门教程--ADC模拟-数字转换器

ADC&#xff08;Analog-Digital Converter&#xff09;模拟-数字转换器 ADC可以将引脚上连续变化的模拟电压转你换位内存中存储的数字变量&#xff0c;建立模拟电路到数字电路的桥梁。 12位逐次逼近型ADC&#xff0c;1us转换时间 输入电压范围&#xff1a;0-3.3V转换结果范围…

Pyramidal Flow使用指南:快手、北大、北邮,开源可免费商用视频生成模型,快速上手教程

什么是 Pyramidal Flow&#xff1f; Pyramidal Flow 是由快手科技、北京大学和北京邮电大学联合推出的开源视频生成模型&#xff0c;它是完全开源的&#xff0c;发布在 MIT 许可证下&#xff0c;允许商业使用、修改和再分发。该模型能够通过文本描述生成最高10秒、分辨率为128…

Embedding 模型和Model 批量推理和多卡部署

批量推理 多卡部署 使用huggingface 【AI大模型】Transformers大模型库&#xff08;七&#xff09;&#xff1a;单机多卡推理之device_map_transformers多卡推理-CSDN博客 首先用 CUDA_VISIBLE_DEVICES1,2,3 python 或者os.environ["CUDA_VISIBLE_DEVICES"] &q…

风力发电场的“守护神”

摘要&#xff1a;作为清洁能源之一&#xff0c;风力发电场近几年装机容量快速增长。8月17日&#xff0c;国家能源局发布1-7月份全国电力工业统计数据。截至7月底&#xff0c;全国累计发电装机容量约27.4亿千瓦&#xff0c;同比增长11.5%。其中&#xff0c;太阳能发电装机容量约…

TCP simultaneous open测试

源代码 /*************************************************************************> File Name: common.h> Author: hsz> Brief:> Created Time: 2024年10月23日 星期三 09时47分51秒**********************************************************************…