首页 > 系统相关 >大年学习linux(第三节---用户管理)

大年学习linux(第三节---用户管理)

时间:2024-02-20 09:56:01浏览次数:19  
标签:第三节 etc passwd 用户 --- 密码 linuxde linux root

三、用户管理

用户和用户组操作命令

ld
Finger
Pwck

检查/etc/passwd配置文件内的信息与实际主文件夹是否存在,还可比较/etc/passwd和/etc/shadow的信息是否一致,另外如果/etc/passwd中的数据字段错误也会提示。

Grpck
和pwck功能相近,这个是检查用户组的。
Groups

newgrp

useradd

usermod

usermod
用于修改用户的基本信息

补充说明
usermod命令 用于修改用户的基本信息。usermod 命令不允许你改变正在线上的使用者帐号名称。当 usermod 命令用来改变user id,必须确认这名user没在电脑上执行任何程序。你需手动更改使用者的 crontab 档。也需手动更改使用者的 at 工作档。采用 NIS server 须在server上更动相关的NIS设定。

语法
usermod(选项)(参数)
选项
-c<备注>:修改用户帐号的备注文字;
-d<登入目录>:修改用户登入时的目录,只是修改/etc/passwd中用户的家目录配置信息,不会自动创建新的家目录,通常和-m一起使用;
-m<移动用户家目录>:移动用户家目录到新的位置,不能单独使用,一般与-d一起使用。
-e<有效期限>:修改帐号的有效期限;
-f<缓冲天数>:修改在密码过期后多少天即关闭该帐号;
-g<群组>:修改用户所属的群组;
-G<群组>;修改用户所属的附加群组;
-l<帐号名称>:修改用户帐号名称;
-L:锁定用户密码,使密码无效;
-s:修改用户登入后所使用的shell;
-u:修改用户ID;
-U:解除密码锁定。
参数
登录名:指定要修改信息的用户登录名。

实例
将 newuser2 添加到组 staff 中:

usermod -G staff newuser2
修改newuser的用户名为newuser1:

usermod -l newuser1 newuser
锁定账号newuser1:

usermod -L newuser1
解除对newuser1的锁定:

usermod -U newuser1
增加用户到用户组中:

apk add shadow # 安装 shadow 包, usermod 命令包含在 usermod 中
usermod -aG group user # 添加用户到用户组中
-a 参数表示附加,只和 -G 参数一同使用,表示将用户增加到组中。

修改用户家目录:

[root@node-1 ~]# useradd lutixiaya
[root@node-1 ~]# ls /home
lutixiaya
[root@node-1 ~]# usermod -md /data/new_home lutixiaya
[root@node-1 ~]# ls /home/
[root@node-1 ~]# ls /data/
new_home

userdel
用于删除给定的用户以及与用户相关的文件

补充说明
userdel命令 用于删除给定的用户,以及与用户相关的文件。若不加选项,则仅删除用户帐号,而不删除相关文件。

语法
userdel(选项)(参数)
选项
-f:强制删除用户,即使用户当前已登录;
-r:删除用户的同时,删除与用户相关的所有文件。
参数
用户名:要删除的用户名。

实例
userdel命令很简单,比如我们现在有个用户linuxde,其家目录位于/var目录中,现在我们来删除这个用户:

userdel linuxde # 删除用户linuxde,但不删除其家目录及文件;
userdel -r linuxde # 删除用户linuxde,其家目录及文件一并删除;
请不要轻易用-r选项;他会删除用户的同时删除用户所有的文件和目录,切记如果用户目录下有重要的文件,在删除前请备份。

其实也有最简单的办法,但这种办法有点不安全,也就是直接在/etc/passwd中删除您想要删除用户的记录;但最好不要这样做,/etc/passwd是极为重要的文件,可能您一不小心会操作失误。

groupadd
groupmod
groupdel 都是用来删除用户组的

groupmod
更改群组识别码或名称

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

语法
groupmod(选项)(参数)
选项
-g<群组识别码>:设置欲使用的群组识别码;
-o:重复使用群组识别码;
-n<新群组名称>:设置欲使用的群组名称。
参数
组名:指定要修改的工作的组名

groupadd
用于创建一个新的工作组

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

语法
groupadd(选项)(参数)
选项
-g:指定新建工作组的id;
-r:创建系统工作组,系统工作组的组ID小于500;
-K:覆盖配置文件“/ect/login.defs”;
-o:允许添加组ID号不唯一的工作组。
参数
组名:指定新建工作组的组名。

实例
建立一个新组,并设置组ID加入系统:

groupadd -g 344 jsdigname
此时在/etc/passwd文件中产生一个组ID(GID)是344的项目。

groupdel
用于删除指定的工作组

补充说明
groupdel命令 用于删除指定的工作组,本命令要修改的系统文件包括/ect/group和/ect/gshadow。若该群组中仍包括某些用户,则必须先删除这些用户后,方能删除群组。

语法
groupdel(参数)
参数
组:要删除的工作组名。

实例
groupadd damon //创建damon工作组
groupdel damon //删除这个工作组

passwd
用于让用户可以更改自己的密码

补充说明
passwd命令 用于设置用户的认证信息,包括用户密码、密码过期时间等。系统管理者则能用它管理系统用户的密码。只有管理者可以指定用户名称,一般用户只能变更自己的密码。

语法
passwd(选项)(参数)
选项
-d:删除密码,仅有系统管理者才能使用;
-f:强制执行;
-k:设置只有在密码过期失效后,方能更新;
-l:锁住密码;
-s:列出密码的相关信息,仅有系统管理者才能使用;
-u:解开已上锁的帐号。
参数
用户名:需要设置密码的用户名。

知识扩展
与用户、组账户信息相关的文件

存放用户信息:

/etc/passwd
/etc/shadow
存放组信息:

/etc/group
/etc/gshadow
用户信息文件分析(每项用:隔开)

例如:jack:X:503:504:::/home/jack/:/bin/bash
jack  # 用户名
X  # 口令、密码
503  # 用户id(0代表root、普通新建用户从500开始)
504  # 所在组
:  # 描述
/home/jack/  # 用户主目录
/bin/bash  # 用户缺省Shell
组信息文件分析

例如:jack:$!$:???:13801:0:99999:7:::
jack  # 组名
$!$  # 被加密的口令
13801  # 创建日期与今天相隔的天数
0  # 口令最短位数
99999  # 用户口令
7  # 到7天时提醒
*  # 禁用天数
*  # 过期天数
实例
如果是普通用户执行passwd只能修改自己的密码。如果新建用户后,要为新用户创建密码,则用passwd用户名,注意要以root用户的权限来创建。

[root@localhost ~]# passwd linuxde # 更改或创建linuxde用户的密码;
Changing password for user linuxde.
New UNIX password: # 请输入新密码;
Retype new UNIX password: # 再输入一次;
passwd: all authentication tokens updated successfully. # 成功;
普通用户如果想更改自己的密码,直接运行passwd即可,比如当前操作的用户是linuxde。

[linuxde@localhost ~]$ passwd
Changing password for user linuxde. # 更改linuxde用户的密码;
(current) UNIX password: # 请输入当前密码;
New UNIX password: # 请输入新密码;
Retype new UNIX password: # 确认新密码;
passwd: all authentication tokens updated successfully. # 更改成功;
比如我们让某个用户不能修改密码,可以用-l选项来锁定:

[root@localhost ~]# passwd -l linuxde # 锁定用户linuxde不能更改密码;
Locking password for user linuxde.
passwd: Success # 锁定成功;

[linuxde@localhost ~]# su linuxde # 通过su切换到linuxde用户;
[linuxde@localhost ~]$ passwd # linuxde来更改密码;
Changing password for user linuxde.
Changing password for linuxde
(current) UNIX password: # 输入linuxde的当前密码;
passwd: Authentication token manipulation error # 失败,不能更改密码;
再来一例:

[root@localhost ~]# passwd -d linuxde # 清除linuxde用户密码;
Removing password for user linuxde.
passwd: Success # 清除成功;

[root@localhost ~]# passwd -S linuxde # 查询linuxde用户密码状态;
Empty password. # 空密码,也就是没有密码;
注意:当我们清除一个用户的密码时,登录时就无需密码,这一点要加以注意。

Chage 修改用户密码有效期限的命令
修改帐号和密码的有效期限

补充说明
chage命令 是用来修改帐号和密码的有效期限。

语法
chage [选项] 用户名
选项
-m:密码可更改的最小天数。为零时代表任何时候都可以更改密码。
-M:密码保持有效的最大天数。
-w:用户密码到期前,提前收到警告信息的天数。
-E:帐号到期的日期。过了这天,此帐号将不可用。
-d:上一次更改的日期。
-i:停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。
-l:例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。
实例
可以编辑/etc/login.defs来设定几个参数,以后设置口令默认就按照参数设定为准:

PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
当然在/etc/default/useradd可以找到如下2个参数进行设置:

useradd defaults file

GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
通过修改配置文件,能对之后新建用户起作用,而目前系统已经存在的用户,则直接用chage来配置。

我的服务器root帐户密码策略信息如下:

[root@linuxde ~]# chage -l root
最近一次密码修改时间 : 3月 12, 2013
密码过期时间 :从不
密码失效时间 :从不
帐户过期时间 :从不
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :99999
在密码过期之前警告的天数 :7
我可以通过如下命令修改我的密码过期时间:

[root@linuxde ~]# chage -M 60 root
[root@linuxde ~]# chage -l root
最近一次密码修改时间 : 3月 12, 2013
密码过期时间 : 5月 11, 2013
密码失效时间 :从不
帐户过期时间 :从不
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :60
在密码过期之前警告的天数 :9
然后通过如下命令设置密码失效时间:

[root@linuxde ~]# chage -I 5 root
[root@linuxde ~]# chage -l root
最近一次密码修改时间 : 3月 12, 2013
密码过期时间 : 5月 11, 2013
密码失效时间 : 5月 16, 2013
帐户过期时间 :从不
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :60
在密码过期之前警告的天数 :9
从上述命令可以看到,在密码过期后5天,密码自动失效,这个用户将无法登陆系统了。

id
打印真实以及有效的用户和所在组的信息

概要
id [OPTION]... [USER]...
主要用途
没有选项时,打印指定用户ID信息。
选项
-a 兼容性选项,没有实际作用。
-Z, --context 只打印进程的安全上下文。
-g, --group 只打印有效的组ID。
-G, --groups 打印全部组ID。
-u, --user 只打印有效的用户ID。
-z, --zero 使用空字符代替默认的空格来分隔条目。
--help 显示帮助信息并退出。
--version 显示版本信息并退出。
只有在使用 -u -g -G 选项中一到多个时,以下选项可以使用:

-n, --name 打印名称而不是数字。
-r, --real 打印真实ID而不是有效ID。
参数
user(可选):可以为一到多个,默认为当前用户。

返回值
返回0表示成功,返回非0值表示失败。

例子
[root@localhost ~]# id
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)
解释:用户root的UID号码 = 0,GID号码 = 0。用户root是下面组的成员:

root组GID号是:0
bin组GID号是:1
daemon组GID号是:2
sys组GID号是:3
adm组GID号是:4
disk组GID号是:6
wheel组GID号是:10
打印用户名、UID 和该用户所属的所有组,要这么做,我们可以使用 -a 选项:

[root@localhost ~]# id -a
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)
输出所有不同的组ID ,有效的,真实的和补充的,我们可以使用 -G 选项来实现:

[root@localhost ~]# id -G
0 1 2 3 4 6 10
结果只会显示GID号。你可以和/etc/group文件比较。下面是/etc/group文件的示例内容:

只输出有效的组ID,通过使用 -g 选项来只输出有效组ID:

[root@localhost ~]# id -g
0
输出特定用户信息,我们可以输出特定的用户信息相关的UID和GID。只需要在id命令后跟上用户名:

[root@localhost ~]# id www
uid=500(www) gid=500(www) groups=500(www)
注意
该命令可以显示真实有效的用户ID(UID)和组ID(GID)。UID 是对一个用户的单一身份标识。组ID(GID)则对应多个UID;一些程序可能需要UID/GID来运行。id 使我们更加容易地找出用户的UID以及GID,而不必在 /etc/group 文件中搜寻。

该命令是GNU coreutils包中的命令,相关的帮助信息请查看man -s 1 id,info coreutils 'id invocation'。

finger
用于查找并显示用户信息

补充说明
finger命令 用于查找并显示用户信息。包括本地与远端主机的用户皆可,帐号名称没有大小写的差别。单独执行finger指令,它会显示本地主机现在所有的用户的登陆信息,包括帐号名称,真实姓名,登入终端机,闲置时间,登入时间以及地址和电话。

语法
finger(选项)(参数)
选项
-l:列出该用户的帐号名称,真实姓名,用户专属目录,登入所用的Shell,登入时间,转信地址,电子邮件状态,还有计划文件和方案文件内容;
-m:排除查找用户的真实姓名;
-s:列出该用户的帐号名称,真实姓名,登入终端机,闲置时间,登入时间以及地址和电话;
-p:列出该用户的帐号名称,真实姓名,用户专属目录,登入所用的Shell,登入时间,转信地址,电子邮件状态,但不显示该用户的计划文件和方案文件内容。
不指定finger的选项如果提供操作者的话,缺省设为-l输出风格,否则为-s风格,注意在两种格式中,如果信息不足,都有一些域可能丢失,如果没有指定参数finger会为当前登录的每个用户打印一个条目。

参数
用户名:指定要查询信息的用户。

实例
在计算机上使用finger:

[root@localhost root]# finger
login Name Tty Idle Login time Office Office Phone
root root tty1 2 Dec 18 13
root root pts/0 1 Dec 18 13
root root *pts/1 Dec 18 13

注意:如果没有安装,可以使用 sudo yum install finger -y 针对于老版本
如果要查询远程机上的用户信息,需要在用户名后面接@主机名,采用用户名@主机名的格式,不过要查询的网络主机需要运行finger守护进程的支持。

查询登录主机的用户工具:w 、who、users

Groups 用户所归属的用户组查询

groups
打印指定用户所在组的名称。

概要
groups [OPTION]... [username]...
主要用途
打印指定用户所在组的名称。
选项
--help 显示帮助信息并退出。
--version 显示版本信息并退出。
参数
username(可选):可以是一到多个,不提供时默认为当前用户。

返回值
返回0表示成功,返回非0值表示失败。

例子
显示linux用户所属的组

[root@localhost ~]# groups linux
linux : linux adm dialout cdrom plugdev lpadmin admin sambashare
注意
该命令等价于 id -Gn。
每个用户属于/etc/passwd中指定的一个组和在/etc/group中指定的其他组。
该命令是GNU coreutils包中的命令,相关的帮助信息请查看man -s 1 groups,info coreutils 'groups invocation'。

相关配置文件

/etc/passwd
/etc/shadow
/etc/gshadow
/etc/group

Linux 用户密码策略

在Linux系统中,用户密码策略主要涉及以下几个方面:

  1. 密码复杂度要求:

    • 最小长度:通过修改/etc/login.defs文件中的PASS_MIN_LEN参数设定密码的最小长度。
    • 复杂性规则:可以使用PAM模块(如pam_cracklib)来强制执行密码复杂度策略,比如必须包含大写字母、小写字母、数字和特殊字符等。
  2. 密码过期策略:

    • 密码有效期:通过编辑 /etc/login.defs 中的 PASS_MAX_DAYSPASS_MIN_DAYS 参数设置密码的有效期范围,以及 PASS_WARN_AGE 设置提前多少天提醒用户更改密码。
    • 密码历史:使用PAM模块如 pam_unix.so 的 remember=N 选项限制用户不能重复使用最近N次的密码。
  3. 错误尝试锁定:

    • 登录失败次数:通过配置/etc/pam.d/system-auth或其他与认证相关的PAM配置文件,启用pam_tally2pam_faillock模块限制连续错误登录尝试次数,并在达到阈值后锁定账号一段时间。
  4. 自动解锁时间:

    • 锁定账户后,可以通过配置相应的PAM模块设置自动解锁时间。
  5. 密码到期前警告:

    • 系统可以根据需要在用户登录时显示密码即将过期的提示信息。

例如,在Red Hat Enterprise Linux (RHEL)系列系统中,可以在/etc/security/pwquality.conf配置文件中调整密码质量控制,而在Ubuntu系统中,则通常在/etc/pam.d/common-password等PAM配置文件中添加或修改行以启用密码策略模块。

具体配置命令示例可能包括:

# 在/etc/login.defs设置密码最小长度
echo "PASS_MIN_LEN   8" >> /etc/login.defs

# 使用pam_cracklib加强密码复杂度
sed -i '/password.*required/s/$/ pam_cracklib.so minlen=8 difok=3 retry=3/' /etc/pam.d/system-auth

# 设置密码有效期
echo "PASS_MAX_DAYS   90" >> /etc/login.defs
echo "PASS_MIN_DAYS   7" >> /etc/login.defs
echo "PASS_WARN_AGE   7" >> /etc/login.defs

# 使用pam_tally2限制登录尝试次数
auth        required      pam_tally2.so deny=5 onerr=fail unlock_time=604800

# 对于RHEL/CentOS 7及更高版本,使用pam_faillock模块进行账户锁定
auth        [default=die] pam_faillock.so authfail deny=5 unlock_time=604800 even_deny_root root_unlock_time=300
account     required      pam_faillock.so

# 配置密码到期警告
chage -m 7 -W 7 username # 为指定用户设置最小和最大密码更改期限以及警告期

ACL权限设置
ACL是access control list 的缩写,主要用于在提供传统的owner、group 、others的read、write、execute权限之外进行细部权限设置。

启动ACL

让/目录支持ACL:
mount -o remount,acl /
Mount |grep / // 查看是否有挂载

开机启动ACL:
将要启动ACL的分区写入/etc/fstab中:
vi /etc/fstab
/dev/sda5 / ext3 default,acl 1 2

ACL相关命令
ACL(Access Control List)是Linux系统中用于设置文件或目录权限的一种机制,可以实现对不同用户或用户组设置不同的访问权限。与传统的UGO(User、Group、Others)权限管理相比,ACL提供了更细粒度的权限控制。
与ACL相关的命令主要有两个:setfacl和getfacl。

setfacl命令:用于设置ACL权限。其基本语法如下:

bash复制代码
setfacl [选项] 文件名
其中,常用的选项包括:
复制代码
* -m:设置ACL权限。
* -x:删除指定的ACL权限。
* -b:删除所有的ACL权限。
* -d:设置默认ACL权限。
* -k:删除默认ACL权限。
* -R:递归设置ACL权限。例如,要给文件file的用户username设置读、写、执行权限,可以使用以下命令:
bash复制代码
setfacl -m u:username:rwx file

getfacl命令:用于查看ACL权限。其基本语法如下:

bash复制代码
getfacl 文件名
执行该命令后,将显示指定文件或目录的ACL权限信息。例如,要查看文件file的ACL权限,可以执行以下命令:
bash复制代码
getfacl file
此外,需要注意的是,ACL权限的设置和查看都需要在支持ACL的文件系统上进行。在大多数Linux发行版中,ext4文件系统默认支持ACL。在使用ACL时,还需要注意mask值的作用。mask值用于指定最大有效权限,它决定了用户或用户组实际获得的权限。当用户或用户组被赋予ACL权限时,其实际权限将是ACL权限与mask值进行“与”运算的结果。这有助于防止给用户或用户组赋予过高的权限,提供了权限的双重保证。

su
用于切换当前用户身份到其他用户身份

补充说明
su命令 用于切换当前用户身份到其他用户身份,变更时须输入所要变更的用户帐号与密码。

语法
su(选项)(参数)
选项
-c<指令>或--command=<指令>:执行完指定的指令后,即恢复原来的身份;
-f或——fast:适用于csh与tsch,使shell不用去读取启动文件;
-l或——login:改变身份时,也同时变更工作目录,以及HOME,SHELL,USER,logname。此外,也会变更PATH变量;
-m,-p或--preserve-environment:变更身份时,不要变更环境变量;
-s或--shell=:指定要执行的shell;
--help:显示帮助;
--version;显示版本信息。
参数
用户:指定要切换身份的目标用户。

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

su -c ls root
变更帐号为root并传入-f选项给新执行的shell:

su root -f
变更帐号为test并改变工作目录至test的家目录:

su -test

实例二:

由于Ubuntu只能以普通用户登录,登录进去才可以使用su 切换为root

查询用户命令

W
可显示开机多久,当前登录的所有用户,平均负载

Who
显示当前登录的所有用户

Last
显示每个用户最后的登录时间

Lastlog
显示每个用户最后的登录时间

标签:第三节,etc,passwd,用户,---,密码,linuxde,linux,root
From: https://www.cnblogs.com/nwq1101/p/18022440

相关文章

  • 大年学习linux(第四节---文件权限)
    四、文件权限文件类型Linux文件类型和linux文件的文件名所代表的意义是两个不同的概念。我们通过一般应用程序而创建的比如file.txt、file.tar.gz,这些文件虽然要用不同的程序打开,但放在linux文件类型中衡量的话,大多是常规文件。Linux文件系统类型:普通文件-rw-r-r--第一个......
  • 2024年,提升Windows开发和使用体验的实践经验 - RIME输入法
    前言上一篇文章介绍了Windows下的包管理器,本文继续介绍输入法。事实上Windows的输入法生态比Linux/Mac丰富很多,不过很多国产输入法存在窃取隐私、植入广告、乱安装流氓软件等问题,现在有开源的RIME输入法可以选择,何必受这气呢......
  • Programming Abstractions in C阅读笔记:p283-p292
    《ProgrammingAbstractionsinC》学习第72天,p283-p292总结,总计10页。一、技术总结1、anylasisofalgorithms算法分析——即判断程序的效率(efficiency)。2、mathematicalinduction(数学归纳法)3、Big-Onotation(大O标记法)4、constanttime(常量时间)5、lineartime(......
  • CF-928(已更新:B C E)
    CF-928排名四千多,目前为止排名最高的一场~E题我赛时基本上是猜的结论(但是也推了快一小时才想到有这个可能性),因此目前只能放个码在这(⊙﹏⊙)D的话问了学长思路,正在补了0-^-0……但是上一场牛客打得特别烂(⊙﹏⊙),还是等我补了牛客的再更新吧-^-B分析观察它的性质,答案为正方......
  • ARC172 - sol
    AtCoderRegularContest172A-ChocolateMs.AtCoderhasdecidedtodistributechocolatesto\(N\)friendsonValentine'sDay.Forthe\(i\)-thfriend\((1\leqi\leqN)\),shewantstogiveasquarechocolatebarofsize\(2^{A_i}\time......
  • Linux下nohup和&的关系
    nohup和&的关系使用nohup运行程序:输出重定向,默认重定向到当前目录下nohup.out文件使用Ctrl+C(发送SIGINT信号),程序关闭关闭ShellSession(发送SIGHUP信号),程序免疫不关闭使用&运行程序:程序转入后台运行结果会输出到终端使用Ctrl+C(发送SIGINT信号),程序免......
  • 2024年,提升Windows开发和使用体验的一些实践 - 包管理器篇
    前言短暂的春节假期转瞬即逝,忙碌的一年又要开启了......
  • .NET周刊【2月第2期 2024-02-11】
    国内文章C#/.NET该如何自学入门?https://www.cnblogs.com/Can-daydayup/p/18006914随着DotNetGuide技术社区交流群的扩大,很多新成员希望知道如何自学C#/.NET。本文提出了自学建议:首先要了解语言特点与发展,然后制定详细学习计划,以微软官方文档为学习起点,并结合动手实践与其他资源......
  • 测试面试题4-HTTP请求头中Content-Type的作用是什么?
    在HTTP请求头中,Content-Type是用来指示请求或响应中实体主体的媒体类型的字段。它告诉服务器或客户端实体主体的数据类型是什么,以便正确解析数据。以下是一些常见的Content-Type类型:text/plain:纯文本格式text/html:HTML格式application/json:JSON格式application/xml:XML......
  • IDEA、Pycharm等所有JetBrains产品同时报错:Internal error. Please refer to https://
    IDEA、Pycharm等所有JetBrains产品同时报错:Internalerror.Pleaserefertohttps://jb.gg/ide/critical-startup-errors错误Internalerror.Pleaserefertohttps://jb.gg/ide/critical-startup-errorscom.intellij.ide.plugins.StartupAbortedException:Cannotstartap......