Linux-账号和权限管理

前言

Linux最优秀的地方之一就在于它的多人多任务环境,如果你首次接触Linux的话,那么在Linux下面这么多的目录和文件,到底每个目录和文件代表什么意义呢?下面我就来就此做个总结。

一、管理用户账号

与windows操作系统相比,Linux系统中的用户账号和组账号的作用在本质上是一样的,同样都是基于用户身份来控制对资源的访问,只不过在表现形式及个别细节方面存在些许差异。

1.用户账号

在Linux中,根据系统管理的需求用户账号分为不同的类型,其拥有的权限等各不相同,主要包括超级用户、普通用户和程序用户

  • 超级用户
    root用户是Linux系统中默认的超级用户账号,对本主机拥有最高的权限,类似于Windows系统中的 Administrator 用户(出于安全一般日常事务处理建议只用普通用户账号)
  • 普通用户
    普通用户由root用户或其他管理员用户创建,拥有的权力受到一定限制,一般只在用户自己的宿主目录中拥有完整权限
  • 程序用户
    在安装Linux系统及部分应用程序时,会添加一些特定的低权限用户账号,这些用户一般不允许登录到系统,仅用于维持系统或某个程序的正常运行,如bin、daemon、ftp、mail 等

1.1 UID号

Linux 系统中的每一个用户账号都有一个数字形式的身份标记,称为 UID(UserIDentity,用户标识号)

  • 对于系统核心来说,UID 作为区分用户的基本依据,原则上每个用户的UID号应该是唯一的
  • root 用户账号的UID 号为固定值 0
  • 程序用户账号的UID号默认为 1~999
  • 普通用户账号的UID号为 1000~60000

1.2 用户账号文件

Linux系统中的用户账号、密码等信息保存在相应的配置文件中,直接修改这些文件或使用管理命令都可以对用户账号进行管理。

  • /etc/passwd
    /etc/passwd 用于保存用户名称、宿主目录、登录Shell 等基本信息

例如,执行如下命令可查看/etc/passwd 文件开头的几行内容

[root@localhost ~]#head -3 /etc/passwd            
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin

passwd 文件的每一行内容中包含了七个用冒号“ :” 分隔的配置字段,从左到右的字段分别表示如下的含义:

第1段:用户帐号的名称,也是登录系统时使用的识别名称

第2段:经过加密的用户密码字串,或者密码占位符“x”

第3段:用户帐号的 UID 号

第4段:所属基本组帐号的 GID 号

第5段:用户全名,可填写与用户相关的说明信息

第6段:宿主目录,即该用户登录后所在的默认工作目录

第7段:登录 Shell 等信息,用户完成登录后使用的 Shell

  • /etc/shadow
    /etc/shadow 保存用户账号密码信息,账号的有效期等信息,shadow 文件又被称为“影子文件”,一般默认只有root 用户能够读取文件中的内容,不允许直接编辑该文件中的内容

例如,执行以下命令可以查看/etc/shadow 文件开头的几行内容:

[root@localhost ~]#head -2 /etc/shadow
root:$6$y2pPNXfJJsH6drSA$nEiDLPIBr8rtJJpRsLj8PbpcJb.xDSMhcuwAQLp1QiQic9zzp7emfKM5g.n84k3ujEyguqH:99999:7:::
bin:*:17110:0:99999:7:::

shadow 文件的每一行内容中,包含了九个用冒号“ :”分隔的配置字段,从左到右的含义如下:

第1字段:用户账号名称。

第2字段:使用MD5加密的密码字串信息,当为“*”或“!!”时表示此用户不能登录到系统。

第3字段:上次修改密码的时间(1970年01月01日算起)

第4字段:密码的最短有效天数,自本次修改密码后,必须至少经过该天数才能再次修改密码。默认值为0,表示不进行限制。

第5字段:密码的最长有效天数,自本次修改密码后,经过该天数以后必须再次修改密码。默认值为99999,表示不进行限制。

第6字段:提前多少天警告用户口令将过期,默认值为7。

第7字段:在密码过期之后多少天内禁用此用户。

第8字段:账号失效时间,此字段指定了用户作废的天数(从1970年01月01日起计算),默认值为空,表示账号永久可用。

第9字段:保留字段,目前没有特定用途。


2.用户账号管理

2.1 添加用户账号 ——useradd

useradd 命令用于添加用户账号,命令格式如下

useradd [选项] 用户名

常用选项:-u、-d、-e、-g、-G、-M、-s

格式说明
-u指定用户的UID号,要求该UID号码未被其他用户使用
-d指定用户的宿主目录位置(当与-M一起使用时,不生效)
-e指定用户的账户失效时间,可使用YMYYY-MM-DD的日期格式 2021-0101
-g指定用户的基本组名((或使用GID号)
-G指定用户的附加组名(或使用GID号)
-M不建立宿主目录,即使/etc/login.defs系统配置中已设定要建立宿主目录
-s指定用户的登录Shell
  • 案例

最简单的用法是不添加任何选项,只使用用户名作为命令的参数。
例如,执行如下操作可以创建名为yjs的用户账号,并通过查看passwd 、shadow 文件和/home 目录来查看新增用户账号的变化:

root@localhost ~]#useradd yjs
[root@localhost ~]#tail -1 /etc/passwd
yjs:x:1011:1012::/home/yjs:/bin/bash
[root@localhost ~]#tail -1 /etc/shadow
yjs:!!:18847:0:99999:7:::
[root@localhost ~]#ls -A /home/yjs            
.bash_logout  .bash_profile  .bashrc  .mozilla

在账号管理工作中有时候需要指定该账号的有效期限,或者要求新建账号不能登陆系统,这时候可以使用"-e" "-s"选项
例如,执行如下操作可以创建一个名为 yjs 的FTP账号(禁止终端登录),使该账号于2021-08-08 失效

[root@localhost ~]#useradd -e 2021-08-08 -s /sbin/nologin yjs

2.2 设置/更改用户口令——passwd

通过useradd 命令新增用户账号以后,还需要为其设置一个密码才能正常使用。

命令格式如下:

passwd [选项]  用户名

不指定用户名可以修改当前账号的密码

常用选项如下:

格式说明
-d清空指定用户的密码,仅使用用户名即可登录系统
-l锁定用户账户
-S查看用户账户的状态(是否被锁定)
-u解锁用户账户

案例
例①,更改用户 yjs 的登陆密码

[root@localhost ~]#passwd yjs
更改用户 yjs 的密码 。
新的 密码:
无效的密码: 密码未通过字典检查 - 过于简单化/系统化
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

例②,通过passwd 命令锁定、解锁用户账号 yjs

[root@localhost ~]#passwd -l yjs          #锁定账号
锁定用户 yjs 的密码 。                       
passwd: 操作成功
[root@localhost ~]#passwd -S yjs         #查看用户账号的状态  
yjs LK 2021-08-08 0 99999 7 -1 (密码已被锁定。)
[root@localhost ~]#passwd -u yjs         #解锁账号
解锁用户 yjs 的密码。
passwd: 操作成功
[root@localhost ~]#passwd -S yjs        #查看用户是否解锁
yjs PS 2021-08-08 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)

2.3 修改用户账号属性——usermod

对于系统中已经存在的用户账号,可以使用 usermod 命令重新设置各种属性

命令格式如下:

usermod  [选项]  用户名

常用参数如下:

格式说明
-u修改用户的 UID 号
-d修改用户的宿主目录位置
-e修改用户的账户失效时间,可使用 YYYY-MM-DD 的日期格式
-s指定用户的登录Shell
-l更改用户的账号登录名称
-L锁定用户账号
-U解锁用户账号

使用usermod 命令时,大部分的选项与useradd 命令的选项是相对应的,作用起始也相似。一般情况下,最后三个用的比较多。

案例
例①,将 admin 用户的宿主目录由 /admin 转移至 /home/admin :

[root@localhost ~]#mv /admin/home                   #迁移目录
[root@localhost ~]#usermod -d /home/admin admin     #指定宿主目录位置

例②,将admin 用户的登录名称更改为 webmaster ,下次登录时生效

[root@localhost ~]#usermod -l webmaster admin             #更改用户账号登录名
[root@localhost ~]#grep "admin" /etc/passwd               #查看
admin:x:1003:10::/admin:/bin/bash

2.4. 删除用户账号——userdel

工作中,当某个员工已经从公司离职,他的用户账号不再需要使用时,可以使用 userdel 命令将该用户账号删除。

命令格式如下:

userdel [-r]  用户名 

使用-r 选项时可同时删除宿主目录

案例
删除名为 yjs 的用户账号,同时删除其宿主目录

[root@localhost ~]#userdel -r yjs
[root@localhost ~]#ls -ld /home/yjs
ls: 无法访问/home/yjs: 没有那个文件或目录

2.5 用户账号的初始配置文件

添加一个新的用户账号后,useradd 命令会在该用户的宿主目录中建立一些初始配置文件,这些文件来自于账号模板目录 /etc/skel ,基本都是隐藏文件。

常用的初始配置文件包括下面三个:

  • “.bash_logout ” :在用户每次退出登录时执行

  • “.bash_profile ” :用户每次登陆时执行

  • “.bashrc”:每一次加载"/bin/Bash"程序时(登录Shell)执行

[root@localhost /etc/skel]#ls -a
.  ..  .bash_logout  .bash_profile  .bashrc  .mozilla

二、管理组账号

1.组账号

对于用户账号来说,对应的组账号可以分为基本组(私有组)和附加组(公共组)两种类型。

1.1 基本组和附加组

基本组:如果没有指定用户组,创建用户的时候会默认创建一个和这个用户名同名的组,这个组就是基本组
附加组:除了基本组之外,用户所在的其他组,都是附加组,用户是可以从附加组中被删除的。

用户不论位于基本组还是附加组,都会有该组的权限,一个人可以属于多个附加组,但是一个用户只能有一个基本组。

1.2 组账号文件

组账号文件与用户账号文件相类似,分别为/etc/group、/etc/gshadow

  • /etc/group:保存组帐号名称,GID号、组成员等基本信息
  • /etc/gshadow:保存组帐号的密码信息(很少用到)

执行如下的操作可以查看root 组包括哪些用户成员、哪些组中包含 root用户:

[root@localhost /etc/skel]#grep "^root" /etc/group
root:x:0:admin
[root@localhost /etc/skel]#grep "root" /etc/group
root:x:0:admin

2. 组账号管理

2.1 添加组账号——groupadd

命令格式如下:

groupadd [-g GID]  组帐号名

案例

添加一个名为 yjs 的组账号:

[root@localhost /etc/skel]#groupadd yjs
[root@localhost /etc/skel]#tail -1 /etc/group
yjs:x:1012:

2.2 添加、删除组成员——gpasswd

命令格式如下:

gpasswd [选项] 组账号名 

常用选项

格式说明
-a向组内添加一个用户
-d从组内删除一个用户成员
-M同时指定组账号的多个成员用户,用逗号分隔

案例

[root@localhost /etc/skel]#gpasswd -a gulei1 yjs             #把gulei1用户加入 yjs组
正在将用户“gulei1”加入到“yjs”组中
[root@localhost /etc/skel]#groups gulei1                     #确认gulei1用户已加入yjs组
gulei1 : gulei1 yjs
[root@localhost /etc/skel]#gpasswd -d gulei1 yjs             #把gulei1用户从yjs组中删除
正在将用户“gulei1”从“yjs”组中删除
[root@localhost /etc/skel]#groups gulei1                     #确认gulei1用户已退出yjs组
gulei1 : gulei1
[root@localhost /etc/skel]#gpasswd -M gulei1,gulei2,gulei3 yjs    #添加三个用户加入yjs组中
[root@localhost /etc/skel]#grep "^yjs" /etc/group                 #确认是否加入成功
yjs:x:1012:gulei1,gulei2,gulei3

2.3 删除组账号——groupdel

命令格式如下:

groupdel  组账号名

案例

[root@localhost /etc/skel]#groupdel yjs

2.4 修改用户账号属性——usermod

对于系统中已存在的用户账号,可以使用 usermod 命令加选项与用户名重新设置该账号的所属组。
命令格式如下:

usermod [选项]  用户名

常用选项:

格式说明
-u修改用户的UID号
-d修改用户的宿主目录位置
-e修改用户的账户失效时间,可使用YYYY-MM-DD的日期格式
-g修改用户的基本组名(或使用GID号)
-G修改用户的附加组名(或使用GID号)
-s指定用户的登录Shell
-l更改用户账号的登录名称
-L锁定用户账户
-U解锁用户账户

案例

[root@localhost ~]#usermod -l GL gulei1        #更改登录名
[root@localhost ~]#tail -1 /etc/passwd         #查看
GL:x:1006:1007::/home/gulei1:/bin/bash
[root@localhost ~]#usermod -L GL               #锁定用户账号



[root@localhost ~]#tail -2 /etc/shadow         #查看是否锁定
GL:!!:18846:0:99999:7:::                      
GL:!$6$owIlrMTP$4idHfFO2XScCT8E.sWVVP6apsPoNVX/NPAKlsPcxof/BIbgpSKtnaAZFNhYLS1XkClEIfzFaHbtyyxnicxYPD1:18847:0:99999:7:::                        #字符串前加了!表示被锁定
[root@localhost ~]#usermod -U GL               #解锁用户账号
[root@localhost ~]#tail -1 /etc/shadow         #查看是否解锁
GL:$6$owIlrMTP$4idHfFO2XScCT8E.sWVVP6apsPoNVX/NPAKlsPcxof/BIbgpSKtnaAZFNhYLS1XkClEIfzFaHbtyyxnicxYPD1:18847:0:99999:7:::                         #!被去掉了,已解锁

由此可以得出 passwd 和 usermod 的区别:

passwd -l 在密码前加2个”!”
passwd -u 去除密码前的2个”!”
usermod -L 在密码前增加1个”!”
usermod -U 去除密码前的1个”!”

因此使用passwd -l 锁定用户后,需要执行两次usermod -U 或者执行一次passwd -u

三、查询账号信息

在用户管理工作中,虽然直接查看用户账号、组账号的配置文件也可以查询相关信息,但是并不是很直观。在Linux系统中,还可以使用几个常用的查询命令工具,例如id 、groups、finger 、w 、last 等。

1.查询用户账号的身份标识——id

使用 id 命令可以快速查看指定用户账号的 UID、GID等标识信息。例如,执行“id root ”命令可以查看root 账号的用户 ID 号、组ID号,以及所在的附加组ID号:

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

2.查询用户账号所属的组——groups

使用groups 命令可以查看指定的用户账号属于哪些组,例如,查看当前用户root 和GL 用户所属的组账号信息:

[root@localhost ~]#groups 
root
[root@localhost ~]#groups GL
GL : gulei1

3.查询用户账号的登陆属性——finger

使用finger 命令可以查询指定的用户账号的登陆属性等详细信息,包括登录名称、完整名称、宿主目录、登录Shell 等。例如,查看root 账号的详细信息:

[root@localhost ~]#finger root
Login: root           			Name: root
Directory: /root                    	Shell: /bin/bash
On since 日 88 11:07 (CST) on :0 from :0 (messages off)
On since 日 88 11:07 (CST) on pts/0 from :0
   4 hours 35 minutes idle
On since 日 88 11:10 (CST) on pts/1 from 192.168.24.1
   1 second idle
New mail received 一 726 16:34 2021 (CST)
     Unread since 一 726 12:53 2021 (CST)
No Plan.

4.查询当前主机的用户登录情况——w 、who 、users

  • 使用w命令可以查询当前主机中的用户登陆情况、列出登陆账号名称、所在终端、登陆时间、来源地点等信息,命令输出如下:
[root@localhost ~]#w
 15:45:23 up  4:38,  3 users,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     :0       :0               11:07   ?xdm?  57.65s  0.14s /usr/libexec/gnome-session-bin
root     pts/0    :0               11:07    4:38m  0.03s  0.03s bash
root     pts/1    192.168.24.1     11:10    3.00s  0.31s  0.00s w
  • who、users
[root@localhost ~]#who
root     :0           2021-08-08 11:07 (:0)
root     pts/0        2021-08-08 11:07 (:0)
root     pts/1        2021-08-08 11:10 (192.168.24.1)
[root@localhost ~]#users
root root root

5.查询登录系统的用户信息——last

该命令用来列出目前与过去登录系统的用户相关信息,它的指令所在路径:/usr/bin/last。
执行last指令时,它会读取位于/var/log目录下名称为wtmp的文件,并把该给文件的内容记录的登录系统的用户名单全部显示出来。
默认是显示wtmp的记录,btmp能显示的更详细,可以显示远程登录,例如ssh登录。

  • utmp文件中保存的是当前正在本系统中的用户的信息。

  • wtmp文件中保存的是登录过本系统的用户的信息。

常用选项如下:

格式说明
-a将登录系统的的主机名称或IP地址,显示在最后一行
-d将IP地址转换成主机名称
-f指定记录文件
-i-i显示特定ip登录的情况。跟踪用 -i显示特定ip登录的情况。跟踪用
-oRead an old-type wtmp file (written by linux-libc5 applications).
-n-n <显示行数>或-<显示行数>  设置显示多少行记录
-wDisplay full user and domain names in the output
-R不显示登入系统的主机名称或IP(省略 hostname 的栏位)
-t显示YYYYMMDDHHMMSS之前的信息
-x显示系统关闭、用户登录和退出的历史

案例
显示最后登录系统的10条记录:

[root@localhost ~]#last -10
root     pts/1        192.168.24.1     Sun Aug  8 11:10   still logged in   
root     pts/0        :0               Sun Aug  8 11:07   still logged in   
root     :0           :0               Sun Aug  8 11:07   still logged in   
reboot   system boot  3.10.0-693.el7.x Sun Aug  8 11:06 - 16:01  (04:54)    
root     pts/0        192.168.24.1     Sat Aug  7 08:29 - crash (1+02:37)   
root     :0           :0               Sat Aug  7 08:29 - crash (1+02:37)   
reboot   system boot  3.10.0-693.el7.x Sat Aug  7 08:28 - 16:01 (1+07:32)   
root     pts/0        192.168.24.1     Fri Aug  6 08:56 - 00:42  (15:45)    
root     :0           :0               Fri Aug  6 08:56 - down   (15:46)    
reboot   system boot  3.10.0-693.el7.x Fri Aug  6 08:54 - 00:42  (15:48)    

wtmp begins Sat Jul 24 22:04:23 2021
[root@localhost ~]#

四、管理目录和文件的属性

在Linux 文件系统的安全模型中,为系统中的文件赋予了两种属性:访问权限和文件所有者,简称为“权限”和“归属”。Linux系统根据文件或目录的访问权限、归属来对用户访问数据的过程进行控制。

  • 访问权限包括读取、写入、可执行三种基本类型。
  • 归属包括属主(拥有该文件的用户账号)、属组(拥有该文件的组账号)。

1.查看目录和文件的权限及归属

使用带“-l”选项的ls 命令时,将以长格式显示出文件的详细信息,其中包括了该文件的权限和归属等参数。
例如,列出 /etc/passwd 文件的详细信息:

[root@localhost ~]#ls -l /etc/passwd
-rw-r--r-- 1 root root 2557 88 15:23 /etc/passwd

在上面输出信息中,第3、4个字段的数据表示该文件属主、数组,/etc/passwd 文件属于 root 用户、root 组;而第一个字段的数据表示该文件的访问权限,如“-rw-r–r--”。 权限字段由四部分组成,含义如下:

  • 第 1 个字符:表示该文件的类型,可以是 d(目录)、b(块设备文件)、c(字符设备文件)、“-”(普通文件)、字母“l”(链接文件)等。
  • 第 2~4 个字符:表示该文件的属主用户(User)对该文件的访问权限。
  • 第 5~7 个字符:表示该文件的属组内各成员用户(Group)对该文件的访问权限。
  • 第 8~10 个字符:表示其他任何用户(Other)对该文件的访问权限。

在这里插入图片描述
在表示属主、属组内用户或其他用户对该文件的访问权限时,主要使用了三种不同的权限字符:r、w、x,分别表示可读、可写、可执行,r、w、x 权限字符也可以分别表示为八进制数字4、2、1,表示一个权限组合时需要将数字进行累加。如需要去除对应的权限,则使用“-”表示。

2.设置文件和目录的权限——chmod

命令格式如下:

chmod    [ugoa]    [+=]    [rwx]    文件或目录 

chmod   nnn   文件或目录
  • “ugoa”分别表示属主,属组 ,其他用户,所有用户
  • “ + ” “-” “=”分别表示增加、去除,设置权限
  • “nnn”为需要设置的具体权限值,如“777”等

常用选项:-R 递归修改指定目录下的所有子项的权限

案例
例①,下面操作将mkdir 命令程序复制为mymkdir ,并通过去除mymkdir 文件的“x”权限来验证可执行权限的变化:

[root@localhost ~]#cp /bin/mkdir mymkdir
[root@localhost ~]#ls -l mymkdir 
-rwxr-xr-x 1 root root 79768 88 16:57 mymkdir
[root@localhost ~]#./mymkdir dir01                    #新建文件
[root@localhost ~]#ls -ld dir01/
drwxr-xr-x 2 root root 6 88 16:58 dir01/
[root@localhost ~]#chmod ugo-x mymkdir                #删除所有的“x”权限
[root@localhost ~]#ls -l mymkdir 
-rw-r--r-- 1 root root 79768 88 16:57 mymkdir    #因为“x”权限被去掉,无法执行操作
[root@localhost ~]#./mymkdir dir02
-bash: ./mymkdir: 权限不够

例②,将不同类别的用户对文件的权限设置为不同值时,可以使用逗号隔开;并且我们可以采用数字形式表示权限,这样更便捷:

[root@localhost ~]#chmod u+x,o-r mymkdir 
[root@localhost ~]#ls -l mymkdir 
-rwxr----- 1 root root 79768 88 16:57 mymkdir
[root@localhost ~]#chmod 777 mymkdir 
[root@localhost ~]#ls -l mymkdir 
-rwxrwxrwx 1 root root 79768 88 16:57 mymkdir

3.设置文件和目录的归属——chown

命令格式如下:

chown    属主[:[属组]]   文件或目录
  • 常用选项-R :递归修改指定目录下的所有文件,子目录的归属
  • 同时设置属主、属组时,用户名和组名之间用冒号“:”进行分隔
  • 如果只设置属组时,需要使用“:组名”的形式
  • 如果需要设置目录或文件的属主,直接以用户名表示归属即可。

案例

4.umask应用

umask就是默认指定目前用户在新建文件或目录时的权限默认值

  • 直接执行 “umask” 命令就是查看当前系统的默认权限
  • 执行“umask 022”即可设置当前用户的默认权限
    注意:umask 的分数指的是“该默认值需要减掉的权限”,r、w、x 分别为4、2、1 ,如果执行“umask 022”代表group 和other 被拿掉了权限“2”,也就是被拿掉了“写”的权限。

案例如下:

[root@localhost ~]#umask
0022
[root@localhost ~]#umask 000                        #执行umask 000 代表默认权限是 “777” ,最高权限
[root@localhost ~]#mkdi
mkdict  mkdir   
[root@localhost ~]#mkdir /umask1
[root@localhost ~]#ls -ld /umask1/
drwxrwxrwx 2 root root 6 88 17:29 /umask1/
[root@localhost ~]#umask 022                        #执行umask 022代表默认权限是 “755”,没有“写”的权限
[root@localhost ~]#mkdir /umask2
[root@localhost ~]#ls -ld /umask2/
drwxr-xr-x 2 root root 6 88 17:29 /umask2/

总结

  • Linux操作系统资源可以被不同用户使用,每个用户对自己的资源有特定的权限,互不影响。
  • 我们在使用命令的时候,其实有很多地方是相通的,比如查找命令ls 的选项-R 和设置权限命令 chmod 的选项-R ,都是表示以递归的方式去执行某种操作。所以说,在Linux系统中,没有绝对的方法,解决一个问题是有很多种方案的。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

头发莫的了呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值