w1100n
This site is best viewed in Google Chrome
wiloon, 1/28/2020 17:40

sudo pacman -S aria2 # download a file aria2c https://xxx # Webui git clone https://github.com/ziahamza/webui-aria2.git buildah bud -f Dockerfile -t pingd/webui-aria2 . # run web-ui podman run \ -d \ -v aria-download:/data \ -p 6800:6800 \ -p 9100:8080 \ –name=”webui-aria2″ … Continue reading

wiloon, 1/26/2020 18:16

Root Android Q on Google Pixel 2, Google Pixel 线刷 android 10 安卓线刷升级 flash factory image for android device Enable USB Debugging mode Download MagiskManager apk 并安装 到手机 从第一步线刷升级用的镜像文件 里解压出boot.img, 传到手机 上的download目录 打开magisk mamanger, 点击 “未安装 Magisk” 后面的安装按钮, 在弹出的菜单中选择 “选择并修补一个文件 … Continue reading

wiloon, 1/26/2020 12:41

安装graphviz VS-Code扩展 使用PlantUML vim foo.md content @startuml [First component] [Another component] as Comp2 component Comp3 component [Last\ncomponent] as Comp4 @enduml vs code 快捷键 alt+d https://www.jianshu.com/p/ed0e979657f4

wiloon, 1/20/2020 18:07

sudo pacman -S buildah # buildah needs to run as root!!! # list all the images buildah images # list all containers buildah containers buildah run <container name> buildah run $container — dnf -y install java buildah rm $newcontainer buildah … Continue reading

wiloon, 1/19/2020 23:30

sudo pacman -S podman podman unshare cat /proc/self/uid_map unshare -U podman ps podman ps -f name=zookeeper podman ps -a –format “{{.ID}} {{.Names}}” podman ps -a podman inspect -l podman logs –latest podman top <container_id> podman container checkpoint <container_id> podman container … Continue reading

wiloon, 1/19/2020 0:17

Linux是一种安全操作系统,它给普通用户尽可能低的权限,而把全部的系统权限赋予一个单一的帐户–root。root帐户用来管理系统、安装软件、管理帐户、运行某些服务、安装/卸载文件系统、管理用户、安装软件等。另外,普通用户的很多操作也需要root权限,这通过setuid实现。 这种依赖单一帐户执行特权操作的方式加大了系统的面临风险,而需要root权限的程序可能只是为了一个单一的操作,例如:绑定到特权端口、打开一个 只有root权限可以访问的文件。某些程序可能有安全漏洞,而如果程序不是以root的权限运行,其存在的漏洞就不可能对系统造成什么威胁。 从2.1版开始,内核开发人员在Linux内核中加入了能力(capability)的概念。其目标是消除需要执行某些操作的程序对root帐户的依赖。从2.2版本的内核开始,这些代基本可以使用了,虽然还存在一些问题,但是方向是正确的。 2.Linux内核能力详解 传统UNIX的信任状模型非常简单,就是“超级用户对普通用户”模型。在这种模型中,一个进程要么什么都能做,要么几乎什么也不能做,这取决于进程 的UID。如果一个进程需要执行绑定到私有端口、加载/卸载内核模块以及管理文件系统等操作时,就需要完全的root权限。很显然这样做对系统安全存在很 大的威胁。UNIX系统中的SUID问题就是由这种信任状模型造成的。例如,一个普通用户需要使用ping命令。这是一个SUID命令,会以root的权 限运行。而实际上这个程序只是需要RAW套接字建立必要ICMP数据包,除此之外的其它root权限对这个程序都是没有必要的。如果程序编写不好,就可能 被攻击者利用,获得系统的控制权。 使用能力(capability)可以减小这种风险。系统管理员为了系统的安全可以剥夺root用户的能力,这样即使root用户也将无法进行某些 操作。而这个过程又是不可逆的,也就是说如果一种能力被删除,除非重新启动系统,否则即使root用户也无法重新添加被删除的能力。 3.权限说明 Capabilities的主要思想在于分割root用户的特权,即将root的特权分割成不同的能力,每种能力代表一定的特权操作。例如:能力CAP_SYS_MODULE表示用户能够加载(或卸载)内核模块的特权操作,而CAP_SETUID表示用户能够修改进程用户身份的特权操作。在Capbilities中系统将根据进程拥有的能力来进行特权操作的访问控制。 在Capilities中,只有进程和可执行文件才具有能力,每个进程拥有三组能力集,分别称为cap_effective, cap_inheritable, cap_permitted(分别简记为:pE,pI,pP),其中cap_permitted表示进程所拥有的最大能力集;cap_effective表示进程当前可用的能力集,可以看做是cap_permitted的一个子集;而cap_inheitable则表示进程可以传递给其子进程的能力集。系统根据进程的cap_effective能力集进行访问控制,cap_effective为cap_permitted的子集,进程可以通过取消cap_effective中的某些能力来放弃进程的一些特权。可执行文件也拥有三组能力集,对应于进程的三组能力集,分别称为cap_effective, cap_allowed 和 cap_forced(分别简记为fE,fI,fP),其中,cap_allowed表示程序运行时可从原进程的cap_inheritable中集成的能力集,cap_forced表示运行文件时必须拥有才能完成其服务的能力集;而cap_effective则表示文件开始运行时可以使用的能力。 Linux内核从2.2版本开始,就加进的Capabilities的概念与机制,并随着版本升高逐步得到改进。在linux中,root权限被分割成一下29中能力: CAP_CHOWN:修改文件属主的权限 CAP_DAC_OVERRIDE:忽略文件的DAC访问限制 CAP_DAC_READ_SEARCH:忽略文件读及目录搜索的DAC访问限制 CAP_FOWNER:忽略文件属主ID必须和进程用户ID相匹配的限制 CAP_FSETID:允许设置文件的setuid位 CAP_KILL:允许对不属于自己的进程发送信号 CAP_SETGID:允许改变进程的组ID CAP_SETUID:允许改变进程的用户ID CAP_SETPCAP:允许向其他进程转移能力以及删除其他进程的能力 CAP_LINUX_IMMUTABLE:允许修改文件的IMMUTABLE和APPEND属性标志 CAP_NET_BIND_SERVICE:允许绑定到小于1024的端口 CAP_NET_BROADCAST:允许网络广播和多播访问 CAP_NET_ADMIN:允许执行网络管理任务 CAP_NET_RAW:允许使用原始套接字 CAP_IPC_LOCK:允许锁定共享内存片段 CAP_IPC_OWNER:忽略IPC所有权检查 CAP_SYS_MODULE:允许插入和删除内核模块 CAP_SYS_RAWIO:允许直接访问/devport,/dev/mem,/dev/kmem及原始块设备 CAP_SYS_CHROOT:允许使用chroot()系统调用 … Continue reading

wiloon, 1/18/2020 17:16

Podman是该工具套件的核心,用来替换Docker中了大多数子命令(RUN,PUSH,PULL等)。Podman无需守护进程,使用用户命名空间来模拟容器中的root,无需连接到具有root权限的套接字保证容器的体系安全。 Podman专注于维护和修改OCI镜像的所有命令和功能,例如拉动和标记。它还允许我们创建,运行和维护从这些镜像创建的容器。 Buildah Buildah是套件中的Build工具,用来构建OCI镜像。虽然Podman也可以用户构建Docker镜像,但是构建速度超慢,并且默认情况下使用vfs存储驱动程序会消耗大量磁盘空间。 而buildah bud(使用Dockerfile构建)非常快,并使用覆盖存储驱动程序,可以节约大量的空间。 Skopeo Skopeo是套件中镜像管理工具,允许我们通过推,拉和复制镜像来处理Docker和OC镜像。 https://zhuanlan.zhihu.com/p/77373246

wiloon, 1/17/2020 16:34

# 查看版本 [root@osboxes java]# firewall-cmd –version 0.3.9 # 查看状态 [root@osboxes java]# systemctl status firewalld.service OR [root@osboxes java]# firewall-cmd –state running # 获取启用的zone [root@osboxes java]# firewall-cmd –get-active-zones public interfaces: eno16777984 # 查看指定区域中开放的端口和服务 firewall-cmd –zone=public –list-all # 不要忘记 –permanent [root@osboxes java]# firewall-cmd … Continue reading

wiloon, 1/13/2020 16:31

伪共享的非标准定义为:缓存系统中是以缓存行(cache line)为单位存储的,当多线程修改互相独立的变量时,如果这些变量共享同一个缓存行,就会无意中影响彼此的性能,这就是伪共享。 https://www.cnblogs.com/cyfonly/p/5800758.html

wiloon, 1/12/2020 15:22

set 1 bios_grub on pacman -S grub grub-install –target=i386-pc /dev/sdX grub-mkconfig -o /boot/grub/grub.cfg

wiloon, 1/12/2020 14:51

tune2fs命令 一.简介: tune2fs用来调整和查看ext2/ext3(现在有ext4了)文件系统的文件系统参数,Windows平台如果出现意外断电死机情况,下次开机一般都会出现系统自检。Linux系统当然也有文件系统自检,而且是可以通过tune2fs命令,自行定义自检周期及方式。 二.用法: 自己去man吧,man man,更健康。。。 常用选项说明: -l 查看文件系统信息 -c max-mount-counts 设置强制自检的挂载次数,如果开启,每挂载一次mount conut就会加1,超过次数就会强制自检 -i interval-between-checks[d|m|w] 设置强制自检的时间间隔[d天m月w周] -m reserved-blocks-percentage 保留块的百分比 -j 将ext2文件系统转换为ext3类型的文件系统 -L volume-label 类似e2label的功能,可以修改文件系统的标签 -r reserved-blocks-count 调整系统保留空间 -o [^]mount-option[,…] Set or clear the indicated default mount options in the filesystem. … Continue reading

wiloon, 1/11/2020 17:30

找到super block 备份 #查看文件系统备份Superblock mke2fs -n /dev/sdb #查看文件系统备份Superblock dumpe2fs /dev/sdb1 | grep –before-context=1 superblock arch# dumpe2fs /dev/sdb1 | grep –before-context=1 superblock dumpe2fs 1.45.5 (07-Jan-2020) Group 0: (Blocks 0-32767) csum 0xb451 [ITABLE_ZEROED] Primary superblock at 0, Group descriptors at 1-38 — … Continue reading

wiloon, 1/11/2020 14:04

ansible-pull 该指令的使用涉及Ansible的另一种工作模式:pull模式(Ansible默认使用push模式)。这和通常使用的push模式工作机理刚好相反,其适用于以下场景:①你有数量巨大的机器需要配置,即使使用高并发线程依旧要花费很多时间;②你要在刚启动的、没有网络连接的主机上运行Anisble。 ansible-pull命令使用格式如下: ansible-pull [options] [playbook.yml] 通过ansible-pull结合Git和crontab一并实现,其原理如下:通过crontab定期拉取指定的Git版本到本地,并以指定模式自动运行预先制订好的指令。 具体示例参考如下: */20 * * * * root /usr/local/bin/ansible-pull -o -C 2.1.0 -d /srv/www/king-gw/ -i /etc/ansible/hosts -U git:// git.kingifa.com/king-gw-ansiblepull >> /var/log/ansible-pull.log 2>&1 ansible-pull通常在配置大批量机器的场景下会使用,灵活性稍有欠缺,但效率几乎可以***提升,对运维人员的技术水平和前瞻性规划有较高要求。

wiloon, 1/10/2020 15:45

概述 经常需要使用java对象的属性来封装程序的数据,每次都使用反射技术完成此类操作过于麻烦,所以sun公司开发了一套API,专门用于操作java对象的属性。 内省(IntroSpector)是Java语言对JavaBean 类属性、事件的一种处理方法。 例如类A中有属性name,那我们可以通过getName,setName 来得到其值或者设置新的值。 通过getName/setName 来访问name属性,这就是默认的规则。 Java中提供了一套API 用来访问某个属性的getter/setter方法,通过这些API可以使你不需要了解这个规则,这些API存放于包java.beans 中。 一般的做法是通过类Introspector的getBeanInfo方法获取某个对象的BeanInfo信息,然后通过BeanInfo来获取属性的描述器(PropertyDescriptor),通过这个属性描述器就可以获取某个属性对应的getter/setter方法,然后我们就可以通过反射机制来调用这些方法。 我们又通常把javabean的实例对象称之为值对象,因为这些bean中通常只有一些信息字段和存储方法,没有功能性方法。 一个JavaBean类可以不当JavaBean用,而当成普通类用。JavaBean实际就是一种规范,当一个类满足这个规范,这个类就能被其它特定的类调用。一个类被当作javaBean使用时,JavaBean的属性是根据方法名推断出来的,它根本看不到java类内部的成员变量。去掉set前缀,然后取剩余部分,如果剩余部分的第二个字母是小写的,则把剩余部分的首字母改成小的。 内省访问JavaBean有两种方法: 通过PropertyDescriptor来操作Bean对象 public static void demo1() throws Exception { User user = new User(“zhangsan”, 21); String propertyName = “name”; // 直接指定要访问的属性 PropertyDescriptor pd = new PropertyDescriptor(propertyName, … Continue reading

wiloon, 1/9/2020 10:27

JUnit5的第一个可用性版本是在2017年9月10日发布的。 JUnit5架构 相比JUnit4,JUnit5由三个不同的子项目及不同的模块组成。 JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage JUnit Platform 启动Junit测试、IDE、构建工具或插件都需要包含和扩展Platform API,它定义了TestEngine在平台运行的新测试框架的API。 它还提供了一个控制台启动器,可以从命令行启动Platform,为Gradle和Maven插件提供支持。 JUnit Jupiter 它用于编写测试代码的新的编程和扩展模型。它具有所有新的Junit注释和TestEngine实现来运行这些注释编写的测试。 JUnit Vintage 它主要的目的是支持在JUnit5的测试代码中运行JUnit3和4方式写的测试,它能够向前兼容之前的测试代码。 https://tonydeng.github.io/2017/10/09/junit-5-tutorial-introduction/ 安装 你可以在Maven或Gradle项目中使用JUnit5,包含最小的两个依赖关系,即junit-jupiter-engince和junit-platform-runner。 <properties> <junit.jupiter.version>5.5.2</junit.jupiter.version> <junit.platform.version>1.5.2</junit.platform.version> </properties> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-engine</artifactId> <version>${junit.jupiter.version}</version> </dependency> <dependency> <groupId>org.junit.platform</groupId> <artifactId>junit-platform-runner</artifactId> … Continue reading

wiloon, 1/2/2020 0:26

在Linux上写shell脚本的一个很重要的意图是自动化。假如我们希望自动生成一个具有特定内容的文本文件,应该怎么实现呢? 我用过两个方法,下面分别举例说明。为了更通用,这两个例子中的文本内容都是多行的。 使用echo命令 echo “Hello, World! My name is Shengbin.” > readme.txt 这种方法其实就是把echo的输出重定向到了文件。echo会原样保留换行符,所以多行也是支持的。 使用cat命令 cat > readme.txt << EOF Hello, World! My name is Shengbin. EOF 上面的END_TEXT是一个自定义的标识符,二者之间的文本将被认为是一个文件的内容,这个文件作为cat > readme.txt的输入参数。 这是一种被称为here document的技术。 这种方法有一点优势就是在脚本里写的文本内容的格式与想要呈现在文本文件中的一模一样。上一种方法则要求内容的第一行必须在echo的同一行。 区分单引号与双引号 Shell中双引号之间的内容会被进行变量展开和命令执行,如果想原样保留文本字符串,应该使用单引号(这种单双引号的区分在别的语言里也有,如PHP、Perl之类的脚本语言)。 例如: echo “Your working directory can … Continue reading

辽ICP备14012896