【Linux 3】组管理和权限管理

06 Linux 实操篇-组管理和权限管理 在linux中的每个用户必须属于一个组,不能独立于组外。1)所有者2)所在组3)其他组4)改变用户所在的组。 阅读详情

一、文件所有者

查看:ls -ahl

修改文件所有者:chown 用户名 文件名

二、组的创建

创建组:groupadd 组名

创建一个用户tom,并将其放入moster组中

useradd -g monster tom

三、权限的基本介绍

ls -l中显示的内容如下:

-rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc

指令描述
r读read
w写write
x可被执行

0-9位说明

1、第0位确定文件类型(d,-,l,c,b)

指令描述
b表示块设备,比如硬盘
d表示目录,相当于Windows的文件夹
c表示字符设备文件,比如键盘鼠标
l表示链接,相当于Windows的快捷方式
-表示普通文件

2、第1-3位确定所有者的权限

3、第4-6位表示所在组对该文件的权限

4、第7-9位表示其他用户对该文件的权限

四、修改权限

通过chmode指令,可以修改文件或目录的权限

1、+,-,= 变更权限

u:所有者

q:所在组

o:其它人

a: 所有人

chmod u=rwx,g=rx,o=x 文件/目录名

chmod o+w 文件/目录名

chmod a-x 文件/目录名

2、通过数字变更权限

r=4 w=2 x=1  rwx = 4+2+1=7

chmod u=rwx,g=rx,o=x 文件/目录名 相当于 chmod 751文件名

五、修改文件所有者-chown

1、基本介绍

chown newowner 文件/目录名 改变所有者

chown newowner:newgroup 文件/目录名 改变所有者和所在组

-R 如果是目录 则使其下所有子文件或目录递归生效

例如:

(1)请将/home/abc.txt文件的所有者修改为tom

chown tom /home/abc.txt

(2)请将/home下所有文件的所有者修改为tom

chown -R tom /home

六、修改文件/目录所在组-chgrp

-chgrp newgroup 文件/目录  改变所在组

七、最佳实践

警察和土匪游戏

police,bandit

Jack,Jerry:警察

zs,ls:土匪

1、创建组

groupadd police;groupadd bandit

2、创建用户

useradd -g police jack;

useradd -g police jerry;

useradd -g bandit zs;

useradd -g bandit ls;

3、jack创建一个文件,自己可以读写,本组人可以读,其它组没任何权限

vim jack.txt;

chmod u=rwx,g=rx,o=x jack.txt

4、jack修改该文件,让其他组人可以读,本组人可以读写

chmod o=r,g=r jack.txt

5、zs投靠警察,看看是否可以读写

usermod -g police zs

6、测试,看看zs是否可以读写,ls是否可以

 

往期精彩内容:

Java知识体系总结(2021版)

Java多线程基础知识总结

【全栈最全Java框架总结】SSH、SSM、Springboot

超详细的springBoot学习笔记

常见数据结构与算法整理总结

Java设计模式:23种设计模式全面解析

Java面试题总结(附答案)

 

Linux 用户管理、组管理、权限管理 相关命令 目录1. 用户管理1.1 用户基本介绍1.2 添加用户1.3 设置/修改密码1.4 删除用户1.5 查询用户信息1.6 切换用户2. 组管理2.1 组基本介绍2.2 新增组2.3 删除组2.4 新增用户时设置组2.5 修改用户的组3. 文件/目录所有者及所在组管理3.1 查看文件和目录的所有者及所在组3.2 修改文件/目录所有者3.3 修改文件/目录所在组3.4 修改文件/目录的所有者及所在组4. 权限管理4.1 权限的基本介绍4.2 权限的详细解释4.3 修改权限4.3.1 通过 +、-、= 修改权限4. 阅读详情

相关推荐

Qoder + ADB Supabase :5分钟GET超火AI手办生图APP

本文介绍如何利用Qoder、阿里云 ADB Supabase 和通义千问图像编辑模型,快速构建AI手办生图Flutter应用。无需传统后端,通过AI生成代码、BaaS服务与边缘函数调用,实现从原型到上线的敏捷开发,全流程轻量高效,助力Vibe Coding落地实践。

数据库技术 931

Linux目录的权限

模拟环境:test目录的权限为rwxr-xr-xIanA用户(rwx)可读可写可执行:cd到test目录下去,就相当于执行test目录文件了。 读test目录文件。 改名,创建,删除文件,相当于对test目录文件的写操作。 IanB用户(r-x)可读不可写可执行:对于test目录文件,能cd到test目录下(可执行),能ls(可读)。不能创建文件(不可写)。test目录的权限为rw—x–x修改

_今已亭亭如盖矣 1028

雷达系统仿真——非相参累积和相参累积检测

非相参累积和相参累积检测 在雷达回波检测中,在特殊情况下,才会根据单个脉冲来进行检测判决。通常,雷达会从每个目标接收几个到几百个成串脉冲,在做出判决之前,要先对脉冲串进行处理。对脉冲串进行处理的方法有5种: 相参累积(Coherent Integration); 非相参累积(Nocoherent Integration); 二进制累积; 累计检测; 反馈累积器。 1 非相参累积 也叫“检波后累积”,或者“视频累积”(Video Integration),比检波前累积更容易完成,因为不需要保存回波的相位。

little_soldier的专栏 1万+

chown练习

实验题:chown练习 创建组账户vrrp、tomcat 创建用户yaml并设置其基本组为vrrp,创建用户ansible并设置其附加组为tomcat,所有用户设置密码为playbook 创建目录/nfsshare,创建空文件/nfsshare/readme.md 将/nfsshare/redme.md文件所有者修改为yaml,所属组修改为vrrp组 创建目录/nfsshare/permission/deny,创建空文件/nfsshare/permission/deny/already.exist 递归修改

qq_41593779的博客 710

QT与Coin3D实现机器人的仿真

前言 Coin3D编程环境配置好后,开始下一步的机器人仿真任务。本文根据在研5轴机器人,完成三维模型生成与机器人的仿真。主要参考博主冯Jungle的博客,在此表示感谢。 ——2021.05.23 环境 Win10:VS2019、QT5.15.2、Coin3D、SolidWorks2016 机器人三维模型生成 目前广泛应用于因特网的VRML ( Virtual Reality Modeling Language,虚拟现实建模语言)为用户提供一种可参与的、并能对场景中对象主动做出反应的虚拟现实环境,现已成

焦露的博客 6907

Win11系统下Abaqus 2025子程序开发环境一站式配置指南

本文详细介绍了在Win11系统下配置Abaqus 2025子程序开发环境的完整流程,包括VS2022和Intel oneAPI的安装与优化,以及Abaqus 2025的目录规划与环境联调。通过避坑指南和实战案例,帮助用户高效完成开发环境配置,避免常见错误,提升工作效率。

weixin_28717431的博客 333

Linux的组管理和权限管理

Linux组管理和权限管理详解

weixin_56680764的博客 290

智能车图像处理11-进阶篇3--中线累积差值的统计

中线累积差值的统计在后面判断小S,以及长直道的时候都有用到,关键点在于中线的跳变 第12 - 13 行:comulants1 和comlants2代表的是两种不同的累差,取的行数不同 第14-17 行:comulants2取6到25行,其实就是My_Abs(LCenter[i], LCenter[i - 1])的累加 第18-21 行:comulants1去第1到40行 第27- 行: 计算了一下右线的开始于最终结束行,这里判断R_black是否为0,是和中线的提取中g

taiyuezyh的博客 3825

Linux(三)-组管理和权限管理、CROND 任务调度、LINUX 磁盘分区、挂载

最近在学校空闲时间复习及整理Linux基础 加油! 十、组管理和权限管理 10.1 Linux组基本介绍 在linux中的每个用户必须属于一个组,不能独立于组外。 在linux中每个文件有所有者、所在组、其它组的概念。 1)所有者 2)所在组 3)其它组 4)改变用户所在的组 10.2 文件/目录 所有者 一般为文件的创建者,谁创建了该文件,就自然的成为该文件的所有者。 10.2.1 查看文件的所有者 ​ 指令:ls –ahl 应用实例 创建一个组police,在创建一个用户tom将tom放在police,

sss153的博客 623

点云处理实操(四) -PCL中的点云三角化

点云处理实操(四) -PCL中的点云三角化

cangqiongxiaoye的博客 939

ubuntu-emto-cpa 测试和使用(单核运行)

ubuntu-emto-cpa 测试和使用(单核运行)

qq_45834835的博客 1400

Linux:文件权限管理小案例1:警察和土匪游戏

Linux:操作命令小案例:警察和土匪游戏

wo12369874的博客 1882

【芯片设计- RTL 编译与仿真 1.2 -- Visualizer 常用使用命令】

打开波形后,如果想要看到所有信号的数据,可以点击下图中红框中的按钮,因为默认verdi 默认并不是显示所用信号。如果想统计某一个信号中有多少笔数据时,可以使用 Expression->Edege Count 功能。如下图所示,如果没有打开前导0的功能时,当某一笔数据位0时,只会显示1个0。如果需要将波形的数据导出到文本文件时,可以按照下面步骤进行。打开前导0功能之后,会根据数据位宽来显示对应0的个数。

CodingCos的博客 2046

【Linux 3】组管理和权限管理(2)

本书是获得了很多读者好评的Linux经典畅销书**《Linux从入门到精通》的第2版**。本书第﹖版以最新的Ubuntu 12.04为版本,循序渐进地向读者介绍了Linux 的基础应用、系统管理、网络应用、娱乐和办公、程序开发、服务器配置、系统安全等。需要《Linux入门到精通》、《linux系统移植》、《Linux驱动开发入门实战》、《Linux开源网络全栈》电子书籍及教程的工程师朋友们劳烦您转发+评论。chmod u=rwx,g=rx,o=x 文件/目录名 相当于 chmod 751文件名。

2401_83620927的博客 675

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain&#39;s apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath(&#39;DeepLearnToolbox&#39;));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand(&#39;state&#39;,0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W&#39;); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand(&#39;state&#39;,0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = &#39;sigm&#39;;%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, &#39;Too big error&#39;);```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand(&#39;state&#39;,0)sae = saesetup([784 100]);sae.ae{1}.activation_function = &#39;sigm&#39;;sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)&#39;)% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;;nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, &#39;Too big error&#39;);```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x&#39;,28,28,60000))/255;test_x = double(reshape(test_x&#39;,28,28,10000))/255;train_y = double(train_y&#39;);test_y = double(test_y&#39;);%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you&#39;ll get around 1.2% errorrand(&#39;state&#39;,0)cnn.layers = { struct(&#39;type&#39;, &#39;i&#39;) %input layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 6, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %sub sampling layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 12, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, &#39;Too big error&#39;);```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, &#39;Too big error&#39;);%% ex2 neural net with L2 weight decayrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex3 neural net with dropoutrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex4 neural net with sigmoid activation functionrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex5 plotting functionalityrand(&#39;state&#39;,0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = &#39;softmax&#39;; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand(&#39;state&#39;,0)nn = nnsetup([784 20 10]); nn.output = &#39;softmax&#39;; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

【Linux 3】组管理和权限管理(3)

本书是获得了很多读者好评的Linux经典畅销书**《Linux从入门到精通》的第2版**。本书第﹖版以最新的Ubuntu 12.04为版本,循序渐进地向读者介绍了Linux 的基础应用、系统管理、网络应用、娱乐和办公、程序开发、服务器配置、系统安全等。需要《Linux入门到精通》、《linux系统移植》、《Linux驱动开发入门实战》、《Linux开源网络全栈》电子书籍及教程的工程师朋友们劳烦您转发+评论。chmod u=rwx,g=rx,o=x 文件/目录名 相当于 chmod 751文件名。

2401_83620959的博客 588

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

2021-08-02 Linux入门(3)——组管理和权限管理

一、Liunx组的基本介绍 在Linux里面,每个用户都至少属于一个组。 四个概念 :所有者、所在组、其他组,改变用户的组 (1)文件/目录的所有者 一般情况下,谁创建了文件谁就是所有者 查看文件的所有者 ls -ahl 修改文件的所有者 chown 用户名 文件名 (2)组的创建与删除 基本语法 创建组 gruopadd 组名 删除组 groupdel 组名 增加用户时直接加到组 useradd -g 用户组名用户名 修改用户组 usermod -g ...

夏待秋autumn的博客 167

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Linux用户组和权限管理

              Linux用户组和权限管理                                            作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任。 一.Linux的安全模型 1>.安全3A   这并不是Linux特有的概念,在很多领域都有3A的概念,比如思科,微软,华为等设备都有安全的概念。大致归...

weixin_30949361的博客 3120

linux cent6.5切换用户,用户组与权限管理的理解及切换用户相关命令使用

用户认证用户使用账户登入Linux系统时,系统要对该账户进行3A认证,确实账户的身份,进行授权并且进行行为的审计3A: Authentication 认证 Authorization 授权 Accounting/Audition 审计用户及组的分类系统管理员: root 0普通用户: 1-65535系统用户:1-499(centos6) 1-999(centos7)登录用户:500+(ce...

weixin_40007016的博客 285

Linux—实操篇:组管理和权限管理

详解Linux组管理和权限管理,全面指南

怀秋秋意的博客 673

Linux 组管理和权限管理

所有者、所在组、其他组、权限管理

每篇博客都不是最终版,都会随着我的学习更新 1118

Linux【实操篇】—— 组管理、权限管理、定时任务调度

Linux 操作系统组管理、权限管理,定时任务的设置方式,含详细案例。

商务合作 | 共同学习 | 携手共进 9万+

Linux组管理和权限管理

Linux的组管理和权限管理是Linux系统安全性的重要组成部分,它们共同确保了系统中文件和数据的安全访问。

vV_Leon的博客 1296

【Linux】Linux入门实操——用户管理、组管理、权限管理

Linux 系统是一个多任务多用户的操作系统,想要使用系统资源的用户,需要项系统管理员申请一个账号,以这个账号的身份进入系统。

菜鸟的博客 1882

Linux学习笔记之组管理和权限管理

ls -l 查看信息0-9位说明第0位确定文件类型(d,-,l,c,b,p,s)-是普通文件l是链接,相当于Windows的快捷方式d是目录,相当于Windows的文件夹c是字符设备文件,鼠标,键盘b是块设备,比如硬盘p是命令管道(FIFO)s是套接字文件第1-3位确定该文件的所有者拥有该文件的权限 --user第4-6位确定所属组(同用户组的)拥有该文件的权限 --group第7-9位确定其他用户拥有该文件的权限 --other。

dywws的博客 697

Linux-组管理和权限管理

在linux中的每个用户必须属于一个组,不能独立于组外。在linux中每个文件有所有者、所在组、其它组的概念。1)所有者2)所在组3)其它组4)改变用户所在的组0-9位说明1)第0位确定文件类型(d代表目录,-代表普通文件,l代表链接文件,c代表键盘鼠标等字符设备,b代表硬盘等块设备2) 第1-3位确定该文件的所有者拥有该文件的权限(r代表有读的权限,w代表有写的权限,e代表有可执行权限,-代表无权限)。3)第4-6位确定文件所在组的用户拥有该文件的权限。4)第7-9位确定。

weixin_46258873的博客 655
上一篇: linux常用命令
下一篇: 【Linux 4】定时任务调度与进程服务管理
哪 吒
哪 吒 2022年度博客之星TOP 1 2022年度博客之星TOP 1 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄9年 59万+粉丝 2933原创
评论 17
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

哪 吒

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

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

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

打赏作者

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

抵扣说明:

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

余额充值