ACL (Access Control List)

ACL (Access Control List) https://www.cnblogs.com/sparkdev/p/5536868.html ACL的全称是 Access Control List (访问控制列表) ,一个针对文件/目录的访问控制列表。它在UGO权限管理的基础上为文件系统提供一个额外的、更灵活的权限管理机制。它被设计为UNIX文件权限管理的一个补充。ACL允许你给任何的用户或用户组设置任何文件/目录的访问权限。 setfacl 命令可以用来细分linux下的文件权限。 chmod 命令可以把文件权限分为 u,g,o三个组, 而 setfacl可以对每一个文件或目录设置更精确的文件权限。 换句话说, setfacl 可以更精确的控制权限的分配。 比如: 让某一个用户对某一个文件具有某种权限。 这种独立于传统的u,g,o的rwx权限之外的具体权限设置叫ACL (Access Control List) ACL 可以针对单一用户、单一文件或目录来进行r,w,x的权限控制,对于需要特殊权限的使用状况有一定帮助。 如,某一个文件,不让单一的某个用户访问。 setfacl 参数 Usage: setfacl [-bkndRLP] { -m|-M|-x|-X … } file … -m, -modify=acl modify the current ACL(s) of file(s) -M, -modify-file=file read ACL entries to modify from file -x, -remove=acl remove entries from the ACL(s) of file(s) -X, -remove-file=file read ACL entries to remove from file ...

2019-01-19 · 2 min · 343 words · -

ss command

ss command ss, Socket Statistics ss -ntlp ss -ntp ss -nxlp ss -nxp sudo ss -tuln6 | grep ':53' ss 是 Socket Statistics 的缩写。ss 命令可以用来获取 socket 统计信息,它显示的内容和 netstat 类似。但 ss 的优势在于它能够显示更多更详细的有关 TCP 和连接状态的信息,而且比 netstat 更快。当服务器的 socket 连接数量变得非常大时,无论是使用 netstat 命令还是直接 cat /proc/net/tcp,执行速度都会很慢。ss 命令利用到了 TCP 协议栈中 tcp_diag。tcp_diag 是一个用于分析统计的模块,可以获得 Linux 内核中第一手的信息,因此 ss 命令的性能会好很多。 常用选项 -h, –help 帮助 -V, –version 显示版本号 -t, –tcp 显示 TCP 协议的 sockets -u, –udp 显示 UDP 协议的 sockets -x, –unix 显示 unix domain sockets,与 -f 选项相同 -n, –numeric 不解析服务的名称,如 “22” 端口不会显示成 “ssh” -l, –listening 只显示处于监听状态的端口 -p, –processes 显示监听端口的进程(Ubuntu 上需要 sudo) -a, –all 对 TCP 协议来说,既包含监听的端口,也包含建立的连接 -r, –resolve 把 IP 解释为域名,把端口号解释为协议名称 ...

2019-01-08 · 6 min · 1243 words · -

shell 状态代码

shell 状态代码 https://blog.csdn.net/hongkangwl/article/details/16184883 Linux提供 $? 特殊变量来保存最后一条命令执行结束的退出状态。执行完一条命令后,立即执行 echo $?, 可以查看最后一条命令的退出状态值。 正常的情况下,命令成功执行完成的退出状态是0,如果非0,则命令执行有错。 该命令可以用于检查命令是否正确执行,比如在解压包的时候,检查解压包是否成功十分有效。 自定义退出状态码,可以在脚本中定义自己的退出状态代码,然后使用 echo $? 检查。 退出状态码最高是255,一般自定义的代码值为0~255,如果超出255,则返回该数值被256除了之后的余数。 shell 退出状态代码 0 命令成功完成 1 通常的未知错误 2 误用 shell 命令 126 命令无法执行 127 没有找到命令 128 无效的退出参数 128+x 使用Linux信号x的致命错误。 130 使用Ctrl-C终止的命令 255 规范外的退出状态 作者: 王伴农 来源: CSDN 原文: https://blog.csdn.net/hongkangwl/article/details/16184883 版权声明: 本文为博主原创文章,转载请附上博文链接!

2019-01-07 · 1 min · 46 words · -

java Keytool

java Keytool keytool -list -v -keystore /usr/java/default/jre/lib/security/cacerts sudo /usr/lib/jvm/java-8-openjdk/bin/keytool -importcert -keystore /usr/lib/jvm/java-8-openjdk/jre/lib/security/cacerts -storepass changeit -noprompt -file xxx.crt -alias "xxx.crt" # jdk 导入 证书 keytool.exe -importcert -keystore "C:\Program Files\Java\jdk1.8.0_201\jre\lib\security\cacerts" -storepass changeit -noprompt -file E:\xxx.cer -alias "xxx" Keytool 是一个Java 数据证书的管理工具 ,Keytool 将密钥 (key) 和证书 (certificates) 存在一个称为keystore的文件中 在keystore里,包含两种数据: 密钥实体 (Key entity) ——密钥 (secret key) 又或者是私钥和配对公钥 (采用非对称加密) 可信任的证书实体 (trusted certificate entries) ——只包含公钥 ailas(别名)每个keystore都关联这一个独一无二的alias,这个alias通常不区分大小写 JDK中keytool 常用命令: param comments -genkey 在用户主目录中创建一个默认文件".keystore",还会产生一个mykey的别名,mykey中包含用户的公钥、私钥和证书 -alias 产生别名 -keystore 指定密钥库的名称(产生的各类信息将不在.keystore文件中) -keysize 指定密钥长度 -validity 指定创建的证书有效期多少天 -keyalg 指定密钥的算法 (如 RSA DSA (如果不指定默认采用DSA) ) -dname 指定证书拥有者信息 例如: “CN=名字与姓氏,OU=组织单位名称,O=组织名称,L=城市或区域名称,ST=州或省份名称,C=单位的两字母国家代码” -keypass 指定别名条目的密码(私钥的密码) -storepass 指定密钥库的密码(获取keystore信息所需的密码) -list 显示密钥库中的证书信息 -v 显示密钥库中的证书详细信息 -export 将别名指定的证书导出到文件 -printcert 查看导出的证书信息 -file 参数指定导出到文件的文件名 -import 将已签名数字证书导入密钥库, keytool -import -alias 指定导入条目的别名 -keystore 指定keystore -file 需导入的证书

2019-01-06 · 1 min · 108 words · -

SSL/TLS 握手过程

SSL/TLS 握手过程 Client Hello 握手第一步是客户端向服务端发送 Client Hello 消息,这个消息里包含了一个客户端生成的随机数 Random1、客户端支持的加密套件 (Support Ciphers) 和 SSL Version 等信息。通过 Wireshark 抓包,我们可以看到如下信息: Wireshark 抓包的用法可以参考这篇文章: https://segmentfault.com/a/1190000018746027 Server Hello 第二步是服务端向客户端发送 Server Hello 消息,这个消息会从 Client Hello 传过来的 Support Ciphers 里确定一份加密套件,这个套件决定了后续加密和生成摘要时具体使用哪些算法,另外还会生成一份随机数 Random2。注意,至此客户端和服务端都拥有了两个随机数 (Random1+ Random2) ,这两个随机数会在后续生成对称秘钥时用到。 Certificate 这一步是服务端将自己的证书下发给客户端,让客户端验证自己的身份,客户端验证通过后取出证书中的公钥。 Server Key Exchange 如果是DH算法,这里发送服务器使用的DH参数。RSA算法不需要这一步。 Certificate Request Certificate Request 是服务端要求客户端上报证书,这一步是可选的,对于安全性要求高的场景会用到。 Server Hello Done Server Hello Done 通知客户端 Server Hello 过程结束。 Certificate Verify 客户端收到服务端传来的证书后,先从 CA 验证该证书的合法性,验证通过后取出证书中的服务端公钥,再生成一个随机数 Random3,再用服务端公钥非对称加密 Random3 生成 PreMaster Key。 Client Key Exchange 上面客户端根据服务器传来的公钥生成了 PreMaster Key,Client Key Exchange 就是将这个 key 传给服务端,服务端再用自己的私钥解出这个 PreMaster Key 得到客户端生成的 Random3。至此,客户端和服务端都拥有 Random1 + Random2 + Random3,两边再根据同样的算法就可以生成一份秘钥,握手结束后的应用层数据都是使用这个秘钥进行对称加密。为什么要使用三个随机数呢?这是因为 SSL/TLS 握手过程的数据都是明文传输的,并且多个随机数种子来生成秘钥不容易被暴力破解出来。客户端将 PreMaster Key 传给服务端的过程如下图所示: ...

2019-01-06 · 1 min · 193 words · -

数字签名、数字证书与 PKI 系统

数字签名、数字证书与 PKI 系统 https://www.jianshu.com/p/ffe8c203a471 摘要算法 除了加密算法,摘要算法在互联网安全体系中也扮演了重要的角色。摘要算法有以下特性: 只要源文本不同,计算得到的结果,必然不同 (或者说机会很少) 。 无法从结果反推出源数据。 基于以上特性,我们一般使用摘要算法来校验原始内容是否被篡改。常见的摘要算法有 MD5、SHA 等。 Tips: 摘要算法不能算作加密算法,加密算法需要使用秘钥加解密,但摘要算法无法根据结果反推出内容。另外 MD5 目前也不算安全了,例如彩虹表攻击。 数字证书 数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件。 数字证书里一般会包含公钥、公钥拥有者名称、CA 的数字签名、有效期、授权中心名称、证书序列号等信息。 数字证书如何确保列出的用户就是公钥的拥有者呢?关键点是 CA 的数字签名,CA会用自己的私钥将证书内容的摘要进行加密。因为 CA 的公钥是公开的,任何人都可以用公钥解密出 CA 的数字签名的摘要,再用同样的摘要算法提取出证书的摘要和解密 CA 数字签名后的摘要比对,一致则说明这个证书没有被篡改过,可以信任。 http://blog.wiloon.com/?p=3655 PKI PKI (Public Key Infrastructure) 翻译过来就是公钥基础设施,可以理解为利用公钥技术为网络应用提供加密和数字签名等密码服务以及必需的密钥和证书管理体系。它是一个提供安全服务的基础设施,PKI 技术是信息安全技术的核心,同时也是电子商务的关键和基础技术。 PKI 既不是一个协议,也不是一个软件,它是一个标准,在这个标准之下发展出的为了实现安全基础服务目的的技术统称为 PKI。 PKI是一个标准,它包括一些基本的组件,不同的组件提供不同的服务,主要由一下几个组件组成: 认证中心 CA(证书签发): CA 机构,又称为证书授证 (Certificate Authority) 中心,是 PKI 的"核心",即数字证书的申请及签发机关,CA 必须具备权威性的特征,它负责管理 PKI 结构下的所有用户(包括各种应用程序)的证书,把用户的公钥和用户的其他信息捆绑在一起,在网上验证用户的身份,CA 还要负责用户证书的黑名单登记和黑名单发布。 X.500目录服务器(证书保存): X.500目录服务器用于"发布"用户的证书和黑名单信息,用户可通过标准的 LDAP 协议查询自己或其他人的证书和下载黑名单信息。 具有高强度密码算法(SSL)的安全 WWW 服务器(即配置了 HTTPS 的apache): Secure socket layer(SSL)协议最初由 Netscape 企业发展,现已成为网络用来鉴别网站和网页浏览者身份,以及在浏览器使用者及网页服务器之间进行加密通讯的全球化标准。 Web(安全通信平台): Web 有 Web Client 端和 Web Server 端两部分,分别安装在客户端和服务器端,通过具有高强度密码算法的 SSL 协议保证客户端和服务器端数据的机密性、完整性、身份验证。 ...

2019-01-06 · 1 min · 82 words · -

golang tcp tls

golang tcp tls https://colobu.com/2016/06/07/simple-golang-tls-examples/ 生成TLS证书 http://blog.wiloon.com/?p=12962 server package main import ( "bufio" "crypto/tls" "log" "net" ) func main() { cert, err := tls.LoadX509KeyPair("certs/server.pem", "certs/server.key") if err != nil { log.Println(err) return } config := &tls.Config{Certificates: []tls.Certificate{cert}} address := ":8443" log.Println("listening: ", address) ln, err := tls.Listen("tcp", address, config) if err != nil { log.Println(err) return } defer ln.Close() for { conn, err := ln.Accept() if err != nil { log.Println(err) continue } go handleConn(conn) } } func handleConn(conn net.Conn) { defer conn.Close() r := bufio.NewReader(conn) for { msg, err := r.ReadString('\n') if err != nil { log.Println(err) return } println(msg) n, err := conn.Write([]byte("world\n")) if err != nil { log.Println(n, err) return } } } client package main import ( "crypto/tls" "log" ) func main() { conf := &tls.Config{ InsecureSkipVerify: true, } conn, err := tls.Dial("tcp", "127.0.0.1:8443", conf) if err != nil { log.Println(err) return } defer conn.Close() n, err := conn.Write([]byte("hello\n")) if err != nil { log.Println(n, err) return } buf := make([]byte, 100) n, err = conn.Read(buf) if err != nil { log.Println(n, err) return } println(string(buf[:n])) }

2019-01-05 · 1 min · 180 words · -

newifi 3

newifi 3 newifi 3 处理器 MT7621A, mipsle 32M的ROM 512M的RAM 1个USB3.0接口 双频无线 一个千兆WAN口、 4个千兆LAN口 https://www.right.com.cn/forum/forum.php?mod=viewthread&tid=341067&highlight=newifi%2Bd2%2Bopenwrt https://github.com/coolsnowwolf/lede https://downloads.openwrt.org/releases/18.06.1/targets/ramips/mt7621/

2019-01-03 · 1 min · 16 words · -

kde lock screen

kde lock screen shortcut Go to “System Settings” (KDE menu). Workspace>Workspace Behavior>Screen Locking>Activation>Keyboard shortcut config https://askubuntu.com/questions/783184/how-to-display-kde-lock-screen-time-in-24-hour-format

2019-01-03 · 1 min · 16 words · -

newifi breed

newifi breed https://www.right.com.cn/forum/thread-342918-1-1.html 开启固件 SSH a) 开启路由器,进入管理界面 (假设路由器 IP 地址是 192.168.99.1) b) 在浏览器中输入 http://192.168.99.1/newifi/ifiwen_hss.html 并进入 c) 页面显示 success 即表明已开启 SSH 进入路由器 SSH 环境 上传解锁文件到路由器 a) 下载附件,解压得到 newifi-d2-jail-break.ko b) 用 WinSCP 等工具将其上传到路由器的 /tmp 目录 c) 或者用 HFS 搭建本地 HTTP 服务器,并在 SSH 里用 wget 命令下载 d) 或者用 tftpd32/tftpd64 搭建本地 TFTP 服务器,并在 SSH 里用 tftp 命令下载 e) 用 U 盘当然也行 开始解锁 a) SSH 进入 /tmp 目录 cd /tmp b) 加载 newifi-d2-jail-break.ko insmod newifi-d2-jail-break.ko c) 此时 SSH 会停止响应,因为 newifi-d2-jail-break.ko 会冻结系统的其他功能,强制写入 Newifi D2 专用版 Breed 到 Flash d) 成功后路由器会自动重启。断电后按复位健/USB键开机均可进入 Breed ...

2019-01-02 · 1 min · 112 words · -

systemd-networkd, TAP

systemd-networkd, TAP 手动创建 tap 开机自动创建 tap 手动创建 tap0 sudo ip tuntap add dev tap0 mode tap # set ip sudo ip addr add 192.168.60.1/24 dev tap0 # tap up sudo ip link set tap0 up # --- ## delete ip from tap0 sudo ip addr del 192.168.60.1/24 dev tap0 启动时由 systemd 自动创建 tap0 sudo vim /etc/systemd/network/90-tap0.netdev [NetDev] Description=description0 Name=tap0 Kind=tap sudo vim /etc/systemd/network/tap.network [Match] Name=tap0 [Link] MACAddress=5a:70:70:48:7f:50 https://www.freedesktop.org/software/systemd/man/systemd.netdev.html https://www.freedesktop.org/software/systemd/man/systemd.network.html

2019-01-01 · 1 min · 69 words · -

raspberry pi 3B

raspberry pi 3B Raspberry Pi 3 Specifications SoC: Broadcom BCM2837 CPU: 4× ARM Cortex-A53, 1.2GHz GPU: Broadcom VideoCore IV - arm 32bit RAM: 1GB LPDDR2 (900 MHz) Networking: 10/100 Ethernet, 2.4GHz 802.11n wireless Bluetooth: Bluetooth 4.1 Classic, Bluetooth Low Energy Storage: microSD GPIO: 40-pin header, populated Ports: HDMI, 3.5mm analogue audio-video jack, 4× USB 2.0, Ethernet, Camera Serial Interface (CSI), Display Serial Interface (DSI)

2018-12-31 · 1 min · 64 words · -

LLMNR

LLMNR https://www.jianshu.com/p/bfcc437a738e 什么是LLMNR 在DNS 服务器不可用时, DNS 客户端计算机可以使用本地链路多播名称解析 (LLMNR—Link-Local Multicast Name Resolution) (也称为多播 DNS 或 mDNS) 来解析本地网段上的名称。例如, 如果路由器出现故障, 从网络上的所有 DNS 服务器切断了子网, 则支持 LLMNR 的子网上的客户端可以继续在对等基础上解析名称, 直到网络连接还原为止。 LLMNR (本地链路组播名称解析) 在DNS服务器不可用时,DNS 客户端计算机可以使用本地链路组播名称解析,通过UDP发送到组播地址224.0.0.252:5355,来解析本地网段上的名称,使用的也是普通DNS的数据包格式。类似的另一种协议是mDNS (组播DNS) ,通过UDP协议发送到组播地址224.0.0.251:5353,用于家庭局域网等小型网络。 LLMNR 为使用 IPv4、IPv6 或者同时使用这两种地址的设备提供了点对点名称解析服务, 可以让同一子网中的 IPv4 和 IPv6 设备不需要 WINS 或 DNS 服务器就可以解析对方的名称。 例如,如果路由器出现故障,从网络上的所有 DNS 服务器切断了子网,则支持 LLMNR 的子网上的客户端可以继续在对等基础上解析名称,直到网络连接还原为止。除了在网络出现故障的情况下提供名称解析以外,LLMNR 在建立临时对等网络方面也非常有用。 除了在网络出现故障的情况下提供名称解析以外,LLMNR 在建立临时对等网络 (例如,机场候机区域) 方面也非常有用。 LLMNRs 工作过程 主机在自己的内部名称缓存中查询名称。如果在缓存中没有找到了名称,那么主机就会向自己配置的主DNS服务器发送查询请求。如果主机没有收到回应或收到了错误信息,主机还会尝试搜索配置的备用DNS服务器。如果主机没有配置DNS服务器,或者如果在连接DNS服务器的时候没有遇到错误但失败了,那么名称解析会失败,并转为使用LLMNR。 主机通过用户数据报协议(UDP)发送多播查询,查询主机名对应的IP地址,这个查询会被限制在本地子网(也就是所谓的链路局部)内。 链路局部范围内每台支持LLMNR,并且被配置为响应传入查询的主机在收到这个查询请求后,会将被查询的名称和自己的主机名进行比较。如果没有找到匹配的主机名,那么计算机就会丢弃这个查询。如果找到了匹配的主机名,这台计算机会传输一条包含了自己IP地址的单播信息给请求该查询的主机。

2018-12-30 · 1 min · 58 words · -

idea 插入当前日期,insert current datetime

idea 插入当前日期,insert current datetime 安装 idea 插件 进入配置页面: File>setting>Plugins 搜索: Current date generator 安装插件并重启idea 设置 快捷键 setting>keymap>plugin>…date…generator https://plugins.jetbrains.com/plugin/9722-current-date-generator

2018-12-28 · 1 min · 18 words · -

linux comm, 两个文件的共同部分或者差异部分

linux comm, 两个文件的共同部分或者差异部分 两个文件的共同部分或者差异部分 1 comm 命令 在我们的开发和运营中,特别是对业务进行监控的时候,我们常常需要写一些监控shell脚本,而这些脚本需要求两个文件的共同的记录列表或者只出现在第一个文件但不出现在第二个文件的记录列表的场景,此时,comm命令则是您解决此类问题的利器和助手。 随意man comm下,可以在linux下看到该命令的使用方法: NAME comm - compare two sorted files line by line SYNOPSIS comm [OPTION]… FILE1 FILE2 DESCRIPTION Compare sorted files FILE1 and FILE2 line by line. With no options, produce three-column output. Column one contains lines unique to FILE1, column two contains lines unique to FILE2, and column three contains lines common to both files. -1 suppress lines unique to FILE1 -2 suppress lines unique to FILE2 -3 suppress lines that appear in both files --help display this help and exit --version output version information and exit 上面是英文说明,下面简单的说明如下: 一,利用comm命令进行处理的文件必须首先通过sort命令进行排序处理并且是unix格式而非dos格式的文本文件; 二,中文说明如下: 功能说明: 比较两个已排过序的文件。 (使用sort排序) ...

2018-12-28 · 3 min · 509 words · -

kafka, celery

kafka, celery 消息队列(kafka/nsq等)与任务队列(celery/ytask等)到底有什么不同? 消息队列和任务队列,最大的不同之处就在于理念的不同 – 消息队列传递的是“消息”,任务队列传递的是“任务”。 消息队列用来快速消费队列中的消息。比如日志处理场景,我们需要把不同服务器上的日志合并到一起,这时就需要用到消息队列。 任务队列是用来执行一个耗时任务。比如用户在购买的一件物品后,通常需要计算用户的积分以及等级,并把它们保存到数据库。这时就需要用到任务队列。 从上面的例子可看出: 消息队列更侧重于消息的吞吐、处理,具有有处理海量信息的能力。另外利用消息队列的生长者和消费者的概念,也可以实现任务队列的功能,但是还需要进行额外的开发。 任务队列则提供了执行任务所需的功能,比如任务的重试,结果的返回,任务状态记录等。虽然也有并发的处理能力,但一般不适用于高吞吐量快速消费的场景。 任务队列其实和远程函数调用差不多,但和thrift、grpc什么不同,它不需要定义描述文件,调用的方式也不是网络请求方式,而是利用消息队列传递任务信息。 因此可以简单认为任务队列就是消息队列在异步任务场景下的深度化定制开发。 转载于:https://my.oschina.net/u/3834410/blog/3101841

2018-12-27 · 1 min · 14 words · -

raspberry pi networking to systemd-networkd

raspberry pi networking to systemd-networkd https://raspberrypi.stackexchange.com/questions/78787/howto-migrate-from-networking-to-systemd-networkd-with-dynamic-failover vim /etc/resolvconf.conf # Set to NO to disable resolvconf from running any subscribers. Defaults to YES. resolvconf=NO systemctl disable networking systemctl disable dhcpcd systemctl enable systemd-networkd systemctl enable systemd-resolved ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf vim /etc/systemd/network/eth0.network [Match] Name=eth0 [Network] DHCP=yes apt install deborphan apt --autoremove purge openresolv apt --autoremove purge ifupdown apt --autoremove purge dhcpcd5 apt --autoremove purge isc-dhcp-client isc-dhcp-common apt --autoremove purge $(deborphan) apt --autoremove purge $(deborphan) #two times

2018-12-26 · 1 min · 75 words · -

VIM 列编辑

VIM 列编辑 VIM的列编辑操作 插入列 插入操作的话知识稍有区别。例如我们在每一行前都插入"() " 光标定位到要操作的地方。 CTRL+v 进入"可视块" 模式, 选取这一列操作多少行。 SHIFT+i(I) 然后输入要插入的内容。此时输入的内容只会出现在光标所在的行. ESC 按两次, 会在每行的选定的区域出现插入的内容。 删除列 光标定位到要操作的地方。 CTRL+v 进入"可视 块"模式,选取这一列操作多少行。 d 删除。 https://www.cnblogs.com/xiaowant/articles/1992923.html

2018-12-25 · 1 min · 24 words · -

raspberry pi disable ipv6

raspberry pi disable ipv6 /etc/modprobe.d/ipv6.conf alias net-pf-10 off alias ipv6 off options ipv6 disable_ipv6=1 blacklist ipv6 Disable IPv6 on Raspberry Pi3+ https://www.cesareriva.com/disable-ipv6-on-raspberry-pi3/embed/#?secret=RVErZNYd3W

2018-12-24 · 1 min · 22 words · -

raspberry pi mac spoofing

raspberry pi mac spoofing vim cmdline.txt smsc95xx.macaddr=XX:XX:XX:XX:XX:XX https://pimylifeup.com/raspberry-pi-mac-address-spoofing/

2018-12-24 · 1 min · 8 words · -