Linux基础part-5

1、Linux用户与用户组管理

1、用户是什么?

  1. 实现资源分派(区分和管理系统资源的访问权限,将不同的资源分配给不同的用户)
  2. 实现认证pam和授权(用户身份通常通过用户名和密码进行认证,认证成功后系统将授予用户相应的权限)
  3. 在Linux系统中,每个用户都有一个唯一的用户标识号(uid)和一个所属组的组标识号(gid)
    • uid:用户标识号 gid:组标识号
    • 在系统中唯一标识用户和组,以便系统正确识别和管理用户和组的权限。
    • 系统中的文件和资源都会记录它们的拥有者和所属组

2、Linux用户类型

  1. 超级用户root 权限特别大(uid=0 gid=0 生产环境建议不要使用)
  2. 普通用户 ( uid>=1000 (根据不同发行版) 一般权限系统管理,权限有限)
  3. 程序用户 (1<=uid<1000 )
    • 守护类进程获取服务资源使用 通常不能登录系统,一般情况下登录的shell为/sbin/nologin
    • 用于特定程序或服务的系统用户,通常用于运行守护进程或服务。
    • uid通常在1到999之间,不能登录系统,其登录的shell通常设置为/sbin/nologin,表示不允许登录。
  1. Linux组(用户的集合体,用于对一组用户进行管理和授权。)
    • 超级用户组:root gid=0
    • 普通组:系统组(gid 1-499)

普通组(500+)

    • 显示当前登录用户,命令【whoami】

3、Linux组类别

  1. 在Linux系统中,组是一种用于对一组用户进行管理和授权的机制。根据其作用和特点,可以将组分为基本组和附加组两种类型

1. 基本组

    • 指用户在创建时自动分配的默认组,通常与用户同名,并且gid与uid相同
    • 用于标识用户的主要组,用户在创建文件或目录时,默认的所属组就是用户的基本组。
    • 在用户创建时自动分配,可以通过/etc/passwd文件中的用户条目来查看用户的基本组。

2. 附加组

    • 是用户可以额外加入的组,用于获取一些额外的权限或访问特定的资源。
    • 用户可以同时属于多个附加组,一个用户的附加组是其基本组以外的其他组。
    • 附加组的信息通常存储在/etc/group文件中,通过该文件可以查看系统中的所有组信息。
  1. 查看当前用户的基本组和附加组:【groups】

4、用户账号文件

1. /etc/passwd

    • 作用:保存用户名称、宿主目录、登录 Shell 等基本信息,每一行对应一个用户的账号记录。
    • 共7各字段,各字段代表含义:
      • tail -1 /etc/passwd】
      • amber:x:500 :500 : :/home/amber:/bin/bash
        • 第一字段 【amber:】用户账号名
        • 第二字段 【x:】密码占位符
        • 第三字段 【500:uid】 编号
        • 第四字段 【500: gid】 编号
        • 第五字段 【空:】用户备注
        • 第六字段 【/home/amber:】 用户宿主目录
        • 第七字段 【/bin/bash:】登录的 shell (若为/sin/nologin 则不能登录)

2. /etc/shadow

    • 作用:保存用户的帐号、密码、有效期等信息,每一行对应一个用户名的密码和信息。一共9字段
    • tail -1 /etc/shadow】
    • 用户名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
      • 用户密码需要复杂,最好使用数字、大小写、字母、特殊字符的组合,长度足够,使用无规律的密码,定期更换。
      • 用户:资源获取标识符,资源分配,安全权限模型的核心要素之一
      • 密码:来实现用户认证的

5、添加、修改和删除用户

1. 【useradd】添加用户

    1. 命令格式:
      • useradd [选项] 用户名
      • useradd [-u UID] [-g GID] [-d HOME] [-M] [-s] 用户名
    1. 常用选项:
      • 【-u】 自定义UID 不能超过UIDMAX(/etc/login.defs中)
      • 【-g 组名 自定义GID(可以写组名),前提是这个GID已经存在
      • 【-d 家目录路径自定义家目录(家目录需事先不存在),需要使用绝对路径
      • 【-m】自动创建用户的家目录。useradd 命令将会在 /home 目录下创建一个以用户名命名的目录作为用户的家目录。
      • 【-M】 不要创建用户家目录(系统帐号默认值)
        • useradd 命令会自动在 /home 目录下创建一个与用户名相同的目录作为用户的家目录。但是,当使用 -M 选项时,不会创建该家目录。
        • 在某些情况下,可能会创建一些临时用户,这些用户只需要临时访问系统,而不需要自己的工作目录或个人环境。在这种情况下,可以选择不创建家目录,以节省系统资源和简化管理工作。
      • 【-s Shell路径 自定义shell,若没有,默认为/etc/default/useradd中定义的shell
      • 【-G 组名】指定附加组,可以指多个。 如果放弃自己的基本组 需要接-g 后面再接-G
      • 【-r】:创建系统用户 ID < 500
    1. 示例
#1、创建一个新用户:
  useradd myuser  
#2、创建一个新用户并设置初始用户组:
  useradd -g mygroup myuser
#3、创建一个新用户并设置默认Shell:
  useradd -s /bin/bash myuser
#4、创建一个新用户并设置家目录:
  useradd -m -d /home/myuser myuser
#5、创建一个新用户并设置密码:
  useradd -p $(openssl passwd -1 mypassword) myuser
#6、使用 -r 选项创建一个系统用户(没有家目录,没有登录Shell):
  useradd -r sysuser
#7、使用 -G 选项将用户添加到一个或多个附加组中:
  useradd -G group1,group2 myuser
#8、使用 -M 选项创建用户时不创建家目录:
  useradd -M -s /bin/bash myuser
#9、使用 -u 选项指定新用户的 UID:
  useradd -u 1001 myuser

2. 【usermod】修改用户属性信息

    1. 命令格式:
      • usermod [选项] 用户名
      • usermod [-u UID] [-g GID] [-d HOME] [-s] [-l][-G] [-L] 用户名
    1. 常用选项:
      • 【-l,-login修改用户名
      • 【-G,--groups 设置用户的附加组
      • 【-a,--append将用户添加到附加组而不移除现有的附加组。只能和 -G 选项一起使用
      • 【-L,--lock锁定用户账户,禁止登录。
      • 【-U,--unlock】解锁用户账户,允许登录。
      • 【-d,--home修改用户的家目录路径。
      • 【-g,--gid修改用户的主组ID
      • 【-u,--uid修改用户的UID。
      • 【-s,--shell修改用户的登录Shell。
      • 【-e, --expiredate】设置用户账户的过期日期。
      • 【-m, --move】移动用户的家目录到新位置并更新 /etc/passwd 文件。
    1. 示例
#1、修改用户的登录名:
  usermod -l newusername oldusername
#2、修改用户的UID:
  usermod -u 1001 username
#3、修改用户的主组ID:
  usermod -g newgroup username
#4、修改用户的家目录路径:
  usermod -d /new/home/directory username
#5、修改用户的登录Shell:
  usermod -s /bin/bash username
#6、将用户添加到附加组:
  usermod -aG newgroup username
#7、锁定用户账户:
  usermod -L username
#8、解锁用户账户:
  usermod -U username

3. 【userdel】删除用户

    1. 基本语法:
      • userdel [options] username
    1. 常用选项
      • 【-r, --remove】删除用户的家目录及邮件目录。如果不加这个选项,默认只会删除用户账户,而不会删除与其关联的家目录和邮件目录。
    1. 示例
#1、删除用户账户:
  userdel username
#2、删除用户账户及其家目录和邮件目录:
  userdel -r username

4. 【passwd】修改密码

    1. 用于更改用户的密码。用户可以更改自己的密码,也可以由系统管理员(root)更改其他用户的密码。
      • 注意:普通用户也可以修改密码 但只能修改自身用户的密码,并且,密码要求由复杂性能要求(字母,包括大小写字母,数字,符号)
    1. 基本语法:
      • passwd [options] [username]
      • passwd xxxxxx passwd --stdin USERNAME(从标准输入接受用户密码)
    1. 选项:
      • 【-l,--lock 锁定用户密码,禁止用户登录系统(双重锁定)
      • 【-u,--unlock 解锁用户密码,允许用户登录系统
      • 【-d, --delete】删除用户密码,使用户无需密码登录系统(仅限root用户)。
      • 【-e, --expire】立即使用户密码过期,需要用户下次登录时重新设置密码。
    1. 示例
#1、更改当前用户的密码:
  passwd
#2、更改指定用户的密码:
  passwd username
#3、锁定用户密码:
  passwd -l username
#4、解锁用户密码:
  passwd -u username
#5、删除用户密码:
  passwd -d username
#6、立即使用户密码过期:
  passwd -e username

5. 【gpasswd】更改组成员和密码

    1. 用于管理组密码,允许用户设置和修改组的密码,以及管理组的成员
    2. 基本语法:
      • gpasswd [options] [groupname]
    1. 常用选项:
      • 【-a, --add user】将用户添加到指定组。
      • 【-d, --delete user】从指定组中删除用户。
      • 【-r, --remove-password】从指定组中删除密码。
      • 【-A, --administrators user,...】指定组的管理员列表。(设置有管理权限的用户列表)
      • 【-M, --members user,...】指定组的成员列表。
    1. 示例
#1、将用户添加到指定组:
  gpasswd -a username groupname
#2、从指定组中删除用户:
  gpasswd -d username groupname
#3、从指定组中删除密码:
  gpasswd -r groupname
#4、指定组的管理员列表:
  gpasswd -A admin1,admin2 groupname
#5、指定组的成员列表:
  gpasswd -M user1,user2 groupname

6、添加、修改、删除用户组

1. 组账号

    1. 组账号分类:
      • 基本组 (私有组)
        • 与用户直接关联,每个用户在系统中都有一个主要的基本组
        • 由系统自动创建,并与用户的用户名相同
        • 主要作用是管理用户创建的文件和目录的权限,文件的默认所属组通常是用户的基本组。
        • 用户可以创建自己的基本组,并将文件和目录的访问权限限制在该组内。
      • 附加组(公共组)
        • 是用户可以选择加入的其他组,与基本组不同,一个用户可以属于多个附加组
        • 通常用于共享资源和协作工作,多个用户可以加入同一个附加组以便共享文件和目录的访问权限。
        • 附加组的权限通常由组内的成员共享,而不是由用户的主要基本组决定。
        • 系统管理员可以创建附加组,并授权用户加入这些组来访问特定的资源和服务
    1. GID:组标识号
    2. 组账号文件
      • /etc/group: 保存组账号基本信息
      • /etc/gshadow保存组账号的密码信息(较少使用)

2. 【groupadd】创建新的用户组

    1. 语法格式
      • groupadd [options] groupname
      • groupadd [-g GID] 用户组名
    1. 常用选项:
      • 【-g, --gid GID】自定义用户组标识符GID,不加-g则按照系统默认创建组,从500开始
      • 【-r, --system】创建一个系统用户组,其GID通常在100以下。
      • 【-f, --force】即使已存在同名用户组,也强制执行。
    1. 示例
1、创建新的用户组:
  groupadd mygroup
2、指定用户组的组标识号(GID):
  groupadd -g 1001 mygroup
3、创建系统用户组:
  groupadd -r mygroup

3. 【id】显示用户或组的信息

    1. 语法格式
      • id [options] [username]
    1. 常用选项:
      • 【-u, --user】仅显示用户的 UID。
      • 【-g, --group】仅显示用户的基本组的 GID。
      • 【-G, --groups】显示用户所属的所有组的 GID。
      • 【-n, --name】以文本形式显示用户和组的名称,而不是数值标识符。(不能单独使用)
      • 【-r, --real】显示真实用户和组,而不是有效用户和组。
      • 【-z, --zero】使用 NUL 字符而不是换行符来分隔多个 GID。
    1. 示例
#1、显示当前用户的 UID 和 GID:
  id
#2、显示指定用户的 UID 和 GID:
  id username
#3、仅显示当前用户的 UID:
  id -u
#4、仅显示当前用户的基本组的 GID:
  id -g
#5、显示当前用户所属的所有组的 GID:
  id -G
#6、以文本形式显示当前用户的用户和组的名称:
  id -n

4. 【su】切换用户

    1. 语法格式
      • su [options] [username]
    1. 常用选项:
      • 【-, -l, --login】切换到目标用户的登录 shell,即以目标用户的环境变量启动一个新的登录会话。
      • 【-c, --command】执行指定的命令,而不是启动一个新的 shell。
      • 【-s, --shell】指定要使用的 shell。
      • 【-m, --preserve-environment】保持当前环境变量,不重置为目标用户的环境。
      • 【-p, --pty】创建一个伪终端(PTY),通常与 -l 选项一起使用。
      • su USER 非登陆切换
      • su - USER 登录切换,读取用户配置文件
    1. 示例
#1、切换到 root 用户:
  su
#2、切换到指定用户的登录 shell:
  su - username
#3、在切换用户后执行指定的命令:
  su -c "ls -l" username
#4、切换到指定用户的 shell,但保持当前环境变量不变:
  su -m username
#5、指定要使用的 shell:
  su -s /bin/bash username

5. 【groupmod】修改用户组

    1. 语法格式
      • groupmod [options] GROUP
      • groupmod [-g Gid] [-n 新用户组名] 用户组名
    1. 常用选项
      • 【-g, --gid GID】指定新的组标识号(GID)。(修改现有的GID)
      • 【-n, --new-name】指定新的组名。(修改组名)
      • 【-o, --non-unique】允许使用非唯一的 GID。
      • 【-R, --root CHROOT_DIR】在指定的 chroot 环境中操作。
    1. 示例
#1、修改组名:
  groupmod -n newgroup oldgroup
#2、修改组的 GID:
  groupmod -g 1001 groupname
#3、允许使用非唯一的 GID:
  groupmod -o groupname

6. 【groupdel】删除用户组

    1. 用于删除 Linux 系统中的用户组。它会删除系统中指定的用户组及其相关的信息,包括 /etc/group 文件中的条目以及用户组的主目录(如果有的话)
      • 注意:如果删除的用户组为某个用户的基本组(主组),那么这个即将要删除的用户组不能被删除
    1. 语法格式
      • groupdel [options] groupname
    1. 常用选项
      • 【-f, --force】强制删除用户组,即使用户组中还有用户存在。
      • 【-h, --help】显示帮助信息。
    1. 示例
#1、删除名为 mygroup 的用户组:
  groupdel mygroup
#2、强制删除名为 mygroup 的用户组,即使用户组中还有用户存在:
  groupdel -f mygroup

7. 【/etc/group】文件查看用户组

    1. /etc/group 文件是 Linux 系统中存储用户组信息的文本文件,它记录了系统中所有用户组的定义。
    2. 每一行表示一个用户组的信息,格式如下:groupname:password:GID:user_list
      • groupname:用户组的名称。
      • password:通常存放加密后的用户组密码,但在现代系统中很少使用。通常用占位符 x 表示。
      • GID:用户组的唯一标识号(Group ID)。
      • user_list:属于该用户组的用户列表,用逗号分隔。
    1. 查看/etc/group文件里的内容
      • 【cat /etc/group】
      • 【less /etc/group】

8. 【pwck】审计密码文件的完整性

    1. 用于检查 /etc/passwd 文件中用户的完整性和一致性。它会扫描 /etc/passwd 文件中的每一行,并检查其中的每个用户是否都拥有相应的系统资源(全称:password check)
    2. 语法格式
      • pwck [选项] [用户名]
    1. 常用选项
      • 【-r】修复 /etc/passwd 文件中的错误。
      • 【-s】显示扫描过程中的详细信息。
      • 【-q】静默模式,只显示错误信息。
    1. 示例
pwck -r           # 修复 /etc/passwd 文件中的错误
pwck -s           # 显示扫描过程中的详细信息
pwck user1        # 检查用户 user1 的完整性和一致性

9. 【chage】修改用户和密码的有效期

    1. 用于更改用户密码过期信息以及帐号有效期限等用户账号信息。它允许管理员修改用户的密码过期时间、账号失效时间等
    2. 语法格式
      • chage [选项] 用户名
    1. 常用选项
      • 【-l, --list】显示用户的账号信息。
      • 【-E, --expiredate】设置用户账号失效日期。
      • 【-d, --lastday】设置用户密码过期的最后日期。
      • 【-m, --mindays】设置用户可以更改密码的最短天数。
      • 【-M, --maxdays】设置用户密码的有效期限。
    1. 示例
chage -l user1        # 显示用户 user1 的账号信息
chage -M 90 user1     # 设置用户 user1 的密码有效期为90天
chage -d 2024-12-31 user1   # 设置用户 user1 的密码过期日期为2024年12月31日

10. 【chsh】修改指定用户的shell

    1. (change shell)用于更改用户的默认登录 shell。默认情况下,用户的登录 shell 是指用户登录系统后使用的命令行解释器。通过 chsh 命令,管理员可以修改用户的默认 shell,以满足用户的个性化需求或系统的要求。
    2. 语法格式
      • chsh [选项] [用户名]
    1. 常用选项
      • 【-s, --shell】指定用户的新登录 shell。
      • 【-l, --list-shells】列出系统中可用的所有 shell。
    1. 示例
chsh -s /bin/bash user1   # 将用户 user1 的登录 shell 更改为 Bash
chsh -l                   # 列出系统中可用的所有 shell

7、权限管理

1. 文件和目录的权限管理

    1. 在Linux系统中,文件和目录的权限管理是通过三种身份来控制的:属主(owner)、属组(group)和其他用户(other)。
    2. 每个文件或目录都有一个属主和一个属组,同时也会对其他用户开放一定的权限
      • 属主(owner):文件或目录的创建者。属主对文件或目录有最高的权限,包括读取、写入和执行。属主可以是任何用户,而不限于当前登录用户。
      • 属组(group):文件或目录所属的用户组。属组中的用户具有与属主相似的权限。通常情况下,属组由多个用户共享,文件或目录的属组通常由创建者的默认用户组确定。
      • 其他用户(other):除属主和属组之外的所有用户。其他用户拥有对文件或目录的限制权限,通常是最低权限。这些权限是系统中未指定为属主或属组的用户的权限。
    1. 这种权限管理机制是基于一组权限标志,分别是读(read)、写(write)和执行(execute)。这些标志控制了不同身份对文件或目录的访问权限
      • 读权限(read)r:允许用户读取文件内容或查看目录中的文件列表。
      • 写权限(write)w:允许用户修改文件内容或向目录中添加、删除、重命名文件。
      • 执行权限(execute)x:对文件而言,允许用户执行该文件(如运行脚本或可执行文件);对目录而言,允许用户进入该目录。
      • 这些权限标志组合在一起,形成了一串字符,一共有九个字符,分别表示文件的权限情况
        • 前三个字符表示属主权限
        • 中间三个字符表示属组权限
        • 最后三个字符表示其他用户权限。
        • 例如,rwxr-xr-- 表示属主具有读、写、执行权限,属组具有读、执行权限,其他用户具有读权限。

2. 【chown】修改文件的属主和属组

    1. (change owner)用于改变文件或目录的属主(owner)和/或属组(group)的命令。仅管理员可执行
    2. 语法格式
      • chown [OPTIONS] [新属主][:新属组] 文件或目录
    1. 常用选项
      • 【-R, --recursive】递归地修改指定目录及其子目录下的文件和目录的属主和/或属组。
      • 【--reference=RFILE】将文件或目录的属主和属组设置为参考文件 RFILE 的属主和属组。
      • 【--help】显示帮助信息并退出。
      • 【--version】显示版本信息并退出。
    1. 示例
# 将文件 file1 的所属组修改为新用户组 group1
  chgrp group1 file1
# 递归地将目录 dir1 及其子目录下的所有文件和目录的所属组修改为新用户组 group1
  chgrp -R group1 dir1

3. 【chgrp】修改文件或目录的所属组

    1. (change group),修改文件或目录的所属组。
    2. 语法格式
      • chgrp [OPTIONS] 新属组 文件或目录
    1. 常用选项
      • 【-R, --recursive】递归地修改指定目录及其子目录下的文件和目录的所属组。
      • 【--reference=RFILE】将文件或目录的所属组设置为参考文件 RFILE 的所属组。
      • 【--help】显示帮助信息并退出。
      • 【--version】显示版本信息并退出。
    1. 示例
# 将文件 file1 的所属组修改为新用户组 group1
  chgrp group1 file1
# 递归地将目录 dir1 及其子目录下的所有文件和目录的所属组修改为新用户组 group1
  chgrp -R group1 dir1

注意:默认使用什么用户登录,那么新创建出来的文件属主和属组就属于登录用户的属主属组

4. 【chmod】修改文件权限

    1. (change mode)修改文件或目录的权限模式
      1. 如何查看权限
        • 文件:ls -l
        • 目录:ls -d
    1. 语法格式
      • chmod [OPTIONS] MODE FILE...
      • OPTIONS 是一些可选参数,MODE 是要设置的权限模式(以 8 进制形式表示),FILE 是要修改权限的文件或目录。
    1. 权限模式 MODE 由以下部分组成
      1. ugoa:表示权限要赋予的对象,包括:
        • u:属主(owner)
        • g:属组(group)
        • o:其他用户(others)
        • a:所有用户(等价于 ugo
      1. +-=:表示要添加、移除或设置权限,包括:
        • +:添加权限
        • -:移除权限
        • =:设置权限
      1. rwxXst:表示权限的种类,包括:
        • r:读权限(4)
        • w:写权限(2)
        • x:执行权限(1)
        • X:仅当文件为可执行文件或目录时,才设置执行权限
        • s:设置用户或组的有效权限位
        • t:设置目录的粘滞位
    1. 示例
# 1、将文件 file1 的属主的读写权限设置为可读可写
  chmod u+rw file1
# 2、将文件 file2 的属组的执行权限移除
  chmod g-x file2
# 3、将目录 dir1 及其子目录下的所有文件和目录的其他用户的执行权限设置为可执行
  chmod -R o+x dir1
# 4、将文件 file1 的权限设置为 rw-r--r--
  chmod 644 file1
# 5、将文件 file2 的权限设置为 rwxr-xr-x
  chmod u+rwx,g+rx,o+rx file2
# 6、将目录 dir1 及其子目录下所有文件和目录的权限设置为 rwxr-xr-x
  chmod -R u+rwx,g+rx,o+rx dir1
# 7、将文件 file3 的权限设置为与文件 file1 相同
  chmod --reference=file1 file3
    1. 指令解析——chmod 644 file1
      • 将文件 file1 的权限设置为 644。这个权限模式可以分解为三个部分:644
      • 第一个数字 6 表示属主(文件的所有者)的权限。在八进制表示中,6 对应的权限是 read(4)和 write(2),所以属主具有读取和写入的权限。
      • 接下来的两个数字 4 表示属组(文件所属的用户组)的权限。与属主相同,也是 read(4)权限。
      • 最后一个 4 表示其他用户的权限,也只有读取权限。
      • 这条指令将 file1 的权限设置为:
        • 属主:读取和写入
        • 属组:读取
        • 其他用户:读取

5. 【umask】权限掩码

    1. (user file creation mask)用于设置文件创建时的默认权限掩码。它指定了新文件权限的屏蔽位,即从最大权限中减去的权限。决定了新创建的文件或目录的默认权限
  • 在理解这句话之前,首先需要了解文件和目录权限是如何表示的
    • 在Linux系统中,每个文件和目录都有三种基本权限:读取(r)、写入(w)和执行(x),分别对应着数字表示中的 4、2 和 1。
    • 这些权限可以用三位数字来表示,例如 644 表示属主有读写权限,而其他用户只有读权限。
  • 而在umask命令中,所设置的权限掩码会从最高权限中减去
    • 在这里,“最高权限”指的是所有可能权限的集合,也就是文件和目录的完全权限
    • 默认情况下,文件的完全权限为 666,而目录的完全权限为 777
    • umask命令会从(完全权限-指定的权限=实际默认权限)
  • 例如,如果设置了umask为 022
    • 意味着去除了“写入”权限(2)的属组和其他用户
    • 对于文件来说,666-022=644,实际默认权限就变成了 644(属主有读写权限,而属组和其他用户只有读权限)。
    • 对于目录来说,777-022=755,实际默认权限就变成了 755(属主有读写执行权限,而属组和其他用户只有读执行权限)。
  • 因此,umask命令通过从文件和目录的完全权限中减去指定的权限,得到了实际的默认权限,从而确保了新创建的文件和目录具有适当的权限。
      1. 重要说明1:
        • 如果没有提供新的权限掩码,则 umask 命令会显示当前的权限掩码。
        • 新的权限掩码通常以八进制数字形式表示。每个数字代表一类用户的权限。
        • umask 的工作方式是将新的权限掩码应用于最大权限(666777),然后减去 umask 中定义的权限。
      1. 重要说明2:
        • 通常,对于普通用户,推荐的 umask 设置是 022002,以确保创建的文件和目录不会被其他用户意外地访问或修改。
        • umask 命令通常在 shell 启动文件(如 .bashrc.bash_profile)中设置,以确保每次登录时都会应用正确的权限掩码。
    1. 语法格式
      • umask [新的权限掩码]
    1. 示例
#1、显示当前的权限掩码:
  umask
#2、设置新的权限掩码为 022:
  umask 022
#3、设置新的权限掩码为 002:
  umask 002
#4、设置新的权限掩码为 777(不推荐,因为它会禁用所有权限):
  umask 777
    1. 计算默认权限
      • 创建文件时,默认权限为 666,然后减去 umask 的值。
      • 创建目录时,默认权限为 777,然后减去 umask 的值。
    1. 特殊说明
      • 对于 root 用户,其默认 umask 通常是 022,这意味着文件的默认权限是 644,目录的默认权限是 755
      • 对于普通用户,默认的 umask 通常是 002,这意味着文件的默认权限是 664,目录的默认权限是 775
      • 如果用户的用户名和基本组名一致,则 umask002,否则为 022

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

开源、轻量、易用的服务器实时监控工具:哪吒探针

本文首发于只抄博客&#xff0c;欢迎点击原文链接了解更多内容。 前言 哪吒探针是一个开源、轻量、易用的服务器监控、运维工具&#xff0c;它有以下几个特点&#xff1a; 一键安装&#xff1a;可以一键安装面板与 Agent&#xff0c;并且支持 Linux、Windows、MacOS、OpenWRT…

scikit-learn:Python中的机器学习-1

简介&#xff1a;问题设置 什么是机器学习&#xff1f; 机器学习是关于构建具有可调参数的程序&#xff0c;这些参数可以自动调整&#xff0c;以便通过适应先前看到的数据来改善其行为。机器学习可以被认为是人工智能的一个子领域&#xff0c;因为这些算法可以被视为构建模块…

气象数据nc数据矢量化处理解析及可视化

气象数据可视化是将气象学领域中复杂的数据集转化为图形或图像的过程&#xff0c;以直观展示天气现象、气候模式、趋势和预报结果。气象数据的可视化技术广泛应用于科学研究、气象预报、航空、航海、农业生产、灾害预警系统、城市规划、公众服务等领域。以下是一些关键的气象数…

CSAPP | Bits, Bytes, and Integers

Great Reality Ints are not Integers, Floats are not Reals 对于 (x y) z x (y z)&#xff0c;无符号整形和有符号整形是成立的。 但是对于浮点数, (1e20 -1e20) 3.14 -> 3.14&#xff0c;而 1.e20 (-1e20 3.14) 0 typedef struct {int a[2];double d; }stru…

【LeetCode】拓扑排序——课程表 I II

拓扑排序&#xff1a; AOV网&#xff1a;若用DAG图&#xff08;有向无环图&#xff09;表示一个工程&#xff0c;其顶点表示活动&#xff0c;用有向边<Vi, Vj>表示活动Vi必须先于活动Vj进行的这样一种关系&#xff0c;则将这种有向图称为顶点表示活动的网络&#xff0c;…

JSP:操作指令

目录 目录 一、jsp:useBean操作 语法格式&#xff1a; 属性说明&#xff1a; scope作用域&#xff1a; 1.page&#xff1a; 2.request&#xff1a; 3.session&#xff1a; 4.application 案例&#xff1a;JavaBean的简单使用 二、jsp:setProperty操作 语法格式&a…

【记录】Python3| 将 PDF 转换成 HTML/XML(✅⭐⭐⭐⭐pdf2htmlEX)

本文将会被汇总至 【记录】Python3&#xff5c;2024年 PDF 转 XML 或 HTML 的第三方库的使用方式、测评过程以及对比结果&#xff08;汇总&#xff09;&#xff0c;更多其他工具请访问该文章查看。 文章目录 pdf2htmlEX 使用体验与评估1 安装指南2 测试代码3 测试结果3.1 转 HT…

jenkins转载文本

基于Docker容器DevOps应用方案 企业业务代码发布系统 一、企业业务代码发布方式 1.1 传统方式 以物理机或虚拟机为颗粒度部署部署环境比较复杂&#xff0c;需要有先进的自动化运维手段出现问题后重新部署成本大&#xff0c;一般采用集群方式部署部署后以静态方式展现 1.2 容…

ubuntu部署sonar与windows下使用sonar-scanner

ubuntu部署sonar与windows下使用sonar-scanner sonar部署java安装mysql安装配置sonarqube 插件安装sonar-scanner使用简单使用 sonar部署 使用的是sonarqube-7.5&#xff0c;支持的java环境是jdk8&#xff0c;且MySQL版本 >5.6 && <8.0 java安装 打开终端&…

为什么3D模型材质是透明的?---模大狮模型网

在进行3D建模和渲染过程中&#xff0c;正确的材质设置是保证模型外观逼真和渲染效果良好的关键之一。然而&#xff0c;有时您可能会遇到3D模型材质变成透明的情况&#xff0c;这可能会导致意想不到的效果和渲染结果。本文将探讨一些可能导致3D模型材质变成透明的原因&#xff0…

Go中为什么不建议用锁?

Go语言中是不建议用锁&#xff0c;而是用通道Channel来代替(不要通过共享内存来通信&#xff0c;而通过通信来共享内存)&#xff0c;当然锁也是可以用&#xff0c;锁是防止同一时刻多个goroutine操作同一个资源&#xff1b; GO语言中&#xff0c;要传递某个数据给另一个gorout…

亚马逊关键字搜索商品列表API接口:探索海量商品的利器

亚马逊关键字搜索商品列表API接口允许开发者通过输入关键字或特定参数&#xff0c;在亚马逊平台上进行商品搜索&#xff0c;并返回符合搜索条件的商品列表信息。这些信息包括商品的标题、图片、价格、评价等&#xff0c;为商家、开发者以及市场分析师提供了丰富的商品数据支持。…

Aker(安碁科技)晶振产品应用和选型

一、石英晶体振荡器简介 在电子电路系统中&#xff0c;特定的动作需要严格按照一定的顺序进行&#xff0c;以确保数据被正确处理和操作&#xff0c;时钟信号就成了系统工作的重要引导者。而且在多模块复杂电路系统中&#xff0c;为了确保不同功能模块能协调一致地工作&#xf…

C#调用skiasharp操作并绘制图片

之前学习ViewFaceCore时采用Panel控件和GDI将图片及识别出的人脸方框和关键点绘制出来&#xff0c;本文将其修改为基于SKControl和SKCanvas实现相同的显示效果并支持保存为本地图片。   新建Winform项目&#xff0c;在Nuget包管理器中搜索并安装一下SkiaSharp和ViewFaceCore…

三维SDMTSP:GWO灰狼优化算法求解三维单仓库多旅行商问题,可以更改数据集和起点(MATLAB代码)

一、单仓库多旅行商问题 多旅行商问题&#xff08;Multiple Traveling Salesman Problem, MTSP&#xff09;是著名的旅行商问题&#xff08;Traveling Salesman Problem, TSP&#xff09;的延伸&#xff0c;多旅行商问题定义为&#xff1a;给定一个&#x1d45b;座城市的城市集…

springboot 集成 flowable

随着企业对于业务流程管理需求的增加&#xff0c;流程引擎在企业信息化建设中的作用越来越重要。Flowable是一个开源的轻量级业务流程管理&#xff08;BPM&#xff09;和工作流引擎&#xff0c;它支持BPMN 2.0标准。 Flowable的一些特点&#xff1a; 安装集成&#xff1a;Flow…

hdfs安全模式

hdfs安全模式 1.安全模式 查看hdfs是否在安全模式&#xff1a;不能上传数据 删除 修改 但是能查看 ------------------------ $>hdfs dfsadmin -safemode enter //进入 $>hdfs dfsadmin -safemode get //查看 $>hdfs dfsadmin -saf…

巧用 TiCDC Syncpiont 构建银行实时交易和准实时计算一体化架构

本文阐述了某商业银行如何利用 TiCDC Syncpoint 功能&#xff0c;在 TiDB 平台上构建一个既能处理实时交易又能进行准实时计算的一体化架构&#xff0c;用以优化其零售资格业务系统的实践。通过迁移到 TiDB 并巧妙应用 Syncpoint&#xff0c;该银行成功解决了原有多个 MySQL 集…

解决TIVA飞控玄学类问题的通解,用魔法打败魔法

问题&#xff1a;我遭遇了玄学问题&#xff0c;出现飞机在起降过程中&#xff0c;位置晃动&#xff0c;突然出现的&#xff0c;昨天还好好的&#xff0c;位置地点都没换&#xff0c;今天中午测试了5、6次每次都这样&#xff0c;现在茫然无措&#xff0c;小哥救我&#xff1f; 这…

数据库管理-第179期 分库分表vs分布式(20240430

数据库管理179期 2024-04-30 数据库管理-第179期 分库分表vs分布式&#xff08;20240430&#xff09;1 分库分表1.1 分库1.2 分表1.3 组合1.4 问题 2 分布式3 常见分布式数据库4 期望总结 数据库管理-第179期 分库分表vs分布式&#xff08;20240430&#xff09; 作者&#xff1…