RHCE9学习指南 第9章 权限管理

9.1 所有者所属组

为了了解所有者和所属组的概念,我们先看图9-1。
file
图9-1 用房子来帮助理解所有者和所属组
张老板是公司老板,买了一套房作为员工宿舍给A部门的员工居住。张老板是房主,所以他对房子具有很多权限,A部门员工只能具有使用权不能私自装修等,除张老板和A部门员工外,其他所有的人都没有任何权限。
那么,这套房子对三组人设置权限,如表9-1所示。
file
表9-1 了解u、g、o
所有者 所属组 其他人
张老板 A部门员工 其他所有人
u g o
同理,在Linux系统中对文件授权也是通过这样的分组对文件授权,如图9-2所示。
file
图9-2 查看文件所有者和所属组
1的位置是所有者,这里/opt/hosts的所有者是root。
2的位置是所属组,这里/opt/hosts的所属组为root。
如果想改变所有者可以用chown命令来实现,chown的用法如下。

chown user1 file

这句话的意思是把file的所有者改为user1(理解为过户),例如,把/opt/hosts的所有者改为lduan。

[root@server ~]# chown lduan /opt/hosts 
[root@server ~]# ls -l /opt/hosts 
-rw-r--r--. 1 lduan root 158 810 02:21 /opt/hosts
[root@server ~]#

chown也可以用于修改组,用法如下。

chown .group1  file  或者chown :group1  file 

把file的所属组改成group1,这里组前面有个点或冒号。例如,把/opt/hosts的所属组改成users。

[root@server ~]# chown .users /opt/hosts
[root@server ~]# ls -l /opt/hosts 
-rw-r--r--. 1 lduan users 158 810 02:21 /opt/hosts
[root@server ~]#

需要注意的是,这里的点或冒号一定不要忘记了,否则就是修改所有者了。
也可以同时修改所有者和所属组,用法“chown user1.group1 file”,例如,把/opt/hosts的所有者改成root,所属组改成lduan,如下所示。

[root@server ~]# chown root.lduan /opt/hosts 
[root@server ~]# ls -l /opt/hosts 
-rw-r--r--. 1 root lduan 158 810 02:21 /opt/hosts
[root@server ~]# 

创建目录/opt/xx,把/etc/hosts拷贝到/opt/xx中,然后查看/opt/xx和/opt/xx/hosts的权限,如下所示。

[root@server ~]# mkdir /opt/xx
[root@server ~]# cp /etc/hosts /opt/xx
[root@server ~]# ls -ld /opt/xx
drwxr-xr-x. 2 root root 19 810 02:27 /opt/xx
[root@server ~]# ls -l /opt/xx/hosts 
-rw-r--r--. 1 root root 158 810 02:27 /opt/xx/hosts
[root@server ~]#

可以看到,所有者都是root。
现在修改/opt/xx的所有者为lduan,命令如下所示。

[root@server ~]# chown lduan /opt/xx
[root@server ~]# ls -ld /opt/xx/
drwxr-xr-x. 2 lduan root 19 810 02:27 /opt/xx/
[root@server ~]# 
[root@server ~]# ls -l /opt/xx/hosts 
-rw-r--r--. 1 root root 158 810 02:27 /opt/xx/hosts
[root@server ~]# 

可以看到,/opt/xx的所有者变为了lduan,但是/opt/xx中文件hosts的所有者并没有修改,这也就意味着,当修改目录的所有者或所属组时,并不会影响目录中文件东西的属性。如果在改变目录属主/组时,想把里面的东西的属主/组一起改掉,需要加上-R选项(表示递归),如下所示。

[root@server ~]# chown -R lduan /opt/xx/
[root@server ~]# ls -ld /opt/xx/
drwxr-xr-x. 2 lduan root 19 810 02:27 /opt/xx/
[root@server ~]# ls -l /opt/xx/hosts 
-rw-r--r--. 1 lduan root 158 810 02:27 /opt/xx/hosts
[root@server ~]#

这里可以看到,不仅把/opt/xx的属主改了,同时把/opt/xx里面东西的属主也改了。
如果想单独修改所属组,还可以用chgrp,用法如下。

chgrp group1 file

把/opt/hosts的所属组改为users,如下所示。
[root@server ~]# ls -l /opt/hosts

-rw-r--r--. 1 root lduan 158 810 02:21 /opt/hosts
[root@server ~]# chgrp users /opt/hosts
[root@server ~]# ls -l /opt/hosts
-rw-r--r--. 1 root users 158 810 02:21 /opt/hosts
[root@server ~]#

当然chgrp也可以使用-R选项表示递归和chown一样,大家自行练习即可。
再次把/opt/hosts所有者和所属组改为root,如下所示。
[root@server ~]# chown root.root /opt/hosts

[root@server ~]# ls -l /opt/hosts
-rw-r--r--. 1 root root 158 810 02:21 /opt/hosts
[root@server ~]#

9.2 查看及修改权限

对于一个文件来说,我们可以设置某用户对它具有什么操作权限,例如,是否可以看这个文件中的内容,是否可以往这个文件中写等。具有的权限包括3种。
(1)r:读权限。
(2)w:写权限。
(3)x:可执行权限。
R权限和w权限比较好理解,x权限如何理解呢?
对于一个目录dir1来说,如果用户user1对目录dir1有x权限,则user1是可以cd到dir1中的,反之则不能cd进去。
对于文件file1来说,如果用户user1对file1具有x权限,则用户可以把file1当成一个命令来执行,当然运行的结果就要看file1的内容写的是什么了。
在Linux系统中文件或目录的权限 是通过u、g、o授权的,看下面的例子,如下图所示。
file

1是所有者的权限,这里的权限为rw。
2是所属组的权限,这里的权限为r。
3是其他人的权限,这里的权限为r。
查看一下lduan所属组,命令如下。

[root@server ~]# groups lduan
lduan : lduan
[root@server ~]# 

lduan用户只属于lduan组,所以lduan用户对/opt/hosts文件只能使用o的权限,即只读r。

要是想修改权限使用的是chmod命令,用法如下图所示。
file

上面这个用法都是在原有基础上对权限进行增添删减。
设置o不允许读/opt/hosts。

[root@server ~]# chmod o-r /opt/hosts
[root@server ~]# ls -l /opt/hosts
-rw-r-----. 1 root root 158 810 02:21 /opt/hosts
[root@server ~]#

使用lduan用户读取此文件。

[lduan@server ~]$ cat /opt/hosts
cat: /opt/hosts: 权限不够
[lduan@server ~]$

可以看到,lduan用户没有了读取/opt/hosts的权限。
现在把所有者的写权限去掉,同时给o加上读和写权限。

[root@server ~]# ls -l /opt/hosts
-r--r--rw-. 1 root root 158 810 02:21 /opt/hosts
[root@server ~]#

测试lduan是否对此文件可读可写。

[lduan@server ~]$ cat /opt/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
[lduan@server ~]$ echo 111 >> /opt/hosts
[lduan@server ~]$

可以看到,lduan对此文件具备可读和可写权限了。
然后使用root进行写测试。

[root@server ~]# ls -l /opt/hosts
-r--r--rw-. 1 root root 158 810 02:21 /opt/hosts
[root@server ~]# 
[root@server ~]# echo 22 > /opt/hosts 
[root@server ~]# 

从权限来看,root对此文件是只读权限,应该是写不进去的,但是实际却写进去了,这是因为很多时候这些权限设置,对root是不生效的。
刚才对权限的修改使用的是+和-,都是在原有权限的基础上进行增添删减,还可以直接用=,就是把权限设置为=后面的值,不管原来的权限是什么,如下所示。

[root@server ~]# chmod o=r /opt/hosts
[root@server ~]# ls -l /opt/hosts
-r--r--r--. 1 root root 3 810 02:45 /opt/hosts
[root@server ~]#

这里就是直接把o的权限设置为r,不管o原来的权限是什么。

9.3 用数字表示权限

我们还可以用三个数字分别表示u、g、o的权限,规则如下。
(1)r----4。
(2)w—2。
(3)x----1。
再来看前面的图,如下图所示。
file

这里u的权限为 rw,则r=4,w=2,没有x则是0,数字加起来为6,所以用6表示u的权限。对应的g的权限r,用4表示g的权限,o的权限也为4。
查看目录/opt的属性,命令如下。

[root@server ~]# ls -ld /opt/
drwxr-xr-x. 3 root root 29 810 02:27 /opt/
[root@server ~]#

这里u的权限为rwx,对应的数字的和是4+2+1=7。
g的权限为rx,对应数字的和是4+0+1=5。
o的权限为rx,对应数字的和是4+0+1=5。
除给出权限能知道对应的数字外,给出数字也要能知道对应的权限。给出3个数字,要知道第一个数字是u的权限,第二个数字是g的,第三个是o的,然后每个数字用4,2,1进行分解。案例如下所示。
chmod 426 /opt/hosts
此处4是u的权限,4不能再次拆分,对应的权限为r。
2是g的权限,对应的是w权限。
6是o的权限,6=4+2,所以o的权限为r和w。

[root@server ~]# chmod 426 /opt/hosts
[root@server ~]# ls -l /opt/hosts
-r---w-rw-. 1 root root 3 810 02:45 /opt/hosts
[root@server ~]#

使用chmod改变目录权限时,也可以使用-R选项,这样改变目录权限时也会把里面的文件及子目录的权限也改掉。
如果想给一个设置目录/文件权限,让所有人都具备所有权限,可以给此目录/文件的权限设置为777。

9.4 默认权限

先做如下操作,清空/opt中所有的内容,命令如下所示。

[root@server ~]# cd /opt/
[root@server opt]# rm -rf *
[root@server opt]# ls
[root@server opt]#

然后创建2个目录aa和bb,创建两个文件11和22。

[root@server opt]# mkdir aa bb
[root@server opt]# touch 11 22
[root@server opt]# ll
总用量 0
-rw-r--r--. 1 root root 0 810 11:41 11
-rw-r--r--. 1 root root 0 810 11:41 22
drwxr-xr-x. 2 root root 6 810 11:41 aa
drwxr-xr-x. 2 root root 6 810 11:41 bb
[root@server opt]#

可以看到,文件的默认权限都是644,目录默认权限都是755(大家可以自行再多创建几个文件验证),这个默认权限是哪里来的呢?系统中存在一个叫umask的值。

[root@server opt]# umask
0022
[root@server opt]#

这个umask值我们称之为权限过滤符,有4个数字,其中第一个数字0表示八进制,默认权限就是由后面三个值决定的,这里看到的umask默认值是022。
创建文件时最多能具有的权限是666,创建目录时最多具有的权限是777,然后通过umask进行过滤最终得到的权限是默认权限了。
此时有人会得到一个结论,文件的默认权限是666-umask,目录默认的权限是777-umask,这个结论并不完全正确。
先用默认的umask=022来分析,如下图所示。
file

如上图,u的权限不做任何过滤,g和o的权限分别把w给过滤掉,所以文件的权限为644,目录的权限为755。
现在把umas设置为033再次分析,如下图所示。
file

umask要过滤g和o的wx权限,但是创建文件时本身就不带x,所以这里过滤x并没用。对于目录来说则是吧g和o的wx都过滤掉了。
所以,得到的结论如下。
(1)目录的默认权限为=777-umask。
(2)文件的默认权限为=666-(umask每个奇数-1),如umask=333,则目录默认权限=666=222。
相反,如果有需求创建一个文件时要有一个特定的默认权限,得要知道如何设置umask的值,例如,要求创建文件时默认权限为222,umask=666-222=444,所以umask可以设置为444,也可以设置为544、554、455等,只要umask的三个数字中有奇数 减1,最后为444的都可以。

9.5 特殊权限

除具有r、w、x三个权限外,还有s和t权限。

  1. s设置在可执行命令上
    当某可执行命令的所有者的位置上有s位,那么当普通用户再执行这个命令时将具有所有者的权限,如下图所示。
    file
    例如,济公的扇子在济公手中是有法力的,但是这扇子在张三手中就没有了法力,济公如果在扇子上加上一个s位,则张三拿到此扇子将和济公一样,具有了法力。
    我们知道用户的密码都是存放在/etc/shadow中的,而/etc/shadow对其他人来说是没有任何权限的。
[root@server opt]# ls -l /etc/shadow
----------. 1 root root 1340 810 02:03 /etc/shadow
[root@server opt]#

普通用户是可以修改密码的。

[lduan@server ~]$ passwd 
更改用户 lduan 的密码 。
Current password: 
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[lduan@server ~]$

能修改密码,也就意味着/etc/shadow的内容被修改了,这和普通用户没权限修改/etc/shadow相冲突,为什么能改呢?问题在于passwd命令身上,我们来看下此命令的属性。

[root@server opt]# which passwd
/usr/bin/passwd
[root@server opt]# ls -l /usr/bin/passwd 
-rwsr-xr-x. 1 root root 33544 1214 2019 /usr/bin/passwd
[root@server opt]#

先通过which命令查看到passwd的路径,然后使用ls -l查看它的属性,其实这两条命令可以写成一条,如下所示。

[root@server opt]# ls -l $(which passwd)
-rwsr-xr-x. 1 root root 33544 1214 2019 /usr/bin/passwd
[root@server opt]#

这样可以就是把 ( ) 中命令的结果传递给外面的命令使用,此处 ()中命令的结果传递给外面的命令使用,此处 ()中命令的结果传递给外面的命令使用,此处()可以换成反引号``,记住是反引号不是单引号,反引号就是键盘~那个键。
这里可以看到,命令passwd所有者的位置上有s位,root用户用命令passwd可以修改密码即修改/etc/shadow的内容,如下所示。

[root@server opt]# echo haha001 | passwd --stdin lduan
更改用户 lduan 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@server opt]#

那么,普通用户使用passwd命令也就能修改/etc/shadow的内容。
再举个例子,查看/opt/11的权限。

[root@server opt]# touch /opt/11
[root@server opt]# ls -l /opt/11
-rw-r--r--. 1 root root 0 810 11:49 /opt/11
[root@server opt]#

再看一下vim命令的属性。

[root@server opt]# ls -l $(which vim)
-rwxr-xr-x. 1 root root 3063856 63 2020 /usr/bin/vim
[root@server opt]#

这里vim没有s位。
lduan用户对/opt/11只能使用o的权限,即r–,是没有写权限的,请自行用vim打开此文件,然后写入一些数据,然后强制保存,如下图所示,发现是写不进去的。
file

然后给vim命令所有者位置上加上s权限。

[root@server opt]# chmod u+s $(which vim)
[root@server opt]# ls -l $(which vim)
-rwsr-xr-x. 1 root root 3063856 63 2020 /usr/bin/vim
[root@server opt]#

然后再次用lduan用户编辑/opt/11文件,按i进入插入模式,随意写入些内容,如下图所示。
file

虽然这里提示修改的是只读文件,但是强制保存,也是可以写进去的。

[lduan@server ~]$ cat /opt/11
这是一个测试
[lduan@server ~]$

把vim命令所有者位置上的s权限去除,命令如下所示。

[root@server opt]# chmod u-s $(which vim)
[root@server opt]# ls -l $(which vim)
-rwxr-xr-x. 1 root root 3063856 63 2020 /usr/bin/vim
[root@server opt]#

2. s设置在目录的所属组上

如果目录所属组的位置上有s位,则不管是谁在此目录下创建的新文件或目录,都会继承这个目录所属组。
查看目录/opt/aa的属性信息,命令如下所示。

[root@server opt]# ls -ld /opt/aa/
drwxr-xr-x. 2 root root 6 810 11:41 /opt/aa/
[root@server opt]#

把此目录所属组改成users,给g加上s权限,为了测试方便,给o加上w权限这样lduan也可以往此目录中写内容,如下所示。

[root@server opt]# chgrp users /opt/aa/
[root@server opt]# chmod g+s,o+w /opt/aa
[root@server opt]# ls -ld /opt/aa/
drwxr-srwx. 2 root users 6 810 11:41 /opt/aa/
[root@server opt]#

先用root用户在此目录创建一个文件aa.txt,然后查看其属性。

[root@server opt]# touch /opt/aa/aa.txt
[root@server opt]# ls -l /opt/aa/aa.txt
-rw-r--r--. 1 root users 0 810 12:02 /opt/aa/aa.txt
[root@server opt]#

使用lduan用户在此目录中创建bb.txt,然后查看其属性,命令如下。

[lduan@server ~]$ touch /opt/aa/bb.txt
[lduan@server ~]$ ls -l /opt/aa/bb.txt
-rw-rw-r--. 1 lduan users 0 810 12:04 /opt/aa/bb.txt
[lduan@server ~]$ 

可以看到,两个文件所属组都是users,因为他们所在的目录/opt/aa所属组的位置上有s权限,且/opt/aa所属组为users,这样不管谁在/opt/aa中创建新的文件/目录,都会继承/opt/aa所属组。

3. t设置在目录的o位置

如果某个目录o位置上有t位,那么此目录中的文件除所有者和root外,其他用户即使对此文件具有所有权限,也没法删除此文件。
先创建一个用户tom,用作备用,命令如下。

[root@server opt]# useradd tom
[root@server opt]# echo haha001 | passwd --stdin tom
更改用户 tom 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@server opt]# cd
[root@server ~]#

root用户创建一个文件/aa,把权限改为777。

[root@server ~]# chmod 777 /aa
[root@server ~]# ls -ld /aa
drwxrwxrwx. 2 root root 6 810 12:11 /aa
[root@server ~]#

使用lduan用户在/aa中创建一个文件aa.txt,并把权限设置为777。

[lduan@server ~]$ cd /aa
[lduan@server aa]$ touch aa.txt
[lduan@server aa]$ chmod 777 aa.txt
[lduan@server aa]$ ls -l aa.txt 
-rwxrwxrwx. 1 lduan lduan 0 810 12:15 aa.txt
[lduan@server aa]$

这样任何人对/aa/aa.txt都具备所有的权限,包括删除。
再打开一个终端,切换到tom,然后删除/aa/aa.txt,命令如下。

[tom@server ~]$ ls /aa
aa.txt
[tom@server ~]$ rm -rf /aa/aa.txt 
[tom@server ~]$ ls /aa
[tom@server ~]$

可以看到,tom删除了/aa/aa.txt的,因为此文件的权限为777。
使用root用户对/aa的o增加t权限,命令如下。

[root@server ~]# chmod o+t /aa
[root@server ~]# ls -ld /aa
drwxrwxrwt. 2 root root 6 810 12:16 /aa
[root@server ~]# 

然后重复刚才的操作,lduan用户创建/aa/aa.txt,并把权限设置为777。

[lduan@server aa]$ touch aa.txt
[lduan@server aa]$ chmod 777 aa.txt
[lduan@server aa]$ ls -l aa.txt
-rwxrwxrwx. 1 lduan lduan 0 810 12:17 aa.txt
[lduan@server aa]$

然后再次切换到tom进行删除此文件。

[tom@server ~]$ ls -l /aa/aa.txt 
-rwxrwxrwx. 1 lduan lduan 0 810 12:17 /aa/aa.txt
[tom@server ~]$ rm -rf /aa/aa.txt
rm: 无法删除'/aa/aa.txt': 不允许的操作
[tom@server ~]$ 

虽然/aa/aa.txt的权限为777,但是现在tom是删除不掉的,因为/aa目录o位置上有t权限,目录/aa中的东西只有所有者和root才能删除。
前面讲可以数字表示权限,3个数字分别是u、g、o的权限,有时我们可以看到有4个数字,如下图所示。
file
其中后面三个是u、g、o的权限,第一个是数字就是特殊权限了。
(1)4=所有者+s。
(2)2=所属组+s。
(3)1=其他人+t。
练习:

[root@server ~]# chmod 6644 /opt/aa
这里的6就是特殊权限,6=4+2,那么也就是u+s,g+s了.
[root@server ~]# ls -ld /opt/aa
drwSr-Sr--. 2 root users 34 810 12:04 /opt/aa
[root@server ~]#

9.6 隐藏权限

系统中还存在一些隐藏权限,这些权限的设置对root也是生效的,查看隐藏权限的命令是lsattr,如果是查看目录的隐藏权限,需要加上-d选项。

[root@server ~]# lsattr -d /opt/aa/
-------------------- /opt/aa/
[root@server ~]# 

这里不存在任何隐藏权限,修改隐藏权限的命令是chattr命令,常见的隐藏权限包括以下两种。
(1)a:只能增加不能删除。
(2)i:不能增加也不能删除。
增加权限用+,减去权限用-。
为/opt/aa增加a权限,命令如下。

[root@server ~]# chattr +a /opt/aa/
[root@server ~]# lsattr -d /opt/aa/
-----a-------------- /opt/aa/
[root@server ~]#

/opt/aa目录中的内容只能增加,不能删除。

[root@server ~]# cp /etc/hosts /opt/aa
[root@server ~]# ls /opt/aa/
aa.txt  bb.txt  hosts
[root@server ~]# rm -rf /opt/aa/hosts
rm: 无法删除'/opt/aa/hosts': 不允许的操作
[root@server ~]#

删除失败,因为目录/opt/aa中的内容不允许删除,但是里面的文件是可以修改的。

[root@server ~]# echo 1111 > /opt/aa/hosts 
[root@server ~]#

可以看到,修改成功了。
去除a权限,命令如下。

[root@server ~]# chattr -a /opt/aa/
[root@server ~]# lsattr -d /opt/aa/
-------------------- /opt/aa/
[root@server ~]#

为/opt/aa增加i权限,命令如下。

[root@server ~]# chattr +i /opt/aa
[root@server ~]# lsattr -d /opt/aa
----i--------------- /opt/aa
[root@server ~]#

在/opt/aa中写入内容,命令如下。

[root@server ~]# ls /opt/aa/
aa.txt  bb.txt  hosts
[root@server ~]# cp /etc/services /opt/aa/
cp: 无法创建普通文件'/opt/aa/services': 不允许的操作
[root@server ~]#

会发现写不进去,下面删除一个文件,命令如下。

[root@server ~]# rm -rf /opt/aa/hosts 
rm: 无法删除'/opt/aa/hosts': 不允许的操作
[root@server ~]#

文件也删除不掉。
可以查看是否能修改文件内容,命令如下。

[root@server ~]# echo 222 > /opt/aa/hosts 
[root@server ~]# 

也是可以修改的,请自行把/opt/aa/的i权限删除,然后清空/opt中的内容。

[root@server ~]# chattr -i /opt/aa/
[root@server ~]# rm -rf /opt/*
[root@server ~]# ls /opt/
[root@server ~]#

作业

  1. 有一个文件aa.txt,想把其所属组改成bob,请问下面哪个命令可以?
    a. chgrp bob aa.txt
    b. chmod bob aa.txt
    c. chown .bob aa.txt
    d. chown :bob aa.txt

2.下面命令中,哪个命令可以设置所有者和所属组的权限为可读可写,其他人没任何权限?
a. chown 007 filename
b. chmod 077 filename
c. chmod 660 filename
d. chmod 770 filename

3.有一个目录/dir所属组为bob,希望不管谁在/dir下新创建的目录或文件,期所属组均为bob,哪个命令能实现?
a. chmod u+s /dir
b. chmod g-s /dir
c. chmod g+s /dir
d. chmod 1770 /dir

4.现在希望,创建的新的文件默认权限为,
所有者具有所有权限
所属组只具有读权限
其他人没任何权限
请问,umask的值该设置为多少?
a. 740
b. 750
c. 027
d. 047

  1. 下面哪个命令能列出文件myfile的隐藏权限?
    a. ls --attr myfile
    b. getattr myfile
    c. lsattr myfile
    d. listattr myfile

6.存在一个文件/opt/hosts,root用户要删除此文件却得到如下图所示的结果。
file
请你分析原因, 并提出解决方案。

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

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

相关文章

【开源】基于JAVA语言的大学生相亲网站

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示四、核心代码4.1 查询会员4.2 查询相亲大会4.3 新增留言4.4 查询新闻4.5 新增新闻 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的大学生相亲网站,包含了会员管理模块、新闻管…

k8s实战之ELK日志管理

首先查看总体流程 首先创建namespace apiVersion: v1 kind: Namespace metadata:name: kube-logging 一、首先创建es.yaml --- apiVersion: v1 #kubernetes API版本,采用最新版本v1 kind: Service #资源类型定义为Service metadata: name: elasticsearch-logging # …

【JavaScript】FileReader读取文件成功,但存储的数据为空——总结

目录 问题解决 问题 如题&#xff0c;使用下列代码读取上传的文件&#xff1a; for (let i 0; i < files.length; i) {const reader new FileReader();const fileName files[i].name;reader.onload function(e) {file_datas[fileName] e.target.result;}// 根据需要…

SQL server 数据库面试题及答案(实操3)

一、编程题 公司部门表 department 字段名称 数据类型 约束等 字段描述 id int 主键&#xff0c;自增 部门ID name varchar(32) 非空&#xff0c;唯一 部门名称 description varchar(1024) …

第三十六周:文献阅读+注意力/自注意力机制

目录 摘要 Abstract 文献阅读&#xff1a;锂离子电池RUL预测的SA-LSTM 现有问题 提出方法 提出方法的结构 SA-LSTM预测模型的结构 研究实验 研究贡献 注意力机制 Self-Attention&#xff08;自注意力机制&#xff09; 注意力与自注意力 代码实现attention、self-at…

喜报频传!百望云获评“2023数字经济独角兽”称号

“数字经济独角兽”是在数字经济领域具备高成长性、高创新性和高潜力性的企业&#xff0c;他们不仅是数字经济的先锋&#xff0c;是科技创新型企业的典范&#xff0c;也是推动经济发展的新兴引擎。 12月20日&#xff0c;“2023数字经济独角兽大会”在北京大兴区成功举办。大会以…

介绍一个在线K8S练习平台

是不是有很多小伙伴想学习k8s&#xff0c;但是又没有机器去练习。使用自己的笔记本电脑或者主机只能搭建单机版本的k8s来练习。 现在福利来了&#xff0c;给大家介绍一个在线多节点k8s练习平台&#xff1a;Play with Kubernetes。 Play with Kubernetes 介绍 Play with Kube…

南邮最优化期末复习

黄金分割法 单纯形法&#xff08;大M法&#xff09; 求min, σ找最小&#xff0c;终止条件全部大于0 θ找最小&#xff0c;且不能为负数求max, σ找最大&#xff0c;终止条件全部小于0 θ找最小&#xff0c;且不能为负数 例题 二阶段单纯形法想 分支定界法&#xff08;第二章&…

等级保护的物理安全技术措施

目录 信息安全等级保护物理安全技术的控制点 物理位置的选择 物理访问控制 防盗窃和防破坏 防雷击 防火 防火和防潮 防静电 温湿度控制 电力供应 电磁防护 信息安全等级保护物理安全技术的控制点 物理位置的选择 物理访问控制 防盗窃和防破坏 防雷击 防火 防火和防…

【Materials Studio】 Materials Studio 2019 安装教程

【Materials Studio】 Materials Studio 2019 安装教程 软件介绍软件安装安装体验软件获取 软件介绍 Materials studio是一个完整的建模和仿真环境&#xff0c;旨在让材料科学和化学领域的研究人员能够预测和理解材料的原子和分子结构与其特性和行为之间的关系。使用Materials…

Redis数据结构(常用5+4种特殊数据类型)

1、Redis 数据类型以及使用场景分别是什么&#xff1f; Redis 提供了丰富的数据类型&#xff0c;常见的有五种数据类型&#xff1a;String&#xff08;字符串&#xff09;&#xff0c;Hash&#xff08;哈希&#xff09;&#xff0c;List&#xff08;列表&#xff09;&#xff…

【Vue3+TypeScript】快速上手_笔记

前言 1. Vue3简介 2020年9月18日&#xff0c;Vue.js发布版3.0版本&#xff0c;代号&#xff1a;One Piece&#xff08;n 经历了&#xff1a;4800次提交、40个RFC、600次PR、300贡献者 官方发版地址&#xff1a;Release v3.0.0 One Piece vuejs/core 截止2023年10月&#xf…

智能优化算法应用:基于孔雀算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于孔雀算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于孔雀算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.孔雀算法4.实验参数设定5.算法结果6.参考文献7.MA…

Spring系列学习二、Spring框架的环境配置

Spring框架的环境配置 一、Java环境配置二、 Spring框架的安装与配置三、Maven与Gradle环境的配置四、IDE环境配置&#xff08;Eclipse与IntelliJ IDEA&#xff09;五、结语 一、Java环境配置 所有编程旅程总是得从基础开始&#xff0c;如同乐高积木大作的基座&#xff0c;首先…

内存之-LeakCanary

关于作者&#xff1a;CSDN内容合伙人、技术专家&#xff0c; 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 &#xff0c;擅长java后端、移动开发、人工智能等&#xff0c;希望大家多多支持。 目录 一、导读二、概览三、使用四、原理分析4.1 自动初始化4.1.1 初始化…

FPGA分频电路设计(2)

实验要求&#xff1a; 采用 4 个开关以二进制形式设定分频系数&#xff08;0-10&#xff09;&#xff0c;实现对已知信号的分频。 类似实验我之前做过一次&#xff0c;但那次的方法实在是太笨了&#xff1a; 利用VHDL实现一定系数范围内的信号分频电路 需要重做以便将来应对更…

redis—String字符串

目录 前言 1.字符串数据类型 2.常见命令 3.典型应用场景 前言 字符串类型是Redis最基础的数据类型&#xff0c;关于字符串需要特别注意: 1)首先Redis中所有的键的类型都是字符串类型&#xff0c;而且其他几种数据结构也都是在字符串类似基础.上构建的&#xff0c;例如列表…

vue3使用mixins

<template><div>{{ num }}___{{ fav }}</div><button click"favBtn">改变值</button> </template><script setup lang"ts"> import mixin from "../mixins/mixin"; let { num, fav, favBtn } mixin(…

椭球面系列---射线与椭球面的交点

射线与椭球体的交点问题的求解是一个非常常见和经典的问题&#xff0c;本文给出具体的计算原理和矩阵表达的过程&#xff0c;便于编程计算。 见下图&#xff0c;已知射线(点为 p 0 \textbf{p}_0 p0​&#xff0c;单位方向为 d \textbf{d} d)&#xff0c;那么与椭球面的交点 p …

2023-12-22 回溯算法

回溯思想 回溯模版三部曲&#xff1a; ① 回溯函数模版返回值以及参数 ② 回溯终止条件 ③ 回溯搜索的遍历过程 分析完过程&#xff0c;回溯算法模板框架如下&#xff1a; void backtracking(参数) {if (终止条件) {存放结果;return;}for (选择&#xff1a;本层集合中元素&…