当前位置: 首页 > 编程日记 > 正文

Linux04-文件系统权限与ACL权限

目录

一、文件系统权限

1.1、认识文件系统权限

1.2、管理文件系统权限

1.3、特殊权限

1.4、默认权限

二、ACL权限

2.1、ACL本质是文件系统的一个挂载选项

2.2、更改文件的ACL权限

2.3、设置文件和目录的默认ACL权限


Linux中的权限管理分为两种类型

  1. 用户自主访问控制(DAC=Discretionary Access Control),包括文件系统权限和ACL权限;
  2. 强制访问控制(MAC=Mandatory Access Control),也就是SELinux;

这篇讨论用户自主访问控制。

一、文件系统权限

1.1、认识文件系统权限

Linux对文件、目录有rwx三种权限,也就是读r、写w、执行x。对文件和目录权限的影响为

权限对文件的影响对目录的影响
r读取可以读取文件的内容。可以列出目录的内容(可以列出文件名,但不能列出其他内容)
w写入可以更改文件的内容。可以创建或删除目录中的任一文件
x执行可以作为命令执行文件。可以访问目录内容(也就是可以cd进去)

用户可以用ls -l命令来列出文件的权限,或者列出目录下所有文件的权限。如果用户想列出目录的权限需要用ls -ld。

[student@server0 ~]$ ll
total 8
drwxrwxr-x. 2 student student 4096 Mar 24 01:13 d1
drwxrwxr-x. 2 student student 4096 Mar 24 01:12 d2
drwxrwxr-x. 2 student student    6 Mar 24 01:04 d3
drwxrwxr-x. 2 student student    6 Mar 24 01:04 d4
drwxrwxr-x. 2 student student    6 Mar 24 01:04 d5
[student@server0 ~]$ ls -l 1
ls: cannot access 1: No such file or directory
[student@server0 ~]$ ls -l d1
total 0
-rw-rw-r--. 1 student student 0 Mar 24 01:05 file_TXT_10.txt
-rw-rw-r--. 1 student student 0 Mar 24 01:05 file_TXT_1.txt
-rw-rw-r--. 1 student student 0 Mar 24 01:05 file_TXT_2.txt
-rw-rw-r--. 1 student student 0 Mar 24 01:05 file_TXT_3.txt
-rw-rw-r--. 1 student student 0 Mar 24 01:05 file_TXT_4.txt
-rw-rw-r--. 1 student student 0 Mar 24 01:05 file_TXT_5.txt
-rw-rw-r--. 1 student student 0 Mar 24 01:05 file_TXT_6.txt
-rw-rw-r--. 1 student student 0 Mar 24 01:05 file_TXT_7.txt
-rw-rw-r--. 1 student student 0 Mar 24 01:05 file_TXT_8.txt
-rw-rw-r--. 1 student student 0 Mar 24 01:05 file_TXT_9.txt
-rw-rw-r--. 1 student student 0 Mar 24 01:13 TTT
[student@server0 ~]$ ls -dl d1
drwxrwxr-x. 2 student student 4096 Mar 24 01:13 d1

我们看到每个文件、目录列出的权限都由基本部分构成。从左到右依次是:10个字符代表的文件系统UGO权限、软链接数、属于哪个用户、属于哪个组、大小、最后修改日期时间、文件名。

10个字符里面第1个字符是文件的类型,常见的有-普通文件、d目录、l符号链接、b块设备(硬件)、c字符设备(硬件)等,具体的后面的博客再讨论。第2到第10个字符分成三组UGO,每组都是rwx权限。U=User是文件所属用户的权限、G=Group是文件所属组下用户的权限、O=Others其他用户的权限。比如,/d1和/d2是属于user1用户、user3组的,但是读写权限有区别。

d5所属用户是user1,但是没有任何权限。user1也不能操作d5目录。

user3对d1目录可以cd进去,创建文件;对d2目录只能cd进去,不能创建文件,因为没有写权限;对d3不能cd进去,但是可以列出d3目录下的文件名。

[root@server0 d3]# ll -d /d?
drwxrwx---. 2 user1 user3 4096 Jun 21 10:10 /d1
drwxr-x---. 2 user1 user3 4096 Mar 24 01:12 /d2
drwxr-----. 2 user1 user3   71 Jun 21 10:11 /d3
drwx------. 2 user1 user3    6 Jun 21 10:08 /d4
d---------. 2 user1 user3    6 Jun 21 10:09 /d5
[root@server0 d3]#
[root@server0 d3]# su - user1
Last login: Sun Jun 21 10:10:00 CST 2020 on pts/0
[user1@server0 ~]$ cd /d5
-bash: cd: /d5: Permission denied
[user1@server0 ~]$ ll /d5
ls: cannot open directory /d5: Permission denied
[user1@server0 ~]$
[user1@server0 ~]$
[user1@server0 ~]$ exit
logout
[root@server0 d3]# su - user3
Last login: Sun Jun 21 10:10:17 CST 2020 on pts/0
[user3@server0 ~]$ cd /d1
[user3@server0 d1]$ touch user3_{1..5}
[user3@server0 d1]$
[user3@server0 d1]$ cd /d2
[user3@server0 d2]$ touch user3_{1..5}
touch: cannot touch ‘user3_1’: Permission denied
touch: cannot touch ‘user3_2’: Permission denied
touch: cannot touch ‘user3_3’: Permission denied
touch: cannot touch ‘user3_4’: Permission denied
touch: cannot touch ‘user3_5’: Permission denied
[user3@server0 d2]$
[user3@server0 d2]$ cd /d3
-bash: cd: /d3: Permission denied
[user3@server0 d2]$ ll /d3
ls: cannot access /d3/test_1: Permission denied
ls: cannot access /d3/test_5: Permission denied
ls: cannot access /d3/test_2: Permission denied
ls: cannot access /d3/test_3: Permission denied
ls: cannot access /d3/test_4: Permission denied
total 0
?????????? ? ? ? ?            ? test_1
?????????? ? ? ? ?            ? test_2
?????????? ? ? ? ?            ? test_3
?????????? ? ? ? ?            ? test_4
?????????? ? ? ? ?            ? test_5

1.2、管理文件系统权限

更改文件、目录的权限,命令为chmod,意思是Change Mode更改模式。使用chmod的方式有两种:符号关键字、数值法。

符号关键字就是 chmod WhoWhatWhich file|dir,其中Who就是u、g、o、a(代表文件或目录的所属用户、所属组、其他、全部),What就是+、-、=(代表增加、删除、精确设置),Which就是r、w、x(代表读、写、执行)。比如 chmod  u+r,g-w,o+x。

数值法就是chmod ### file|dir,每个数值代表一个访问级别u、g、o,#是r=4、w=2、x=1。

644:   rw-   r--  r--

700:   rwx   ---  ---

比如chmod 755   chmod 644。

注意,chmod -R以递归方式对整个目录中的文件设置权限。在使用-R选项时,使用大写的X以符号形式设置权限不会改写文件的执行权限,已经有执行权限的还有执行权限,没有执行权限的也不会添加执行权限。这会非常有用,非常安全。

[root@server0 ~]# ll
total 12
-rw-------. 1 root root 8619 May  7  2014 anaconda-ks.cfg
drwx------. 2 root root   34 Jun 21 10:31 demodir
[root@server0 ~]# ll demodir/
total 4
-rw-r--r--. 1 root root 119 Jun 21 10:30 hello.c
-rwxr--r--. 1 root root   0 Jun 21 10:31 test.sh
[root@server0 ~]#
[root@server0 ~]# chmod -R g+rwX demodir/
[root@server0 ~]#
[root@server0 ~]# ll
total 12
-rw-------. 1 root root 8619 May  7  2014 anaconda-ks.cfg
drwxrwx---. 2 root root   34 Jun 21 10:31 demodir
[root@server0 ~]# ll demodir/
total 4
-rw-rw-r--. 1 root root 119 Jun 21 10:30 hello.c
-rwxrwxr--. 1 root root   0 Jun 21 10:31 test.sh

更改文件、目录的用户或组所有权。用命令chown。

[root@server0 ~]# ll demodir/
total 4
-rw-rw-r--. 1 root root 119 Jun 21 10:30 hello.c
-rwxrwxr--. 1 root root   0 Jun 21 10:31 test.sh
[root@server0 ~]# cd demodir/
[root@server0 demodir]# chown user1: hello.c
[root@server0 demodir]# chown user1:user3 test.sh
[root@server0 demodir]# ll
total 4
-rw-rw-r--. 1 user1 user1 119 Jun 21 10:30 hello.c
-rwxrwxr--. 1 user1 user3   0 Jun 21 10:31 test.sh

1.3、特殊权限

文件系统权限中有三个特殊的权限:suid、sgid、sticky(粘滞位)。特殊权限对文件和目录的影响如下。

特殊权限对文件的影响对目录的影响
u+s(suid)以拥有文件的用户身份,而不是以运行文件的用户身份执行文件。无影响。
g+s(sgid)以拥有文件的组身份执行文件。在目录中最新创建的文件将其组所有者设置为与目录的所有者相匹配。
o+t(sticky)无影响。对目录具有write权限的用户可以删除其所拥有的文件,而无法删除或强制保存到其他用户所拥有的文件。

设置特殊权限用符号表示u+s、g+s、o+t。用数值表示第四位suid=4、sgid=2、sticky=1,比如chmod 2770中的2就是设置了sgid。

对于suid我们以passwd命令为例,可以看到passwd命令设置了suid,虽然任何用户都可以执行,但是都是以root的身份执行的。

对于sgid还没找到什么好的例子。

对于sticky我们以/tmp目录为例,出了root和文件的所属用户可以删除/tmp下的文件以外,其他用户不能删除/tmp下的文件。

[root@server0 ~]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 Jan 30  2014 /usr/bin/passwd
[root@server0 ~]# ll -d /tmp/
drwxrwxrwt. 9 root root 4096 Jun 21 11:19 /tmp/

举个例子,mkdir /data/etc    ------->  createfile  (cp  /bin/touch  /data/etc/cf)。所有创建文件的任务都用cf来完成。要求 student能在这个目录下创建文件,创建出来的文件的用户和组必须是student:student,root 用户使用cf也只能在这个目录下创建文件,创建出来的文件的权限也必须是student:student。

[root@server0 etc]# mkdir -p /data/etc
[root@server0 etc]# cp /bin/touch /data/etc/cf
[root@server0 etc]# chown student:student /data/etc/
[root@server0 etc]# chmod g+s /data/etc/
[root@server0 etc]# chown student:student /data/etc/cf
[root@server0 etc]# chmod u+s /data/etc/cf
[root@server0 etc]# cd /data/etc/
[root@server0 etc]# ll
total 64
-rwsr-xr-x. 1 student student 62432 Jun 21 11:35 cf
[root@server0 etc]# ./cf file
[root@server0 etc]# ll
total 64
-rwsr-xr-x. 1 student student 62432 Jun 21 11:35 cf
-rw-r--r--. 1 student student     0 Jun 21 11:36 file

1.4、默认权限

创建文件、目录时,文件、目录会有一个默认的文件系统权限,这个权限是由umask的值来确定的。对于root,umask的值是0022。对于普通用户,umask的值是0002。

目录的权限是777-umask,文件的权限是777-umask再去掉所有的执行权限。因此

root创建目录的默认权限是:777-022 = 755 rwx r-x r-x  ------> root创建文件的默认权限是 rw-  r-- r-- 644。

普通用户创建目录的默认权限是:777-002 = 775 rwx rwx r-x    ----->普通用户创建文件的默认权限是rw- rw- r--  664。

umask的值在/etc/profile和/etc/bashrc文件中定义,用户可以在自己的.bash_profile和.bashrc中覆盖默认值。

二、ACL权限

2.1、ACL本质是文件系统的一个挂载选项

文件系统的Access Control List访问控制列表。ACL的本质是文件系统的一个挂载选项,可以选择是否在文件系统加载这个选项。

xfs文件系统默认已经启用ACL。
CentOS/RHEL7上ext4文件系统默认启用了ACL。
CentOS/RHEL6以前ext4文件系统默认不支持ACL,需要自己添加这个选项。有两种方法

  1. 在/etc/fstab文件中指定挂载选项 defaults,acl
  2. 使用命令 tune2fs -o acl /dev/sdb1

2.2、更改文件的ACL权限

添加或修改ACL
setfacl -m u:name:rwX file
setfacl -m g:name:rwX file
setfacl -m o::- file
setfacl -m u::rwx,g:sodor:rX,o::- file
设置ACL掩码
setfacl -m m::r file

举例
我们创建一个文件fileA。
当设置了acl权限以后,ls显示权限的时候,会看到10位权限的最后加上了加号“+”。
getfacl可以看到fileA属于root:root,但acl表示student也可以读写fileA。
再设置一个acl掩码,那么student就只能读fileA。

[root@server0 ~]# echo aclp > /tmp/fileA
[root@server0 ~]# ll /tmp/fileA
-rw-r--r--. 1 root root 5 Mar 27 11:17 /tmp/fileA[root@server0 ~]# setfacl -m u:student:rwX,g::rX,o::- /tmp/fileA
[root@server0 ~]# ll /tmp/fileA
-rw-rw----+ 1 root root 5 Mar 27 11:17 /tmp/fileA
[root@server0 ~]# getfacl /tmp/fileA
getfacl: Removing leading '/' from absolute path names
# file: tmp/fileA
# owner: root
# group: root
user::rw-
user:student:rw-
group::r--
mask::rw-
other::---[root@server0 ~]# setfacl -m m::r-- /tmp/fileA
[root@server0 ~]# getfacl /tmp/fileA
getfacl: Removing leading '/' from absolute path names
# file: tmp/fileA
# owner: root
# group: root
user::rw-
user:student:rw-		#effective:r--
group::r--
mask::r--
other::---

使用getfacl作为输入,让一个文件拥有和另一个文件一样的ACL权限。注意短划线“-”指定了stdin的使用。
getfacl fileA | setfacl --set-file=- fileB

[root@server0 ~]# echo aclpb > /tmp/fileB
[root@server0 ~]# ll /tmp/fileB
-rw-r--r--. 1 root root 6 Mar 27 11:27 /tmp/fileB[root@server0 ~]# getfacl /tmp/fileA | setfacl --set-file=- /tmp/fileB
getfacl: Removing leading '/' from absolute path names[root@server0 ~]# getfacl /tmp/fileB
getfacl: Removing leading '/' from absolute path names
# file: tmp/fileB
# owner: root
# group: root
user::rw-
user:student:rw-		#effective:r--
group::r--
mask::r--
other::---

注意设置递归方式将ACL应用于目录时,使用-R选项。
大写的X权限以递归方式使用,如果原来有执行权限x的文件保留该执行权限,目录会设置执行权限x以允许访问该目录。
非递归方式设置ACL时,最好也使用大写的X,因为可以防止意外添加执行权限。

举例目录/tmp/dir下有file1、file2。递归设置其ACL权限,注意X和x的区别。

[root@server0 ~]# mkdir /tmp/dir
[root@server0 ~]# touch /tmp/dir/file{1,2}
[root@server0 ~]# ll /tmp/dir/
total 0
-rw-r--r--. 1 root root 0 Mar 27 11:30 file1
-rw-r--r--. 1 root root 0 Mar 27 11:30 file2[root@server0 ~]# setfacl -R -m u:student:rwX /tmp/dir/
[root@server0 ~]# getfacl /tmp/dir/
getfacl: Removing leading '/' from absolute path names
# file: tmp/dir/
# owner: root
# group: root
user::rwx
user:student:rwx
group::r-x
mask::rwx
other::r-x[root@server0 ~]# getfacl /tmp/dir/file1
getfacl: Removing leading '/' from absolute path names
# file: tmp/dir/file1
# owner: root
# group: root
user::rw-
user:student:rw-
group::r--
mask::rw-
other::r--[root@server0 ~]# getfacl /tmp/dir/file2
getfacl: Removing leading '/' from absolute path names
# file: tmp/dir/file2
# owner: root
# group: root
user::rw-
user:student:rw-
group::r--
mask::rw-
other::r--[root@server0 ~]# setfacl -m u:student:rwx /tmp/dir/file2
[root@server0 ~]# getfacl /tmp/dir/file2
getfacl: Removing leading '/' from absolute path names
# file: tmp/dir/file2
# owner: root
# group: root
user::rw-
user:student:rwx
group::r--
mask::rwx
other::r--

删除ACL权限

删除指定用户、组的ACL,使用setfacl -x选项。

[root@server0 ~]# setfacl -x u:student /tmp/fileA[root@server0 ~]# ll /tmp/file*
-rw-r-----+ 1 root root 5 Mar 27 11:17 /tmp/fileA
-rw-r-----+ 1 root root 6 Mar 27 11:27 /tmp/fileB[root@server0 ~]# getfacl /tmp/fileA
getfacl: Removing leading '/' from absolute path names
# file: tmp/fileA
# owner: root
# group: root
user::rw-
group::r--
mask::r--
other::---

删除全部ACL(包括默认ACL),使用setfacl -b选项。

[root@server0 ~]# ll /tmp/file*
-rw-r-----+ 1 root root 5 Mar 27 11:17 /tmp/fileA
-rw-r-----+ 1 root root 6 Mar 27 11:27 /tmp/fileB[root@server0 ~]# setfacl -b /tmp/fileA
[root@server0 ~]# ll /tmp/file*
-rw-r-----. 1 root root 5 Mar 27 11:17 /tmp/fileA
-rw-r-----+ 1 root root 6 Mar 27 11:27 /tmp/fileB[root@server0 ~]# setfacl -R -b /tmp/dir/
[root@server0 ~]# ll /tmp/dir/
total 0
-rw-r--r--. 1 root root 0 Mar 27 11:30 file1
-rw-r--r--. 1 root root 0 Mar 27 11:30 file2[root@server0 ~]# getfacl /tmp/dir/file*
getfacl: Removing leading '/' from absolute path names
# file: tmp/dir/file1
# owner: root
# group: root
user::rw-
group::r--
other::r--# file: tmp/dir/file2
# owner: root
# group: root
user::rw-
group::r--
other::r--

2.3、设置文件和目录的默认ACL权限

目录可以设置默认的ACL权限,这些ACL会被子目录和文件自动继承(包括ACL掩码)。setfacl -m d:u:name:rx /tmp/dir。

[root@server0 ~]# setfacl -m d:u::-,d:u:student:rx /tmp/dir/
[root@server0 ~]# getfacl /tmp/dir/
getfacl: Removing leading '/' from absolute path names
# file: tmp/dir/
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
default:user::---
default:user:student:r-x
default:group::r-x
default:mask::r-x
default:other::r-x[root@server0 ~]# echo 123 > /tmp/dir/file4
[root@server0 ~]# getfacl /tmp/dir/file4
getfacl: Removing leading '/' from absolute path names
# file: tmp/dir/file4
# owner: root
# group: root
user::---
user:student:r-x		#effective:r--
group::r-x			#effective:r--
mask::r--
other::r--

要删除目录某个用户、组的默认ACL,使用setfacl -x d:u:name <dir>选项。
要删除目录的所有默认ACL,使用setfacl -k <dir>选项。
要删除目录的所有ACL,使用setfacl -b <dir>选项。
注意区别

[root@server0 ~]# setfacl -k /tmp/dir/
[root@server0 ~]# getfacl /tmp/dir/
getfacl: Removing leading '/' from absolute path names
# file: tmp/dir/
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

相关文章:

ORB_SLAM2帧Frame

在追踪线程的一开始就会创建一个帧 cv::Mat Tracking::GrabImageMonocular(const cv::Mat &im,const double &timestamp)构造函数 在构造函数中&#xff0c;会对特征点进行提取。 ExtractORB(0,imGray);特征点分配至网格 将图像划分为48*64的网格&#xff0c;然后将…

Servlet的基本架构

Servlet的基本架构&#xff1a; package test;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class Serv…

ORACLE 用户权限管理

Oracle创建用户的语法&#xff1a; CREATE USER username IDENTIFIED BY password OR IDENTIFIED EXETERNALLY OR IDENTIFIED GLOBALLY AS CNuser [DEFAULT TABLESPACE tablespace] [TEMPORARY TABLESPACE temptablespace] [QUOTA [integer K[M] ] [UNLIMITED] ] ON tables…

iOS 直播专题6-流媒体服务器

常用的流媒体服务器有: nginx、SRS、BMS 这里主要介绍nginx、SRS 这里都用docker来运行流媒体服务器 docker 安装 下载Mac版docker stable 直接安装 注册一个docer账号直接登录SRS 安装 SRS guthub地址:https://github.com/ossrs/srs/ 启动上面安装的docker软件后,打开终端…

Linux05-进程管理

目录 一、进程 1.1、进程ID 1.2、列出进程 1.3、进程前后台 二、使用信号控制进程 三、以管理员身份注销用户&#xff08;踢掉在线用户&#xff09; 四、监控进程活动 4.1、负载平均值 4.2、实时进程监控 进程是已启动的可执行程序的运行中的实力。它由以下部分组成&a…

Mat常用赋值方式

参考https://blog.csdn.net/wanggao_1990/article/details/53264753 #include <iostream> #include <opencv2/opencv.hpp> #include <unordered_map> using namespace std; using namespace cv; int main(int argc,char** argv) {// 1Mat mat (Mat_<flo…

java modbus协议

概念 Modbus是一种串行通信协议&#xff0c;Modbus协议目前存在用于串口、以太网以及其他支持互联网协议的网络的版本。 大多数Modbus设备通信通过串口EIA-485物理层进行。 通讯格式 地址域功能码数据CRC校验(低字节在前)1字节1字节N字节2字节 在单片机硬件通讯串口行业&…

layui栅格布局问题

在使用layer.open弹出到窗口中&#xff0c;使用布局一直不起作用。 开始到写法如下, 目的是一行分成左右两块&#xff0c;比例为8:4等分。 <div class"layui-fluid"><div class"layui-row layui-col-space10"><div class"layui-col-md…

Unity3d载入外部图片文件

unity里的图片在生成时会压缩成资源文件&#xff0c;有时客户想自己放一些图片用unity显示&#xff0c;就必须载入外部图片。 大体思路&#xff1a;用Application.streamingAssetsPath或Application.dataPath来指定存放图片的相对路径。用DirectoryInfo获得目录。遍历后FileInf…

Linux06-服务、守护进程和systemd

目录 一、简介systemd 二、使用systemd 2.1、systemctl命令与systemd单元 2.2、控制系统服务 一、简介systemd RHEL6及以前&#xff0c;系统启动和服务器进程是由第一个进程 init 管理&#xff0c;init按顺序启动、启动慢。 RHEL7以后系统启动和服务器进程由 systemd系统和…

ORB_SLAM2回环检测

词典是特征点的描述子的集合&#xff0c;属于同一类特征的特征点的描述子组成单词。 在局部建图线程中&#xff0c;处理完一个关键帧后&#xff0c;会将其放入回环检测线程     在使用关键帧数据库搜索候选关键帧组&#xff08;DetectLoopCandidates&#xff09;的时候&…

nginx 启动 + uwsgi + django

https://www.cnblogs.com/chenice/p/6921727.html https://blog.csdn.net/Aaroun/article/details/78218131转载于:https://www.cnblogs.com/pythonClub/p/9746866.html

poj1741(树的点分治)

题目连接&#xff1a;POJ - 1741 看了好长时间才明白了点...... 网上讲解很多但感觉都不够详细。。。大概是太弱了吧-_-|| 学通了再回来写详解。。。 1 #include<iostream>2 #include<cstring>3 #include<cstdio>4 #include<algorithm>5 #define LL lo…

Android 串口通讯

概念 串行接口简称串口&#xff0c;也称串行通信接口或串行通讯接口&#xff08;通常指COM接口&#xff09;&#xff0c;是采用串行通信方式的扩展接口。串行接口&#xff08;Serial Interface&#xff09;是指数据一位一位地顺序传送。其特点是通信线路简单&#xff0c;只要一…

Linux07-OpenSSH

目录 一、使用SSH访问远程主机 1.1、什么是OpenSSH Secure Shell&#xff08;SSH&#xff09; 1.2、SSH主机密钥 二、配置基于SSH密钥的身份验证 2.1、基于SSH密钥的身份验证 2.2、自定义SSH服务配置 2.3、sftp传输文件 一、使用SSH访问远程主机 1.1、什么是OpenSSH Se…

ORB_SLAM2中的Sim3变换

对于双目、RGB-D相机&#xff0c;可获得深度&#xff0c;因此不存在尺度问题&#xff0c;因此Sim3中的尺度s1。 &#xff08;1&#xff09;通过词袋加速算法实现当前帧、闭环帧的特征点的匹配&#xff0c;建立闭环帧的路标点和当前帧的特征点间的联系。 &#xff08;2&#xff…

Ubuntu16.04 下的网易云出现网络异常、无法播放,界面无响应问题的统一解决

能够在Linux系统下体验到原生界面的网易云音乐是件不错的事情&#xff0c;但是它总是经常性的出现网络异常&#xff0c;界面无响应的问题 为了听歌的体验&#xff0c;进行深入探究&#xff1a; 首先通过终端启用网易云音乐&#xff1a;sudo netease-cloud-music 会得到网易云音…

SpringBoot 概念和起步

一、概念和由来 1、什么是 Spring Boot Spring Boot 的设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用特定方式来进行配置&#xff0c;从而使开发人员不再需要定义样板化的配置。 Spring Boot 其实不是什么新的框架&#xff0c;它默认配置了很多框架的使用…

WKWebView Safari调试、JS互调、加载进度条、JS中alert、confirm、prompt

主要内容 Safari调试swift/OC与JS互调增加加载进度条支持JS中alert、confirm、prompt Safari调试 设置 —> safari --> 高级&#xff0c;开启JavaScript、网页检查器 打开Safari浏览器&#xff0c;选择调试的网页,同样在js里面可以断点调试: swift/OC与JS互调 这里…

CentOS7 打包RPM 升级OpenSSH8.3

目录 一、源码包 二、打包RPM 2.1、准备阶段 2.2、打包排错阶段 三、升级 漏扫设备发现OpenSSH有漏洞&#xff0c;需要升级到OpenSSH 8.1及以上版本&#xff0c;那么干脆就直接升级到发文时最新的版本&#xff0c;OpenSSH 8.3。做法是找到OpenSSH 8.3的源码包&#xff0c;…

步步为营-44-窗体之间传值--观察者模式

说明 :观察者模式又叫发布-订阅模式,其中又涉及到中介者模式 1 结构 2 创建Main窗体(中介者),ChildForm1(发布者),ChildForm2(订阅者),ChildForm3(订阅者), 2.1 ChildForm1中添加按钮,当按钮被点击是ChildForm2(订阅者),ChildForm3(订阅者),的文本框汇中获取信息 2.2 定义接口 …

java指令详解

Java是通过java虚拟机来装载和执行编译文件&#xff08;class文件&#xff09;的&#xff0c;java虚拟机通过命令java option 来启动&#xff0c;-option为虚拟机参数&#xff0c;通过这些参数可对虚拟机的运行状态进行调整. 一、如何查看参数列表: 虚拟机参数分为基本和扩展两…

wrs-arcface虹软人脸识别

前言 虹软人脸识别组件&#xff0c;支持活体识别、离线识别、图片人脸特征识别、图片是否同一人对比、相机人脸识别或对比,虹软免费版请使https://ext.dcloud.net.cn/plugin?id6084 功能 支持活体识别、离线识别图片人脸特征识别(年龄、性别、3DAngle)两张图片是否是同一人…

C++指针与引用的区别

&#xff08;1&#xff09;指针是一个变量&#xff0c;本身占有内存&#xff0c;内存中存储的是所指向对象的地址。引用是内存的别名。 &#xff08;2&#xff09;指针可以通过解引用的方式&#xff0c;取出所指向内存中的值。引用没有解引用。 &#xff08;3&#xff09;指针可…

Linux08-日志

目录 一、systemd的日志 1.1、sytemd-journald与systemd日志 1.2、systemd日志的持久化 二、系统常规日志 2.1、系统日志概述 2.2、查看系统日志文件 2.3、日志的轮转 2.4、分析系统日志 2.5、使用logger发送消息到日志 RHEL7的日志由2个服务负责记录&#xff0c;分别…

Java的小实验——各种测试以及说明

日期&#xff1a;2018.10.07 星期五 博客期&#xff1a;014 一、Java中的位运算 代码如下&#xff1a; 1 package Morts107;2 3 public class Test107 {4 public static void main(String[] args) {5 int z;6 z 13>>1;//00001101(13)---------------…

C++内存的分区

C内存分为四个区&#xff1a; &#xff08;1&#xff09;代码区&#xff1a;存放代码转译成的二进制代码。 &#xff08;2&#xff09;全局区&#xff1a;存放全局变量、静态变量&#xff08;static&#xff09;、常量&#xff08;如字符串常量&#xff09;。 全局区中还包含一…

SpringCloud的服务网关zuul

演示如何使用api网关屏蔽各服务来源 一、概念和定义 1、zuul最终还是使用Ribbon的&#xff0c;顺便测试一下Hystrix断路保护2、zuul也是一个EurekaClient&#xff0c;访问服务注册中心&#xff0c;获取元数据&#xff0c;使用本地的Ribbon负载均衡&#xff0c;Hystrix断路保护&…

wrs-tuya-cloud

前言 wrs-tuya-cloud是涂鸦官网针对云开发的插件&#xff0c;包含垂直品类硬件API(万能红外开放能力、设备连接服务、设备OTA固件升级、实时音视频、睡眠带开放能力、体脂秤开放能力、智能门锁开放能力、视频云存储 、邮件服务 、 语音消息服务、消息推送服务、短信服务 、内测…

Windows Server 2016 笔记

从业界普遍实践结果来看&#xff0c;Windows Server在服务器领域真是不太好用。但是&#xff0c;有些时候由于种种原因不得不用&#xff0c;所以还是有必要了解一下的。今天参加了一个Windows Server的培训&#xff0c;主要面对Windows Server 2016&#xff0c;写下这篇博客备忘…