Linux学习笔记-Ubuntu系统用户、群组、权限管理
一、概述
本文记录Ubuntu系统下通过命令操作用户账户进行管理。
Ubuntu系统版本:
Linux ubuntu 5.15.0-1034-raspi
#37-Ubuntu SMP PREEMPT Mon Jul 17 10:02:14 UTC 2023 aarch64 aarch64 aarch64 GNU/Linux
注:查看系统版本号的指令如下
uname -a
用户管理主要包括:新建用户,查看用户,权限管理,删除用户
修改Root账户默认密码:
刚装完的ubuntu系统,root账户的密码是随机生成,每次开机都会随机生成一个密码,我们客户根据自己的需要设置root账户密码,毕竟管理Ubuntu系统,大部分需要用到root权限。
zero@ubuntu:/home$ sudo passwd # 设置root账户密码
New password:
Retype new password:
passwd: password updated successfully
二、查看用户
2.1 使用Cat指令查找所有用户
cat /etc/passwd
查询结果如下:
会将所有用户列出,并显示出具体的分组信息,ID,主目录。
ubuntu@ubuntu:~$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
systemd-network:x:100:102:systemd Network Management,,,:/run/systemd:/usr/sbin/nologin
systemd-resolve:x:101:103:systemd Resolver,,,:/run/systemd:/usr/sbin/nologin
messagebus:x:102:105::/nonexistent:/usr/sbin/nologin
systemd-timesync:x:103:106:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin
syslog:x:104:111::/home/syslog:/usr/sbin/nologin
_apt:x:105:65534::/nonexistent:/usr/sbin/nologin
tss:x:106:112:TPM software stack,,,:/var/lib/tpm:/bin/false
uuidd:x:107:114::/run/uuidd:/usr/sbin/nologin
tcpdump:x:108:115::/nonexistent:/usr/sbin/nologin
sshd:x:109:65534::/run/sshd:/usr/sbin/nologin
pollinate:x:110:1::/var/cache/pollinate:/bin/false
landscape:x:111:118::/var/lib/landscape:/usr/sbin/nologin
fwupd-refresh:x:112:119:fwupd-refresh user,,,:/run/systemd:/usr/sbin/nologin
ubuntu:x:1000:1000:Ubuntu:/home/ubuntu:/bin/bash
lxd:x:999:100::/var/snap/lxd/common/lxd:/bin/false
2.2 使用getent查看所有用户信息
getent passwd
ubuntu@ubuntu:~$ getent passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
systemd-network:x:100:102:systemd Network Management,,,:/run/systemd:/usr/sbin/nologin
systemd-resolve:x:101:103:systemd Resolver,,,:/run/systemd:/usr/sbin/nologin
messagebus:x:102:105::/nonexistent:/usr/sbin/nologin
systemd-timesync:x:103:106:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin
syslog:x:104:111::/home/syslog:/usr/sbin/nologin
_apt:x:105:65534::/nonexistent:/usr/sbin/nologin
tss:x:106:112:TPM software stack,,,:/var/lib/tpm:/bin/false
uuidd:x:107:114::/run/uuidd:/usr/sbin/nologin
tcpdump:x:108:115::/nonexistent:/usr/sbin/nologin
sshd:x:109:65534::/run/sshd:/usr/sbin/nologin
pollinate:x:110:1::/var/cache/pollinate:/bin/false
landscape:x:111:118::/var/lib/landscape:/usr/sbin/nologin
fwupd-refresh:x:112:119:fwupd-refresh user,,,:/run/systemd:/usr/sbin/nologin
ubuntu:x:1000:1000:Ubuntu:/home/ubuntu:/bin/bash
lxd:x:999:100::/var/snap/lxd/common/lxd:/bin/false
2.3 使用id查找指定用户
id userid
查找指定用户的详细信息内容,如ID,分组。
ubuntu@ubuntu:~$ id root
uid=0(root) gid=0(root) groups=0(root)
2.4 使用who查找当前登录的用户
who
ubuntu@ubuntu:~$ who
ubuntu pts/0 2023-08-15 08:36 (IP地址)
ubuntu pts/1 2023-08-15 08:52 (IP地址)
2.5 使用getent group查看用户组,及群组成员
ubuntu@ubuntu:~$ getent group
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:syslog,ubuntu
tty:x:5:
disk:x:6:
lp:x:7:
mail:x:8:
news:x:9:
uucp:x:10:
man:x:12:
proxy:x:13:
kmem:x:15:
dialout:x:20:ubuntu
fax:x:21:
voice:x:22:
cdrom:x:24:ubuntu
floppy:x:25:ubuntu
tape:x:26:
sudo:x:27:ubuntu
audio:x:29:ubuntu
dip:x:30:ubuntu
www-data:x:33:
backup:x:34:# 当后面添加具体的群组名称时,可以查询该群组的所有成员列表
zero@ubuntu:~$ getent group test2
test2:x:1002:test,test4
2.6使用groups查看用户所属群组
zero@ubuntu:~$ groups # 不带参数,直接查询当前账户的权限
zero adm cdrom sudo dip plugdev lxd# 带名称,可以查询指定用户的所属群组
zero@ubuntu:~$ groups test
test : test2
zero@ubuntu:~$ groups zero
zero : zero adm cdrom sudo dip plugdev lxd
三、用户管理
3.1 创建用户
3.1.1 使用adduser创建用户
adduser可以理解为对useradd封装后的方法,可以比较编辑的添加用户。
zero@ubuntu:~$ sudo adduser test1 # 添加用户
[sudo] password for zero:# 系统会自动添加新的权限信息
Adding user `test1' ...
Adding new group `test1' (1001) ...
Adding new user `test1' (1001) with group `test1' ...
Creating home directory `/home/test1' ...
Copying files from `/etc/skel' ...# 提示设置密码 ,不过有的版本可能没有提示,需要后续再行设置
New password:
Retype new password:
passwd: password updated successfully# 以下内容提示设置用户信息,可根据需要设置
Changing the user information for test1
Enter the new value, or press ENTER for the defaultFull Name []:Room Number []:Work Phone []:Home Phone []:Other []:
Is the information correct? [Y/n] y# 查看用户信息,可以看到已经有响应的权限信息了。
zero@ubuntu:~$ id test1
uid=1001(test1) gid=1001(test1) groups=1001(test1)
3.1.2 使用useradd创建用户
useradd用户是最基础也是最灵活的创建用户的指令,默认情况下会创建一个没有家目录、没有权限组,没有shell版本的用户,需要用户根据需要自行增补。
useradd的基本参数配置
- -u :数字,指定一个特定的 UID ;
- -g :接群组名称,用于设定账户的初始群组;
- -G :可加入的群组名称。会相应修改 /etc/group 內的相关信息!
- -M :强制不建立使用者家目录!(系统账户的预设值)
- -m :强制建立使用者家目录!(一般账号的预设值)
- -c :用户的说明信息。
- -d :使用绝对路径指定用户的家目录。
- -r :建立系统账号,UID值会有限制。
- -s :指定shell ,默认是 /bin/bash。
- -e :使用格式为“YYYY-MM-DD”的日期设置账号失效日期。
- -f :指定账号的失效天数,0为立刻失效, -1 为永不失效。
- -D:查看useradd参数的默认值
示例1,使用默认参数创建用户:
# 使用默认参数创建
zero@ubuntu:~$ sudo useradd test2
[sudo] password for zero:# 查询用户
zero@ubuntu:/home$ id test2
uid=1002(test2) gid=1002(test2) groups=1002(test2)# 查看用户信息,有创建用户家目录
zero@ubuntu:/home$ grep test2 /etc/passwd
/etc/passwd:test2:x:1002:1002::/home/test2:/bin/sh
示例2,创建用户时指定默认群组,系统再创建群组:
# 指定uid和群组名称
zero@ubuntu:/home$ useradd -u 1003 -g zero test3
useradd: Permission denied.
useradd: cannot lock /etc/passwd; try again later.
zero@ubuntu:/home$ sudo useradd -u 1003 -g zero test3# 查看用户信息,初始群组就是设置的群组
zero@ubuntu:/home$ id test3
uid=1003(test3) gid=1000(zero) groups=1000(zero)
zero@ubuntu:/home$ grep test3 /etc/passwd
test3:x:1003:1000::/home/test3:/bin/sh
示例3,创建系统账户:
zero@ubuntu:/home$ useradd -r test4 # -r 代表系统账户
useradd: Permission denied.
useradd: cannot lock /etc/passwd; try again later.
zero@ubuntu:/home$ sudo useradd -r test4
[sudo] password for zero:
zero@ubuntu:/home$ id test4
uid=998(test4) gid=998(test4) groups=998(test4)
zero@ubuntu:/home$ grep test4 /etc/passwd
test4:x:998:998::/home/test4:/bin/sh# 系统账户会修改gshadow文件。
zero@ubuntu:/home$ grep test4 /etc/gshadow
grep: /etc/gshadow: Permission denied
zero@ubuntu:/home$ sudo grep test4 /etc/gshadow
test4:!::
3.2 使用passwd修改用户密码
passwd的参数信息:
- --stdin :可以透過來自前一個管線的資料,作為密碼輸入,對 shell script 有幫助!
- -l :是 Lock 的意思,會將 /etc/shadow 第二欄最前面加上 ! 使密碼失效;
- -u :與 -l 相對,是 Unlock 的意思!
- -S :列出密碼相關參數,亦即 shadow 檔案內的大部分資訊。
- -n :後面接天數,shadow 的第 4 欄位,多久不可修改密碼天數
- -x :天数,多久内必须修改密码;
- -w :日期天数,密码过期前的警告天数
- -i :密码失效天数
zero@ubuntu:/home$ sudo passwd test1 # 使用root权限修改指定用户密码
[sudo] password for zero:
New password:
Retype new password:
passwd: password updated successfullyzero@ubuntu:/home$ passwd # 不加任何参数,为修改当前自身密码
Changing password for zero.
Current password:
New password:
Retype new password:
The password has not been changed.
3.3 使用chage操作密码
参数列表:
- -l :列出该账号的详细信息;
- -d :YYYY-MM-DD格式的日期,修改最近一次更改密碼的日期;
- -E :YYYY-MM-DD的日期,账号失效日期;
- -I :天数,密码失效天数;
- -m :天数,密码最短保留天数;
- -M :天数,密码需要更改的天数;
- -W :天数,密码过期前的警告天数;
示例1,-l直接查看详细信息,注意,需要使用root权限:
zero@ubuntu:/home$ chage -l test1
chage: Permission denied.
zero@ubuntu:/home$ sudo chage -l test1
Last password change : Sep 08, 2023
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
3.4 使用usermod修改账户信息
参数信息如下:
- -c :账号说明内容;
- -d :账号家目录;
- -e :账号失效日期,格式是 YYYY-MM-DD ;
- -f :,0为立刻失效, -1 为永不失效;
- -g :接群组名称,用于设定账户的初始群组;
- -G :可加入的群组名称,会相应修改 /etc/group 內的相关信息;
- -a :与 -G 合用,增加可加入的群组;
- -l :修改账号名称;
- -s :指定shell,例如 /bin/bash 或 /bin/csh 等等;
- -u :修改uid;
- -L :锁定账户,使账户无法登录;
- -U :解锁账户,使账户可以正常使用。
示例1,将test2的用户名修改为test:
zero@ubuntu:/home$ sudo usermod -l test test2
[sudo] password for zero:
# ...省略部分不必要的数据
test1:x:1001:1001:,,,:/home/test1:/bin/bash
test3:x:1003:1000::/home/test3:/bin/sh
test4:x:998:998::/home/test4:/bin/sh
test:x:1002:1002::/home/test2:/bin/sh
3.5 使用userdel删除用户
使用userdel会直接删除账户的所有相关数据,使用时需谨慎,一般通常是用禁用账号来替代删除账户。
参数:
- -r:连使用者家目录也一起删除。
示例1,删除test1账户:
zero@ubuntu:/home$ sudo userdel test1
zero@ubuntu:/home$ cat /etc/passwd
# test1账户已删除
test3:x:1003:1000::/home/test3:/bin/sh
test4:x:998:998::/home/test4:/bin/sh
test:x:1002:1002::/home/test2:/bin/sh
四、群组管理
4.1 使用groupadd添加群组
参数如下:
- -g:指定GID号;
- -r:建立系统群组;
zero@ubuntu:/$ sudo groupadd test
[sudo] password for zero:
zero@ubuntu:/$ getent group
# 此处省略多余数据
test2:x:1002:
test4:x:998:
test:x:1003:
zero@ubuntu:/$
4.2 使用groupmod修改群组权限
参数如下:
- -g:修改GID数字;
- -n:修改群组名称;
# 将群组test更名为Test
zero@ubuntu:/$ sudo groupmod -n Test test
zero@ubuntu:/$ grep Test /etc/group
Test:x:1003:
4.3 使用groupdel删除群组
直接删除群组,会删除响应资料,所以删除需谨慎,需要先修改用户的群组之后再删除。
# 删除Test群组
zero@ubuntu:/$ sudo groupdel Test
4.4 使用gpasswd管理群组管理员
通过gpasswd可以设置某个群组的管理员,然后管理员就可以进行相关的群组管理操作,包括加入,移除等。
4.4.1 设置群组密码
不带任何参数是表示设置群组密码。
# 先创建一个群组
zero@ubuntu:/$ sudo groupdel Test
zero@ubuntu:/$ sudo groupadd test# 然后设置群组的密码,需要使用root权限。
zero@ubuntu:/$ gpasswd test
gpasswd: Permission denied.
zero@ubuntu:/$ sudo gpasswd test
Changing the password for group test
New Password:
Re-enter new password:
4.4.2 通过参数管理群组信息
gpasswd [-A user1,user2,...] [-M user3,user4,....] [-rR] groupname
- -A:表示将goupname群组的主控权交由后面的使用者管理;
- -M:表示将某些账户添加到当前群组;
- -r:移除群组groupname的密码;
- -R:使群组groupname的密码失效;
4.4.3 通过ad参数添加或删除群组成员
gpasswd [-ad] user groupname
- -a:将某位使用者加入到群组groupname;
- -d:将某位成员从群组中移除;
五、使用ACL管理权限
ACL是Access Control List的缩写,主要用来进行权限管理,可以对单一档案或目录进行rwx的权限设置。
5.1 安装ACL
目前大部分linux的CentOS系统都有内置acl,可以先查看下ACL状态。
zero@ubuntu:~$ dpkg -l | grep acl
ii acl 2.3.1-1 amd64 access control list - utilities
ii libacl1:amd64 2.3.1-1 amd64 access control list - shared library
没有安装时会提示错误,可以自行再安装下acl工具。
zero@ubuntu:~$ sudo apt-get install acl
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following NEW packages will be installed:acl
0 upgraded, 1 newly installed, 0 to remove and 12 not upgraded.
Need to get 38.5 kB of archives.
After this operation, 205 kB of additional disk space will be used.
Get:1 http://mirrors.tuna.tsinghua.edu.cn/ubuntu jammy/main amd64 acl amd64 2.3.1-1 [38.5 kB]
Fetched 38.5 kB in 3s (12.1 kB/s)
Selecting previously unselected package acl.
(Reading database ... 109692 files and directories currently installed.)
Preparing to unpack .../archives/acl_2.3.1-1_amd64.deb ...
Unpacking acl (2.3.1-1) ...
Setting up acl (2.3.1-1) ...
Processing triggers for man-db (2.10.2-1) ...
Scanning processes...
Scanning linux images...Running kernel seems to be up-to-date.No services need to be restarted.No containers need to be restarted.No user sessions are running outdated binaries.No VM guests are running outdated hypervisor (qemu) binaries on this host.
5.2 权限说明含义:
1.文档类型:
- d:目录
- -:档案
- l:连接档
- b:可供存储的周边设备
- c:硬件设备,如键盘,鼠标
2.拥有者(owner)权限
3.所属群体(group)权限
4.其他人(other)权限
5.3 使用setfacl设置权限
5.3.1 指令
setfacl [-bkRd] [{-m|-x}] acl参数 目标档案、资料名
- -m :设定后续acl参数,不可与 -x 合用;
- -x :刪除后续的 acl 参数,不可与 -m 合用;
- -b :移除所有的ACL 参数;
- -k :移除预设的 ACL 参数;
- -R :巡回设定acl ,亦即包括子目录;
- -d :设定预设的acl参数!只對目录有效,在该目录新建的档案会引用该参数。
- 以u:用户:权限组:权限的形式修改档案权限,k
5.3.2 acl参数说明
- u:用户(user)权限,格式“u:用户名:权限”;
- g:群组(group)权限,格式“g:群组名:权限”;
- m:最大权限,即为可设置的最大权限,设定后,超出设定的权限设置会无效,格式“m:权限”;
- o:其他(other)权限,格式“o:用户名:权限”;
示例,创建一个文件,然后修改权限:
# 首先创建一个账号
zero@ubuntu:~$ touch acl_test# 查询测试文件状态
zero@ubuntu:~$ ll acl_test
-rw-rw-r-- 1 zero zero 0 Sep 9 05:39 acl_test# 修改用户的权限,使用acl修改后,权限会多一个+号,可以使用getfacl识别
zero@ubuntu:~$ setfacl -m u:test:rwx acl_test
zero@ubuntu:~$ ll acl_test
-rw-rwxr--+ 1 zero zero 0 Sep 9 05:39 acl_test*# 修改用拥有者的权限,用户名防空
zero@ubuntu:~$ setfacl -m u::rwx acl_test
zero@ubuntu:~$ ll acl_test
-rwxrwxr--+ 1 zero zero 0 Sep 9 05:39 acl_test*# 修改其他用户权限
zero@ubuntu:~$ setfacl -m o::rwx acl_test
zero@ubuntu:~$ ll acl_test
-rwxrwxrwx+ 1 zero zero 0 Sep 9 05:39 acl_test*
5.4 使用getfacl获取权限
getfacl 档案名
直接获取档案的权限信息。
zero@ubuntu:~$ getfacl acl_test
# file: acl_test # 文件名
# owner: zero # 拥有者
# group: zero # 群组
user::rwx # 拥有者的权限
user:test:rwx # test的权限
group::rw- # 群组的权限
mask::rwx # 最大权限
other::rwx # 其他用户的权限
相关文章:

Linux学习笔记-Ubuntu系统用户、群组、权限管理
一、概述 本文记录Ubuntu系统下通过命令操作用户账户进行管理。 Ubuntu系统版本: Linux ubuntu 5.15.0-1034-raspi #37-Ubuntu SMP PREEMPT Mon Jul 17 10:02:14 UTC 2023 aarch64 aarch64 aarch64 GNU/Linux 注:查看系统版本号的指令如下 uname -…...

文章预览 安防监控/视频存储/视频汇聚平台EasyCVR播放优化小tips
视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同,可实现视频监控直播、视频轮播、视频录像、云存储、回放与检索、智能告警、服务器集群、语音对讲、云台控制、电子地图、H.265自动转码H.264、平台级联等。为了便于用户二次开发、调用与集成,…...

Nand Flash的特性及烧录问题
目录 前言 一 Nand flash的特性 1 存储结构 2 OOB区域 3 位翻转 4 坏块及ECC 二 Nand系统裸片量产烧录 1 坏块处理策略 2 分区(Partition) 3 纠错码(Error Correction Codes,ECC) 4. 擦除坏块 🎈个人主页🎈:linux_嵌入式…...

【React 】useLayoutEffect 和 useEffect的区别
useLayoutEffect和useEffect是React中常用的两个Hook,它们的主要区别在于触发时机。 useEffect会在渲染完成后异步执行,不会阻塞浏览器的绘制操作。它适用于需要在组件渲染后执行副作用的情况,例如数据的获取、订阅事件等。它不会阻止屏幕更新…...

oracle数据库常见的优化步骤与脚本
要优化 Oracle 数据库的性能,可以按照以下步骤进行: 1. 性能分析和诊断:首先,使用 Oracle 提供的性能分析工具(如 AWR 报告、ASH 报告)对数据库进行分析和诊断。这些报告可以帮助您确定数据库的性能瓶颈和潜在问题。 2. 优化 SQL 查询语句:针对频繁执行的 SQL 查询语句…...

并发内存池(C++)
项目简介 这个项目是实现了一个高效的并发内存池。它的原型的goggle的一个开源项目tcmalloc,即thread-cache malloc(线程缓存的malloc),实现了高效多线程的内存管理,可实现对系统提供的内存分配函数malloc和free的替代…...

本地起一个VUE 前端项目
#安装 安装 Vue CLI 3: Vue CLI是一个用于创建和管理Vue项目的命令行工具 npm install -g vue/cli#查看更详细的告警信息 npm install -g vue/cli --verbose#检查项目的依赖关系 ,保持项目的依赖关系最新和安全 npm audit npm audit fix#查看版本 vue --version#创建…...

Python爬虫:Selenium的介绍及简单示例
Selenium是一个用于自动化Web应用程序测试的开源工具。它允许开发人员模拟用户在浏览器中的交互行为,以便自动执行各种测试任务,包括功能测试、性能测试和回归测试等。Selenium最初是为Web应用程序测试而创建的,但它也可用于Web数据抓取和其他…...

每日刷题|回溯法解决全排列问题第二弹之解决字符串、字母大小排列问题
食用指南:本文为作者刷题中认为有必要记录的题目 前置知识:回溯法经典问题之全排列 ♈️今日夜电波:带我去找夜生活—告五人 0:49 ━━━━━━️💟──────── 4:59 …...

python循环遍历字典: title_content_list.append([key, value])print(ti
示例示例Python循环遍历字典的方法有以下几种:使用for...in循环: Python循环遍历字典的方法有以下几种: 1. 使用for...in循环: python dict {name:Tom, age:20, gender:male} # 遍历所有的键 for key in dict:print(key) # 遍…...

Redis List类型命令 - Set类型命令 - SortedSet类型命令
目录 List类型 什么是双向链表呢? List类型的特征: List的常用命令 LPUSH和RPUSH的区别: LPOP和RPOP的区别: LPUSH和RPUSH的使用 LPOP和RPOP的使用 LRANGE key star end:返回一段距离范围内所有的元素 BLPOP…...

等级保护 —— 安全控制点,安全要求
等级保护 —— 安全控制点,安全要求 安全物理环境: 物理位置选择 a)机房场地应选择在具有防震、防风和防雨等能力的建筑内; 1)核查是否有建筑物抗震设防审批文档。2)核查是否有雨水渗漏的痕迹。3&#…...

nginx-缓存
disk cache:磁盘缓存数据,有时间延迟,但是非常小,相对于直接请求服务器返回 对于用户来说基本无感知。 memory cache:磁盘缓存数据,基本上没有时间延迟 协商缓存(nginx自带功能, 不…...

layui使用富文本已经使用第三方插件Kz.layedit来优化layui的富文本
官方提供的编辑器功能太少 没有字体颜色,不能传图片,视频等扩展 官方文档说的很清楚,简易的富文本使用layui提供的的确十分方便,但是缺少的元素很多。像什么标题,元素,等简单的都没有。小编我当初页为此苦…...

某公司二面面试题总结
你们公司开发遵守怎么样的代码规范? 当编写Java代码时,遵守良好的代码规范对于代码的可读性和可维护性至关重要。以下是一些更详细的Java代码规范建议: 命名规范: 类名应该采用名词或名词短语,使用驼峰命名法…...

Ubuntu编译运行socket.io
本篇文章记录一下自己在ubuntu上编译运行socket.io的过程,客户端选用的是socket.io的c的库,编译起来倒不难,但是说到运行的话,对我来说确实是花了点功夫。毕竟程序要能运行起来才能更方便地去熟悉代码,因此今天我就记录…...

h5开发网站-页面内容不够高时,如何定位footer始终位于页面的最底部
一、问题描述: 在使用h5开发页面时,会遇到这个情况:当整个页面高度不足以占满显示屏一屏,页脚不是在页面最底部,影响用户视觉。想让页脚始终在页面最底部,我们可能会想到用: 1.min-height来控…...

手机也可以搭建个人博客?安卓Termux+Hexo搭建属于你自己的博客网站【cpolar实现公网访问】
文章目录 前言 1.安装 Hexo2.安装cpolar3.远程访问4.固定公网地址 前言 Hexo 是一个用 Nodejs 编写的快速、简洁且高效的博客框架。Hexo 使用 Markdown 解析文章,在几秒内,即可利用靓丽的主题生成静态网页。 下面介绍在Termux中安装个人hexo博客并结合…...

Support for password authentication was removed on August 13, 2021 解决方案
打开你的github,Setting 点击Developer settings。 点击generate new token 按照需要选择scope 生成token,以后复制下来。 给git设置token样式的remote url git remote set-url origin https://你的tokengithub.com/你的git用户名/仓库名称.git然后就可…...

MPP 与 SMP 的区别,终于有人讲明白了【文末送书】
文章目录 导读01 SMP1. SMP 的典型特征2. SMP的优缺点 02 分布式MPP计算架构1. MPP 架构核心原理2. MPP 典型特征3. MPP优缺点 写作末尾 导读 当今数据计算领域主要的应用程序和模型可大致分为在线事务处理(On-line Transaction Processing ,OLTP&#…...

华为OD机试真题【寻找最大价值的矿堆】
1、题目描述 【寻找最大价值的矿堆】 给你一个由 ‘0’(空地)、’1’(银矿)、’2’(金矿)组成的的地图, 矿堆只能由上下左右相邻的金矿或银矿连接形成。超出地图范围可以认为是空地。 假设银矿…...

Java Maven 项目读取项目版本号
java读取 pom.xml 文件中设置的版本号 1. 在 src/main/resources/下新建 app.properties 文件: app.version${project.version} 2. 在pom.xml 中增加 <build> <resources> <resource> <directory>src/main/resources</di…...

Lesson4-1:OpenCV图像特征提取与描述---角点特征
学习目标 理解图像的特征知道图像的角点 1 图像的特征 大多数人都玩过拼图游戏。首先拿到完整图像的碎片,然后把这些碎片以正确的方式排列起来从而重建这幅图像。如果把拼图游戏的原理写成计算机程序,那计算机就也会玩拼图游戏了。 在拼图时ÿ…...

C++ 基础(一)题目练习
一、使用输出运算符输出一个长方形, 如下图所示: #include <iostream> using namespace std; int main() {cout << "*******" << endl;cout << "*******" << endl;cout << "*******"…...

Webpack5入门到原理
Webpack5学习 尚硅谷Webpack5新版视频教程 B站直达:https://www.bilibili.com/video/BV14T4y1z7sw 百度网盘:https://pan.baidu.com/s/114lJRGua2uHBdLq_iVLOOQ 提取码:yyds 阿里云盘:https://www.aliyundrive.com/s/UMkmCzdWsGh&…...

地形有通挂支隘险远六种情况
地形有通、挂、支、隘、险、远六种情况 【安志强趣讲《孙子兵法》第34讲】 第十一篇:地形篇 【全文大白话】 地形有各种情况,行军有各种情况,用好地形获得交战的主动权。 【原文】 孙子曰:地形有通者,有挂者࿰…...

C++多态案例-设计计算器类
1.前置知识点 多态是面向对象的三大特性之一 多态分为两类 静态多态:函数重载和运算符重载都属于静态多态,复用函数名动态多态:派生类和虚函数实现运行时多态 静态多态和动态多态的区别 静态多态的函数地址早绑定-----编译阶段确定函数地…...

复制tr的一行数据或者复制数据使用,使用jq和php
效果图: 2.Html <!--复制的tr数据,s----------------------------------------------------------------------------------------------->{foreach from$arrs keykk itemvv} <tr><td style"text-align:center;" >1</t…...

软件测试的基础(1)
程序员(开发) :编写程序代码(实现产品需求) 产品:收集并设计需求-需求文档(根据用户需求进行产品设计) UI设计师:设计界面,向外展示的形态 前端:用代码实现页面的显示 DBA:数据库设计(系统数据之间的关联) 运维:版本控制和发布、升级迭代,环境搭建和维护 客服:客户支持,…...

基于Java+SpringBoot+Vue前后端分离库存管理系统设计和实现
博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…...