首页 > 其他分享 >用户管理

用户管理

时间:2024-01-24 12:22:09浏览次数:31  
标签:管理 root 用户组 用户 fishman Tom 160

一、用户与用户组的概念

用户与用户组概念

Linux是一个多用户、多任务的服务器操作系统,多用户多任务指可以在系统上建立多个用户,而多个用户可以在同一时间内登录同一个系统执行各自不同的任务,而互不影响。

Linux用户是根据角色定义的,具体分为三种角色:

超级用户:拥有对系统的最高管理权限,默认是root用户。

普通用户:只能对自己目录下的文件进行访问和修改,具有登录系统的权限,例如www用户、ftp用户等。

虚拟用户:也叫“伪”用户,这类用户最大的特点是不能登录系统,它们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求。

用户和用户组的对应关系有:一对一、一对多、多对一和多对多。

Linux系统中每一个用户都至少属于一个用户组,管理员可以通过对用户组的管理来设置用户对系统的访问权限,从而在一定程度上保证了对系统访问的安全性。

在使用useradd命令创建用户的时候,系统除创建该用户外,默认情况下还会创建一个同名的用户组,作为该用户的用户组,同时还会在/home目录下创建同名的目录作为该用户的主目录。如果一个用户属于多个组,那么记录在/etc/passwd文件中的组称为该用户的主组,其他的组称为附属组。

主要组(主组):每个用户有且只有一个主要组。

附属组(补充组):用户可以是零个或多个附属组成员。一般用于帮助确保用户具有对系统中文件 及其他资源的访问权限。

二、与用户管理相关的配置文件

1用户信息配置文件/etc/passwd

在Linux系统中,用户信息被存放在系统的/etc/passwd文件中,系统的每一个合法用户对应于该文件中的一行记录。这行记录定义了该用户的属性。由于所有的用户对passwd文件均有读取的权限,因此密码信息并未保存在该文件中,而是保存在了/etc/shadow配置文件中。

在passwd配置文件中,每行均由7个字段构成,各个字段之间用“:”分隔,每个字段都代表该用户某方面的信息。

1689556810929

#用户名:密码占位符:UID:GID:用户描述:家目录:登录后用到的shell
root:x:0:0:root:/root:/bin/bash 
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

在passwd配置文件中,从左到右各个字段的含义如下:

用户名:用户登录系统时使用的用户名。

密码:存放加密的密码,被/etc/shadow文件保护。

用户标识号(UID):系统内部用它来标识用户,每个用户的UID都是唯一的。

用户组标识号(GID):系统内部用它来标识用户所属的组,这里的GID是主组GID。

注释性描述:为了方便管理和记忆该用户而添加的信息。

用户主目录:也称家目录,用户登录系统后所进入的目录。

命令解释器:指示该用户使用的Shell,CentOS Linux 8默认的是bash。如果指定Shell为/sbin/nologin,则代表用户无法登录系统。

 

2、用户密码配置文件/etc/shadow

为了加强系统安全性,Linux操作系统提供了专门的密码管理文件。

该文件对一般用户不可读,只有root用户才能够读取。

在/etc/shadow文件中,一行对应一个用户的密码信息,每行均由9个字段构成,各个字段之间用“:”分隔。

1689557018509

#用户名:加密密码:最后一次修改的日期:密码最小时间间隔:密码最大时间间隔:警告时间:失效日期:禁用日期:保留字段
root:$6$g17DLXf6.6F5rHro$9JbfGsyELRbh4dP39eRI0Io49DvcXBtxjjGpXWZgAQk8QzKhjH7IEfkJtHxPy5SpjM9JoEZdaDuxHizdnGoL0/::0:99999:7:::
bin:*:19326:0:99999:7:::
daemon:*:19326:0:99999:7:::
adm:*:19326:0:99999:7:::
lp:*:19326:0:99999:7:::
sync:*:19326:0:99999:7:::
shutdown:*:19326:0:99999:7:::
halt:*:19326:0:99999:7:::
mail:*:19326:0:99999:7:::
operator:*:19326:0:99999:7:::

在shadow配置文件中,从左到右各个字段的含义如下:

(1) 用户名:用户账户名。

(2) 密码:用户的加密密码。

(3) 最后一次修改的日期:从1970年1月1日起,到用户最后一次更改密码的天数。

(4) 密码最小时间间隔:从1970年1月1日起,到用户可以更改密码的天数,(0表示随时可以变更)。

(5) 密码最大时间间隔:从1970年1月1日起,到必须更改密码的天数,否则密码将过期,(99999表示永远不过期)。

(6) 警告时间:在密码过期之前多少天提醒用户更新,默认值是7天。

(7) 密码失效日期:表示密码失效的日期,以自1970年1月1日以来的天数计算(从上次密码失效之后的天数)。

(8) 账户失效日期:表示账户失效的日期,以自1970年1月1日以来的天数计算(从上次账户失效之后的天数)。

(9) 保留字段:保留字段未使用。

 

3、用户组配置文件/etc/group

将用户进行分组是Linux系统对用户进行管理及控制访问权限的一种手段。一个组中可以有多个用户,一个用户也可以属于多个组。系统中所有的组信息存放于/etc/group文件,其中一行对应一个用户组的信息,每行均由4个字段构成,各个字段之间用“:”分隔。

 

#组名:组密码:GID(组标识符):组成员
utempter:x:35:
input:x:999:
kvm:x:36:qemu
render:x:998:
systemd-journal:x:190:
systemd-coredump:x:997:
systemd-resolve:x:193:
tss:x:59:clevis
polkitd:x:996:

/etc/group文件中各字段的含义从左到右分别是:

组名:组的名称,由字母、数字和特殊字符组成

组密码:用户组的密码,在大多数情况下,密码字段为空,表示没有设置组密码。用x表示口令是被/etc/gshadow文件保护的。

组标识号(GID):系统内部用它来标识用户组,每个用户组的GID都是唯一的。

组成员:该组的成员,由逗号分隔的用户名列表,表示属于该组的用户。

 

三、用户管理命令

1、useradd创建用户

useradd -d -u "UID" -g "初始组" -G "附加租" -s "登录shell" 用户

 

参数 描述
-d 用户主目录路径,可以指定家目录
-u 手工指定新用户的ID值,该值必须唯一,且大于999。
-M 不创建用户的家目录
-g 设置用户初始组的名称或数字ID;该组必须存在
-G 用户加入附加组列表;使用","逗号分割多个组,不要添加空格;如果不设置,用户仅加入初始组
-s 用户默认登录的shell路径;若要禁止用户登录动作,可以将shell设置成/sbin/shell
-r 创建系统账号(用户ID小于1000,从999起按照递减的顺序创建),默认不创建对应的主目录

例:创建Tom

[root@fishman-160 ~]# useradd Tom  #useadd 创建用户Tom
[root@fishman-160 ~]# ls /home # 没有为tom指定用户组和主目录,所以系统会创建同名用户组tom作为tom用户的用户组
kc  Tom
[root@fishman-160 ~]# tail -1 /etc/passwd 
Tom:x:1001:1001::/home/Tom:/bin/bash
[root@fishman-160 ~]# ls /var/mail# 在/var/spool/mail和/var/mail下创建与tom同名的文件,作为tom用户的邮件日志文件和备份。
kc  rpc  Tom
[root@fishman-160 ~]# ls /var/spool/mail
kc  rpc  Tom
[root@fishman-160 ~]# id tom
id: “tom”:无此用户
[root@fishman-160 ~]# id Tom #系统会创建同名用户组tom作为tom用户的用户组
uid=1001(Tom) gid=1001(Tom) 组=1001(Tom)
[root@fishman-160 ~]# 

例:创建一个名为zhangqi的用户,设置主目录为:/var/zhangqi,作为root组的成员,加注释:101school,指定用户Shell为:/bin/sh。

[root@fishman-160 ~]# useradd zhangqi -d /var/zhangqi -c 101shcool -s /bin/sh -g root
[root@fishman-160 ~]# tail -1 /etc/passwd
zhangqi:x:1002:0:101shcool:/var/zhangqi:/bin/sh 
[root@fishman-160 ~]# groups zhangqi #通过groups <username>查看用户所属组
zhangqi : root

2、userdel删除用户

userdel -r <username> # -r 递归删除,会删除家目录,日志目录等
[root@fishman-160 ~]# userdel -r zhangqi
[root@fishman-160 ~]# ls /var/
account/  cache/    db/       ftp/      gopher/   lib/      lock/     mail/     opt/      run/      tmp/      yp/       
adm/      crash/    empty/    games/    kerberos/ local/    log/      nis/      preserve/ spool/    .updated  
[root@fishman-160 ~]# ls /var/
account/  cache/    db/       ftp/      gopher/   lib/      lock/     mail/     opt/      run/      tmp/      yp/       
adm/      crash/    empty/    games/    kerberos/ local/    log/      nis/      preserve/ spool/    .updated  
[root@fishman-160 ~]# ls /var/mail/
kc  rpc  Tom

3 、修改密码

passwd <username>

1689560414701

[root@fishman-160 ~]# echo 123456 | passwd --stdin Tom
更改用户 Tom 的密码 。
passwd:所有的身份验证令牌已经成功更新。

#echo 123456 命令会将字符串 "123456" 输出到标准输出(通常是终端屏幕),然后通过管道符将其传递给 passwd --stdin Tom 命令。
#passwd --stdin Tom 命令用于将标准输入中的内容作为密码设置给用户 "Tom"。通过管道,它接收了来自 echo 123456 的输出作为密码输入,从而自动将密码设置为 "123456"。

4、密码文件

[root@fishman-160 ~]# sudo grep -E '^kc:|^Tom:' /etc/shadow #-E 是启用正则表达式匹配模式
kc:$6$VVL7fEiAUNWkhTC3$gqJBRCu4vmb7cdrgSbGMvtt72B0HWSI6G3mYbqvLYmegl8Unwvp/zE5vddGp6WCKSl0s.azZaPFSXnD2z0PKC.:19555:0:99999:7:::
Tom:$6$Bz8YWnvTLBIyBF.n$GxTRECvSuDZ8ArP1LuidpQu6LKv8KSxYJOQeDSc5VQM9xJ2emc4TaPavPHdL4e.7GldDsiWq3ATdnyWRV4FcZ/:19555:0:99999:7:::
#KC Tom 是同一个密码,但是哈希值不同,因为前面的salt不同。
#互换密码是可以登录的,salt是加密过程中生成

passwd 已加密密码,分为三个部分,第一部分是表示使用哪种哈希算法;第二部分是用于加密哈希的salt;第三部分是已加密哈希

哈希算法:$1表示MD5;

$6表示SHA-512;

$5表示SHA-256;

 

5、添加用户的规则文件

控制用户添加规则的文件:/etc/default/useradd 和 /etc/login.defs

[root@fishman-160 ~]# vim /etc/default/useradd
  1 # useradd defaults file
  2 GROUP=100
  3 HOME=/home
  4 INACTIVE=-1
  5 EXPIRE=
  6 SHELL=/bin/bash
  7 SKEL=/etc/skel
  8 CREATE_MAIL_SPOOL=yes
  9 
[root@fishman-160 ~]# vim /etc/login.defs
1 #
  2 # Please note that the parameters in this configuration file control the
  3 # behavior of the tools from the shadow-utils component. None of these
  4 # tools uses the PAM mechanism, and the utilities that use PAM (such as the
  5 # passwd command) should therefore be configured elsewhere. Refer to
  6 # /etc/pam.d/system-auth for more information.
  7 #
  8 
  9 # *REQUIRED*
 10 #   Directory where mailboxes reside, _or_ name of file, relative to the
 11 #   home directory.  If you _do_ define both, MAIL_DIR takes precedence.
 12 #   QMAIL_DIR is for Qmail
 13 #
 14 #QMAIL_DIR      Maildir
 15 MAIL_DIR        /var/spool/mail
 16 #MAIL_FILE      .mail
 17 
 18 # Default initial "umask" value used by login(1) on non-PAM enabled systems.
 19 # Default "umask" value for pam_umask(8) on PAM enabled systems.
 20 # UMASK is also used by useradd(8) and newusers(8) to set the mode for new
 21 # home directories if HOME_MODE is not set.
 22 # 022 is the default value, but 027, or even 077, could be considered
 23 # for increased privacy. There is no One True Answer here: each sysadmin
 24 # must make up their mind.
 25 UMASK           022
 26 
 27 # HOME_MODE is used by useradd(8) and newusers(8) to set the mode for new
 28 # home directories.
 29 # If HOME_MODE is not set, the value of UMASK is used to create the mode.
 30 HOME_MODE       0700
 31 
 32 # Password aging controls:
 33 #
 34 #       PASS_MAX_DAYS   Maximum number of days a password may be used.
 35 #       PASS_MIN_DAYS   Minimum number of days allowed between password changes.
 36 #       PASS_MIN_LEN    Minimum acceptable password length.
 37 #       PASS_WARN_AGE   Number of days warning given before a password expires.
 38 #
 39 PASS_MAX_DAYS   99999
 40 PASS_MIN_DAYS   0
 41 PASS_MIN_LEN    5
 42 PASS_WARN_AGE   7
 43 
 44 #
 45 # Min/max values for automatic uid selection in useradd
 46 #
 47 UID_MIN                  1000
 48 UID_MAX                 60000
 49 # System accounts
 50 SYS_UID_MIN               201
 51 SYS_UID_MAX               999
 52 
 53 #
 54 # Min/max values for automatic gid selection in groupadd
 55 #
 56 GID_MIN                  1000
 57 GID_MAX                 60000
 58 # System accounts
 59 SYS_GID_MIN               201
 60 SYS_GID_MAX               999
 61 
 62 #
 63 # If defined, this command is run when removing a user.
 64 # It should remove any at/cron/print jobs etc. owned by
 65 # the user to be removed (passed as the first argument).
 66 #
 67 #USERDEL_CMD    /usr/sbin/userdel_local
 68 
 69 #
 70 # If useradd should create home directories for users by default
 71 # On RH systems, we do. This option is overridden with the -m flag on
 72 # useradd command line.
 73 #
 74 CREATE_HOME     yes
 75 
 76 # This enables userdel to remove user groups if no members exist.
 77 #
 78 USERGROUPS_ENAB yes
 79 
 80 # Use SHA512 to encrypt password.
 81 ENCRYPT_METHOD SHA512
 82 
                                                                               

6、查看用户相关信息的命令

command description
id 查看当前有效用户名
who 显示登陆系统用户信息
w 显示已登陆系统的用户列表
users 显示当前登陆系统的所有用户的列表

7、usermod修改用户信息

usermode <参数> <用户名>
command description
-u 需改用户的UID
-d 修改用户的家目录
-g 修改用户的主要组ID
-G 修改用户的附加组ID
-s shell
-L 锁定
-U 解锁
-e 修改用户密码过期的日期

1700705842921

例:移动家目录

usermod -m -d /home/new_home john
#将用户john的家目录路径修改为/home/new_home,并将现有的文件迁移到新的位置:

8、误删家目录内.bashrc、.bash_profile、.bash_logout等文件的找回

[root@fishman-160 ~]# ll -a /etc/skel/ #可以去/etc/skel/目录下复制拷贝
总用量 24
drwxr-xr-x.   3 root root   78 7月   6 13:27 .
drwxr-xr-x. 149 root root 8192 7月  17 10:54 ..
-rw-r--r--.   1 root root   18 4月   8 2022 .bash_logout
-rw-r--r--.   1 root root  141 4月   8 2022 .bash_profile
-rw-r--r--.   1 root root  376 4月   8 2022 .bashrc
drwxr-xr-x.   4 root root   39 7月   6 13:26 .mozilla

例:重建Tom用户下的误删家目录文件

[root@fishman-160 ~]# ll -a /home/Tom
总用量 0
drwx------  3 Tom  Tom  22 7月  17 11:18 .
drwxr-xr-x. 4 root root 27 7月  17 10:01 ..
drwxr-xr-x  4 Tom  Tom  39 7月   6 13:26 .mozilla
[root@fishman-160 ~]# cp /etc/skel/.bash* /home/Tom
[root@fishman-160 ~]# ll -a /home/Tom #文件的拥有者和所属组不正确,不应该是root,而应该是Tom
总用量 12
drwx------  3 Tom  Tom   78 7月  17 11:19 .
drwxr-xr-x. 4 root root  27 7月  17 10:01 ..
-rw-r--r--  1 root root  18 7月  17 11:19 .bash_logout
-rw-r--r--  1 root root 141 7月  17 11:19 .bash_profile
-rw-r--r--  1 root root 376 7月  17 11:19 .bashrc
drwxr-xr-x  4 Tom  Tom   39 7月   6 13:26 .mozilla
[root@fishman-160 ~]# chown Tom:Tom /home/Tom/.bash*  #务必修改文件拥有者和所属组
[root@fishman-160 ~]# ll -a /home/Tom
总用量 12
drwx------  3 Tom  Tom   78 7月  17 11:19 .
drwxr-xr-x. 4 root root  27 7月  17 10:01 ..
-rw-r--r--  1 Tom  Tom   18 7月  17 11:19 .bash_logout
-rw-r--r--  1 Tom  Tom  141 7月  17 11:19 .bash_profile
-rw-r--r--  1 Tom  Tom  376 7月  17 11:19 .bashrc
drwxr-xr-x  4 Tom  Tom   39 7月   6 13:26 .mozilla

9、批量创建用户newusers

newusers < adduser.txt

首先创建一个存放用户信息的文件,里面的用户信息格式要和passwd这个文件保持一致

adduser.txt文件格式如下

username:password:UID:GID:comment:home_directory:shell
[root@fishman-160 ~]# vim adduser.txt 
test1:x:1100:1100::/home/test1:/bin/bash
test2:x:1101:1101::/home/test2:/bin/bash
test3:x:1102:1102::/home/test3:/bin/bash
[root@fishman-160 ~]# newusers<adduser.txt #newusers 命令读取addruser.txt文件

[root@fishman-160 ~]# tail -3 /etc/passwd
test1:x:1100:1100::/home/test1:/bin/bash
test2:x:1101:1101::/home/test2:/bin/bash
test3:x:1102:1102::/home/test3:/bin/bash

[root@fishman-160 ~]# tail -3 /etc/shadow
test1:$6$.MFZ1/o75K8$lEXJ5uH1Swjn8dKUbxjYTbzEH.YYgTXekmPY4J6Xx0a8RjRqI41HxNAqS3yxwzpyfiPq/VOvhw6rcQc.IIgjI0:19555:0:99999:7:::
test2:$6$Rhkx./4iKOu/Y3UG$xJP8Y0NIy70v3n1Fzy/SJ9BbEodCM/wKpSTgppnOwwLyiiQgK9fuAn/yMi8uNhUYDyi0sQvXcDae.5mfl76Qb/:19555:0:99999:7:::
test3:$6$PXU.d0l9k$vbSH0KzjE4fUvaQZ6UZ6jCkFY1N1IZP.D9/6B1T84PI1yc3PtT3JzmjMVUpiZgpEIJzSyjBKm6kdwzA.5fQ1Z/:19555:0:99999:7:::

10、找回丢失的root密码(CentOS8)

在启动过程中,选择 Grub 菜单中的 CentOS 8 内核版本。
按下 `e` 键进入编辑模式,在 `linux16` 行的末尾添加 `rd.break` 参数,并按下 `Ctrl+X` 或 `F10` 启动系统。
进入 emergency 模式,在提示符中键入 `mount -o remount,rw /sysroot`,并按 Enter 键。
运行 `chroot /sysroot` 命令以切换到根文件系统。
运行 `passwd` 命令以更改 root 用户的密码。按照提示输入新的密码并确认。
运行 `touch /.autorelabel` 命令以触发 SELinux 上下文重新标记。
运行 `exit` 命令两次以退出 chroot 环境和 emergency 模式。
系统将继续引导,此时您可以使用新设置的 root 密码登录系统。

例:

开机进入CentOS,并按'e'进入编辑选项

1689571688307

 

linux16 行的末尾添加 rd.break 参数,并按下 Ctrl+XF10 启动系统。

1689571760506

1689571865058

顺利进入 emergency 模式

1689571919915

命令mount 查看挂载分区情况

1689572034187

mount -o remount,rw /sysroot/ #重新挂载分区,以读写模式挂载/sysroot/分区
chroot /sysroot 切换到根文件系统

1689572296030

passwd完成修改密码

1689572371453

touch /.autorelabel # 命令以触发 SELinux 上下文重新标记。

image-20230717134059128

exit	 #exit两次以退出 chroot 环境和 emergency 模式

 

1700551150949

1700551192393

1700551224560

1700551248319

image-20231122104230137

四、组管理

在 Linux 中,组管理主要涉及到创建、修改和删除用户组。以下是一些常用的组管理命令及其参数:

1. groupadd

用于创建新的用户组。

sudo groupadd [options] group_name

常用选项:

  • -g GID:指定新创建的用户组的组ID。

  • -r:创建一个系统用户组。

例子:

sudo groupadd -g 1001 mygroup

2. groupmod

用于修改已存在的用户组的属性。

sudo groupmod [options] group_name

常用选项:

  • -g GID:修改用户组的组ID。

  • -n new_group_name:修改用户组的名称。

例子:

sudo groupmod -g 1002 mygroup

3. groupdel

用于删除用户组。

sudo groupdel group_name

例子:

sudo groupdel mygroup

4. groups

显示用户所属的组。

groups [username]

例子:

groups username

这些是基本的组管理命令和参数。在使用这些命令时,请确保以足够的权限运行,通常需要使用 sudo 或者在具有相应权限的用户下运行。可以通过 man 命令来查看这些命令的手册页,以获取更详细的信息和选项。

 

标签:管理,root,用户组,用户,fishman,Tom,160
From: https://www.cnblogs.com/kcloveworld/p/17984390

相关文章

  • 文件管理
    1、创建文件touch文件名1文件名2[root@fishman-160~]#touch1.txt[root@fishman-160~]#ls1.txt公共模板视频图片文档下载音乐桌面anaconda-ks.cfginitial-setup-ks.cfg[root@fishman-160~]#touch{2..10}.txt[root@fishman-160~]#ls10.txt......
  • C#析构函数解析:资源管理的精要和使用技巧
     在C#中,析构函数(Destructor)是一个特殊的方法,用于清理对象占用的资源。它是由垃圾回收器在对象被销毁时自动调用的。析构函数的原理是在对象即将被回收时执行一些清理操作,例如释放非托管资源或执行一些对象销毁前的必要操作。析构函数的基本原理:调用时机: 当对象被垃圾回收......
  • 如何提升供应链文件收发的安全和效率,进行高质量管理?
    供应链文件收发是供应链管理中的一个重要环节,涉及到信息流、物流和资金流的有效传递。这些文件可能包括采购订单、发货通知、发票、运输单据、收货确认等。以下是一些关于供应链文件收发的文件类型基本信息:采购订单(PO):供应商收到的正式文件,表明客户已同意购买特定数量和规格的产品......
  • CDP技术系列(一):使用bitmap存储数十亿用户ID的标签或群体
    一、背景介绍CDP系统中目前存在大量由用户ID集合组成的标签和群体,截止当前已有几千+标签,群体2W+。大量的标签都是亿级别数据量以上,例如性别、职业、学历等均,甚至有群体中的ID数量达到了数十亿+。并且随着用户ID池的不断增加,标签和群体本身包含的ID数量也随之增加,如何存储如此多......
  • nodejs多版本管理
    github下载包               https://sites.ipaddress.com/raw.githubusercontent.com/     https://sites.ipaddress.com/github.com/            1.下载安装包到本地wgethttps://github.com/nvm-sh/nvm/ar......
  • minio 支持基于yaml 的配置管理
    minio23年底的一个版本中,支持了基于yaml的配置参数,以前基于环境变量的模式还是支持的,只是yaml成为一个首选模式参考配置yaml配置version:v1address:':9000'rootUser:'minioadmin'rootPassword:'pBU94AGAY85e'console-address:':9001'certs......
  • 180. Consecutive Numbers 连续登录n次的用户
    虽然题目很简短,但是很难做啊!属于比较经典的题目,记录一下思路。参考链接:https://leetcode.cn/problems/consecutive-numbers/solutions/21537/sql-server-jie-fa-by-neilsonsrow_number()over([partitionbyvalue_expression,...n]orderbycolumnName)题目解析:1.要获......
  • GIT版本管理工具教程
    GIT版本管理工具教程一Git初始化下载安装,下载地址:https://git-scm.com/downloads每个系统的都有(linux、mac、windows等),看官网的安装教程,很详细,此处我以windows来练习首先创建一个文件夹,这个文件夹就是我们将来通过git来管理的所有文件的存放地点。在文件夹中右键......
  • Microsoft 365 解决方案:Security Group与Conditional Access强强联手限制不同用户的MF
    51CTO博客链接:https://blog.51cto.com/u_13637423多重身份验证(MFA)为登录流程增加了一层保护。访问帐户或应用时,用户需要提供额外的身份验证,例如扫描指纹或输入手机收到的验证码,确保你用于高风险帐户的凭据可以防止网络钓鱼和渠道入侵。MicrosoftEntra中的MFA会要求使用以下......
  • React 状态管理 valtio 解析
    valtio是什么valtio是一个很轻量级的响应式状态管理库,它基于Proxy实现,类似于vue的数据驱动视图的理念,使用外部状态代理去驱动React视图更新,不管在react组件内部还是外面都可以使用。下面提供valtio基本用法例子:https://codesandbox.io/embed/5x592g?view=Editor+%2B+Pr......