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

Linux03-本地账户和组

目录

一、本地账户/etc/passwd

二、本地组/etc/group

三、切换账户su -

四、增删改本地账户useradd、userdel、usermod

五、账户默认配置文件/etc/login.defs

六、设置密码passwd(5)命令

七、增删改组groupadd、groupdel和groupmod

八、通过sudo以root身份运行命令

九、管理用户密码/etc/shadow


管理账户和组的文件有4个:

  1. /etc/passwd    存储本地账户信息
  2. /etc/shadow    存储密码   存储账户和密码的属性  账户要激活,就要设置密码
  3. /etc/group      账户组信息 主要记录附加组
  4. /etc/login.defs     创建账户的时候会去读取的模板

一、本地账户/etc/passwd

Linux系统中每个进程(运行程序)都作为一个特定账户运行。每个文件归一个特定账户所有。对文件和目录的访问收到账户的限制。与运行进程相关联的账户可确定该进程可访问的文件和目录。id命令用于显示账户信息。

[root@server0 ~]# id student
uid=1000(student) gid=1000(student) groups=1000(student),10(wheel)

每个账户有一个id号也就是uid来作为账户的唯一标识,系统用/etc/passwd文件来存储有关本地账户的信息。用冒号分隔7列信息。

username:password:uid:gid:gecos:home_dir:shell

  • username是账户名,是uid到名称的一种映射,方便用户使用;
  • password,以前用来放加密存储的密码,现在没啥用了,加密的密码存在/etc/shadow;
  • uid是账户id;
  • gid是账户主要组的id;
  • gecos是账户的真实姓名;
  • home_dir是账户的家目录;
  • shell是账户的登录shell;
[root@server0 ~]# head -n 5 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

二、本地组/etc/group

与用户一样,组也有名称和编号gid。系统用/etc/group文件来存储本地组信息。用冒号分隔4列信息。

groupname:password:gid:list,of,users,in,this,group

  • groupname组名,是gid到名称的一种映射,方便用户使用;
  • password组密码,不常用;
  • gid是组的id;
  • list,of,users,in,this,group是属于这个组的用户列表,用逗号分隔;
[root@server0 ~]# head -n 5 /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:

主要组

  • 每个账户只有一个主要组;
  • 对本地账户,主要组通过/etc/passwd文件第4个字段gid来定义;
  • 通常,账户创建的文件归主要组所有;
  • 通常,新建账户的主要组是名称与账户相同的新建组;

补充组

  • 账户可以有0个或任意个补充组;
  • 补充组用/etc/group文件的第4列来记录
  • 补充组成员身份用于帮助确保账户对系统文件和目录的访问

三、切换账户su - <username>

su命令可以切换账户。未指定账户名,意味着切换为root账户。用法是 su - <username>。

注意“-”的使用。

  • su - <username>启动登录shell,会将shell环境设置为username登录一样;
  • su  <username>启动非登录shell,只以username身份使用当前shell环境设置;忘记这条吧

大多数情况下,都是希望获得用户的常规设置,所以一定要加上“-”!

[student@server0 ~]$ su - root
Password: 
Last login: Sun Mar 29 16:44:19 CST 2020 on pts/0
[root@server0 ~]# 

四、增删改本地账户useradd、userdel、usermod

增删改分别用useradd、userdel、usermod命令。

useradd命令可以在添加账户时,设置/etc/passwd文件的7列值,也可以用选项指定这7列的值。除了这7列值以外,还有一些默认值,比如家目录下的.bash_profile等文件,这些默认值在/etc/login.defs文件中定义。

usermod命令可以修改账户的信息。useradd和usermod的大多数常用选项是可以通用的。

useradd和usermod常用选项
选项用途
-c为账户指定全名,也就是指定/etc/passwd的gecos字段。
-g为账户指定主要组,也就是指定/etc/passwd的gid字段。
-G

为账户指定补充组。单独使用-G指定一个补充组,账户就不再属于原来的补充组。

会修改/etc/group文件list,of,users,in,this,group

-a

与-G搭配使用,为账户添加补充组。-aG为账户添加一个补充组,账户仍属于原来的补充组。

会修改/etc/group文件list,of,users,in,this,group

-s

指定账户使用的登录shell,也就是指定/etc/passwd的shell字段。

-L锁定账户,也就是修改/etc/shadow的内容,使账户不能再登录。
-U

解锁账户,也就是修改/etc/shadow的内容,使账户可以继续登录。

userdel命令删除账户。userdel <username>从/etc/passwd中删除,但不删除账户的家目录。userdel -r <username>既从/etc/passwd中删除,也删除账户的家目录。如果删除账户时没有用-r,那么可能造成信息的泄露。比如添加了prince账户,再删除prince账户,再添加bob账户,这时原来prince的家目录已经变成了bob所有。prince的uid被认为是可以再分配给bob的,那么分配之后,没有被删除的prince的家目录就归bob所有。

这种情况,只能是删除时用-r,或者手动为不同账户分配“无人拥有”的文件,查找方式是 find / -nouser -o -nogroup 2>/dev/null

[root@server0 ~]# useradd prince
[root@server0 ~]# ll /home/
total 4
drwx------.  4 prince  prince    88 Apr  1 23:49 prince
drwx------. 10 student student 4096 Mar 29 09:31 student
[root@server0 ~]# id prince
uid=1001(prince) gid=1001(prince) groups=1001(prince)[root@server0 ~]# userdel prince
[root@server0 ~]# ll /home/
total 4
drwx------.  4    1001    1001   88 Apr  1 23:49 prince
drwx------. 10 student student 4096 Mar 29 09:31 student[root@server0 ~]# useradd bob
[root@server0 ~]# ll /home/
total 4
drwx------.  4 bob     bob       88 Apr  1 23:50 bob
drwx------.  4 bob     bob       88 Apr  1 23:49 prince
drwx------. 10 student student 4096 Mar 29 09:31 student
[root@server0 ~]# id bob
uid=1001(bob) gid=1001(bob) groups=1001(bob)

五、账户默认配置文件/etc/login.defs

UID特定的号段在Redhat里面有特殊的意义。

  • UID 0 始终给root;
  • UID 1-200给“系统用户”,分配个Redhat的系统进程;
  • UID 201-999是一系列“系统用户”,给没有自己文件的系统进程使用;
  • UID 1000+可分配给普通用户

六、设置密码passwd(5)命令

passwd给当前账户设置密码。passwd <username>给指定账户设置密码

passwd输入密码没有回显,为了看清指定的密码可以用--stdin选项,用法是。echo passwordstring | passwd --stdin <username>

七、增删改组groupadd、groupdel和groupmod

使用类似的groupadd、groupdel和groupmod,具体使用可以man一下

下面实验

  • 创建账户user1、user2,密码分别为qwe123、1qazxsw2;
  • 创建账户组 sys1 、sys2;
  • user1的shell是/sbin/nologin;
  • user1附属组是sys1  sys2 ;
  • user2的主要组是sys2 , 附属组是sys1  user1;
  • passwd 设置密码,账户才被激活;
  • 创建账户zhangsf,全名ZhangSanFeng,uid为2333,shell为/sbin/nologin,创建完成后增加补充组user1、sys1和sys2;

虽然user1被激活,但是shell是/sbin/nologin还是不能登录。

[root@server0 ~]# groupadd sys1
[root@server0 ~]# groupadd sys2
[root@server0 ~]# useradd -s /sbin/nologin -G sys1,sys2 user1
[root@server0 ~]# useradd -g sys2 -G sys1,user1 user2[root@server0 ~]# id user1
uid=1001(user1) gid=1003(user1) groups=1003(user1),1001(sys1),1002(sys2)
[root@server0 ~]# id user2
uid=1002(user2) gid=1002(sys2) groups=1002(sys2),1001(sys1),1003(user1)[root@server0 ~]# echo qwe123 | passwd --stdin user1
[root@server0 ~]# echo 1qazxsw2 | passwd --stdin user2[root@server0 ~]# useradd -s /sbin/nologin -u 2333 -c ZhangSanFeng zhangsf
[root@server0 ~]# usermod -aG user1,sys1,sys2 zhangsf
[root@server0 ~]# id zhangsf
uid=2333(zhangsf) gid=2333(zhangsf) groups=2333(zhangsf),1001(sys1),1002(sys2),1003(user1)[root@server0 ~]# tail -n 5 /etc/passwd
gnome-initial-setup:x:993:991::/run/gnome-initial-setup/:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
user1:x:1001:1003::/home/user1:/sbin/nologin
user2:x:1002:1002::/home/user2:/bin/bash
zhangsf:x:2333:2333:ZhangSanFeng:/home/zhangsf:/sbin/nologin[root@server0 ~]# tail -n 5 /etc/group
slocate:x:21:
sys1:x:1001:user1,user2,zhangsf
sys2:x:1002:user1,zhangsf
user1:x:1003:user2,zhangsf
zhangsf:x:2333:[root@server0 ~]# tail -n 5 /etc/shadow
gnome-initial-setup:!!:16442::::::
tcpdump:!!:16442::::::
user1:$6$/k.D4qEv$91dHDyIITezuVESaFJrpZiwTWicsZr9cDqPLU9sFC6vywKSeQcK7.zKNWDg85.uGciCij/ra18oubOwqYvCeU/:18353:0:99999:7:::
user2:$6$0t/TYhB6$4iM1CO8hlHfxt/RX6/Xj9O7AHNO4irbyMXMNJ2d2/YSZM1IDO.69JQIhJgb.cOn5C5L0oqAeMt/7Ns2SMYgUp0:18353:0:99999:7:::
zhangsf:!!:18353:0:99999:7:::

八、通过sudo以root身份运行命令

sudo命令可以使账户根据/etc/sudoers文件中的设置,以root或其他账户身份运行命令。sudo要求输入自己的密码来进行身份验证,而不是输入他们要以什么账户(root)的密码。编辑/etc/sudoers文件用命令visudo。

这样的好处是,可以把一部分命令交给非root账户去做,而不是像su - <username>那样真的变成root,也不用告知root密码。所有sudo运行的命令都会记录到/var/log/secure日志中。

比如,添加账户useradd是root身份执行的命令,现在用user2身份添加账户user3。

[root@server0 ~]# su - user2
[user2@server0 ~]$ sudo useradd user3We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:#1) Respect the privacy of others.#2) Think before you type.#3) With great power comes great responsibility.[sudo] password for user2: 
user2 is not in the sudoers file.  This incident will be reported.[root@server0 ~]# tail -n 2 /var/log/secure
Apr  2 00:40:39 localhost sudo: user2 : user NOT in sudoers ; TTY=pts/1 ; PWD=/home/user2 ; USER=root ; COMMAND=/sbin/useradd user3
Apr  2 00:40:56 localhost su: pam_unix(su-l:session): session closed for user user2

我们在/etc/sudoers里面增加user2以后再尝试一下。可以看到,user2也能添加user3,而且/var/log/secure里面记录了是user2添加的用户。

[root@server0 ~]# visudo
[root@server0 ~]# cat /etc/sudoers | grep user2
user2	ALL=/usr/sbin/useradd[root@server0 ~]# su - user2
Last login: Thu Apr  2 00:40:08 CST 2020 on pts/1[user2@server0 ~]$ sudo useradd user3
[sudo] password for user2: 
[user2@server0 ~]$ id user3
uid=2334(user3) gid=2334(user3) groups=2334(user3)
[user2@server0 ~]$ exit
logout[root@server0 ~]# tail -n 4 /var/log/secure
Apr  2 00:47:15 localhost sudo: user2 : TTY=pts/1 ; PWD=/home/user2 ; USER=root ; COMMAND=/sbin/useradd user3
Apr  2 00:47:15 localhost useradd[5576]: new group: name=user3, GID=2334
Apr  2 00:47:15 localhost useradd[5576]: new user: name=user3, UID=2334, GID=2334, home=/home/user3, shell=/bin/bash
Apr  2 00:49:30 localhost su: pam_unix(su-l:session): session closed for user user2

九、管理用户密码/etc/shadow

/etc/shadow用于存储用户的加密密码和密码策略。其格式是用冒号分隔9列信息

name:password:lastchange:minage:maxage:warning:inactive:expire:blank

  • name是用户名;
  • password是经过加密的密码,如果密码开头是感叹号,表示密码被锁定;
  • lastchange最后一次更改密码的日期,距离1970.01.01的天数;
  • minage表示lastchange后最少经过minage才能更改密码,0表示没有最短期限要求;
  • maxage表示lastchange后最多经过maxage必须更改密码;
  • warning表示密码即将到期的警告期,0表示不提供警告;
  • inactive密码到期后保持活动的天数,在此期限内用户仍可以登录系统并更改密码,在指定天数过后,账户被锁定,变为不活动;
  • expire账户到期日期,距离1970.01.01的天数,与前面密码的期限不同,这个expire指的是账户的期限;
  • blank为预留字段,供未来使用;

/etc/shadow里面很多字段都是用距离1970.01.01的天数来作为值的,怎么才能计算出这个天数是多少呢?那就是使用date命令,可以用来计算距离某天多少天的日期,或者某天距离某天多少天。date -d加上简单的描述字符就知道这个天数是多少了。

[root@server0 ~]# date -d "19700101+18376days"
Fri Apr 24 00:00:00 CST 2020

通过chage命令可以修改某个账户的密码有效期设置。

chage -l user1 查看用户user1的密码设置。

chage -m 0 -M 90 -W 8 -I 14 -E 2021-01-01 user1 将用户user1的密码设置更改为最后一次更改密码(2020-April-01)后最少0天可以改密码,最多90天(2020-June-30)就必须改密码,到期前8天开始提示改密码,到期后宽限到14天(2020-July-14),账户有效期到2021-January-01。

[root@server0 ~]# tail -n 5 /etc/shadow
tcpdump:!!:16442::::::
user1:$6$/k.D4qEv$91dHDyIITezuVESaFJrpZiwTWicsZr9cDqPLU9sFC6vywKSeQcK7.zKNWDg85.uGciCij/ra18oubOwqYvCeU/:18353:0:99999:7:::
user2:$6$0t/TYhB6$4iM1CO8hlHfxt/RX6/Xj9O7AHNO4irbyMXMNJ2d2/YSZM1IDO.69JQIhJgb.cOn5C5L0oqAeMt/7Ns2SMYgUp0:18353:0:99999:7:::
zhangsf:!!:18353:0:99999:7:::
user3:!!:18353:0:99999:7:::
[root@server0 ~]# 
[root@server0 ~]# chage -l user1
Last password change					: Apr 01, 2020
Password expires					: never
Password inactive					: never
Account expires						: never
Minimum number of days between password change		: 0
Maximum number of days between password change		: 99999
Number of days of warning before password expires	: 7[root@server0 ~]# chage -m 0 -M 90 -W 8 -I 14 -E 2021-01-01 user1
[root@server0 ~]# 
[root@server0 ~]# chage -l user1
Last password change					: Apr 01, 2020
Password expires					: Jun 30, 2020
Password inactive					: Jul 14, 2020
Account expires						: Jan 01, 2021
Minimum number of days between password change		: 0
Maximum number of days between password change		: 90
Number of days of warning before password expires	: 8
[root@server0 ~]# 
[root@server0 ~]# tail -n 5 /etc/shadow
tcpdump:!!:16442::::::
user1:$6$/k.D4qEv$91dHDyIITezuVESaFJrpZiwTWicsZr9cDqPLU9sFC6vywKSeQcK7.zKNWDg85.uGciCij/ra18oubOwqYvCeU/:18353:0:90:8:14:18628:
user2:$6$0t/TYhB6$4iM1CO8hlHfxt/RX6/Xj9O7AHNO4irbyMXMNJ2d2/YSZM1IDO.69JQIhJgb.cOn5C5L0oqAeMt/7Ns2SMYgUp0:18353:0:99999:7:::
zhangsf:!!:18353:0:99999:7:::
user3:!!:18353:0:99999:7:::

chage -d 0 user1 设置user1必须改秘密。

[root@server0 ~]# chage -d 0 user1
[root@server0 ~]# chage -l user1
Last password change					: password must be changed
Password expires					: password must be changed
Password inactive					: password must be changed
Account expires						: Jan 01, 2021
Minimum number of days between password change		: 0
Maximum number of days between password change		: 90
Number of days of warning before password expires	: 8
[root@server0 ~]# 
[root@server0 ~]# tail -n 5 /etc/shadow
tcpdump:!!:16442::::::
user1:$6$/k.D4qEv$91dHDyIITezuVESaFJrpZiwTWicsZr9cDqPLU9sFC6vywKSeQcK7.zKNWDg85.uGciCij/ra18oubOwqYvCeU/:0:0:90:8:14:18628:
user2:$6$0t/TYhB6$4iM1CO8hlHfxt/RX6/Xj9O7AHNO4irbyMXMNJ2d2/YSZM1IDO.69JQIhJgb.cOn5C5L0oqAeMt/7Ns2SMYgUp0:18353:0:99999:7:::
zhangsf:!!:18353:0:99999:7:::
user3:!!:18353:0:99999:7:::

usermod -L user1 可以用来锁定账户。被锁定的账户的密码前面会多一个感叹号 !,注意观察。usermod -U user1可以用来解锁账户。

[root@server0 ~]# tail -n 5 /etc/shadow
tcpdump:!!:16442::::::
user1:$6$/k.D4qEv$91dHDyIITezuVESaFJrpZiwTWicsZr9cDqPLU9sFC6vywKSeQcK7.zKNWDg85.uGciCij/ra18oubOwqYvCeU/:0:0:90:8:14:18628:
user2:$6$0t/TYhB6$4iM1CO8hlHfxt/RX6/Xj9O7AHNO4irbyMXMNJ2d2/YSZM1IDO.69JQIhJgb.cOn5C5L0oqAeMt/7Ns2SMYgUp0:18353:0:99999:7:::
zhangsf:!!:18353:0:99999:7:::
user3:!!:18353:0:99999:7:::
[root@server0 ~]# 
[root@server0 ~]# 
[root@server0 ~]# usermod -L user1
[root@server0 ~]# 
[root@server0 ~]# tail -n 5 /etc/shadow
tcpdump:!!:16442::::::
user1:!$6$/k.D4qEv$91dHDyIITezuVESaFJrpZiwTWicsZr9cDqPLU9sFC6vywKSeQcK7.zKNWDg85.uGciCij/ra18oubOwqYvCeU/:0:0:90:8:14:18628:
user2:$6$0t/TYhB6$4iM1CO8hlHfxt/RX6/Xj9O7AHNO4irbyMXMNJ2d2/YSZM1IDO.69JQIhJgb.cOn5C5L0oqAeMt/7Ns2SMYgUp0:18353:0:99999:7:::
zhangsf:!!:18353:0:99999:7:::
user3:!!:18353:0:99999:7:::
[root@server0 ~]# 
[root@server0 ~]# usermod -U user1
[root@server0 ~]# 
[root@server0 ~]# tail -n 5 /etc/shadow
tcpdump:!!:16442::::::
user1:$6$/k.D4qEv$91dHDyIITezuVESaFJrpZiwTWicsZr9cDqPLU9sFC6vywKSeQcK7.zKNWDg85.uGciCij/ra18oubOwqYvCeU/:0:0:90:8:14:18628:
user2:$6$0t/TYhB6$4iM1CO8hlHfxt/RX6/Xj9O7AHNO4irbyMXMNJ2d2/YSZM1IDO.69JQIhJgb.cOn5C5L0oqAeMt/7Ns2SMYgUp0:18353:0:99999:7:::
zhangsf:!!:18353:0:99999:7:::
user3:!!:18353:0:99999:7:::

相关文章:

ORB_SLAM2单目初始化策略

基本流程 单目初始化程序存储在Initializer.cc中   需要注意&#xff0c;对于双目/RGB-D相机&#xff0c;初始化时&#xff0c;由于可以直接获得相机的深度信息&#xff0c;因此无需求H/F&#xff0c;直接作为关键帧插入就行。   使用RANSACDLT求解H&#xff0c;RANSAC八点…

Powerdesigner逆向工程64位Oracle数据库

Powerdesigner老版本不支持64位Client&#xff0c;新版本弄不到破解码 解决方法&#xff0c;用Powerdesigner32位Oracle Clent访问64位Oracle Server 遇到的坑分享下 安装完64位的Oracle Server ,32位的 Oracle Clent默认的listener.ora文件有PROGRAM和ENVS这两个节点 Plsql(3…

运行jsp时,报错404

The origin server did not find a current reprsentation for the target resource or is not willing to disclose that one exists. 解决&#xff1a; 1. web.xml文件位置是否放错&#xff0c;应该放在WebContent/WEB-INF文件夹中 2. web.xml文件中是否有拼写错误&#xff0…

iOS 直播专题3-前置处理

前置处理 对视频添加美颜、水印、滤镜等对音频进行混音、消除环境音、声音特效等上一篇iOS 直播专题2-音视频采集提到视频采集采用的是GPUImage框架,这个框架集成了很多滤镜效果 这里主要介绍美颜、水印处理 处理流程: 美颜 这里的美颜效果用的是GPUImageBeautyFilter 功…

ORA-10873解决办法

今天&#xff0c;发现SAP系统的oracle数据库宕掉了。报错ORA-10873&#xff0c;经过查证解决该问题。记录一下&#xff0c;备忘。 一、问题 Oracle版本为12.1.0.2.0&#xff0c;在启动服务器后启动数据库startup&#xff0c;报错ORA-10873。 二、查证 到SAP Support Portal上…

ORB_SLAM2局部建图线程

局部建图线程入口&#xff1a;可执行程序在初始化三个线程的时候&#xff0c;在System.cc的构造函数中进入局部建图线程 mpLocalMapper new LocalMapping(mpMap, //指定使iomanipmSensorMONOCULAR); // TODO 为什么这个要设置成为MONOCULAR&#xff1f;&#xff1f;&#…

十一连测day1

这次测试&#xff0c;是福建第三中学的某同学出的&#xff0c;感觉难度还行吧&#xff0c;今天我就浅谈一下这场比赛的时间分配与心得 打开题目&#xff0c;看到了T1&#xff0c;这题是一道计数题吧&#xff0c;感觉心态一下子就崩了&#xff0c;100%的数据点应该是组合数学容斥…

iOS 直播专题5-推流

常用的推流协议有: 协议内容RTP实时流传输协议,但不保证服务质量RTCPRTP数据流协议的一个姐妹协议,为RTP提供服务质量反馈SRTP & SRTCPRTP和RTCP的安全版本,提供数据加密、消息认证功能RTSP控制声音或影像的多媒体数据串流协议RTMPADOBE公司播放器与服务器之间多媒体数…

centos6.5-vsftp搭建

我的机子是默认是没有的vsftp。 yum install -y vsftp 创建账户专为ftp而生。useradd ftp01 更改账户不可登录系统。usermod -s /sbin/nologin ftp01 vsftp默认是可以匿名登录的&#xff0c;也是默认的端口&#xff0c;这些不安全选项都要修改&#xff01; anonymous_enableYES…

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

目录 一、文件系统权限 1.1、认识文件系统权限 1.2、管理文件系统权限 1.3、特殊权限 1.4、默认权限 二、ACL权限 2.1、ACL本质是文件系统的一个挂载选项 2.2、更改文件的ACL权限 2.3、设置文件和目录的默认ACL权限 Linux中的权限管理分为两种类型 用户自主访问控制&…

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;…