Shawn's Blog

Linux 权限控制列表 ACL

0X00 ACL是什么 ACL的全称是Access Control List访问控制列表。在Linux中可以给文件设置权限,-rwx-rw-rw这样,但是这里并不能细分,只能分到用户、组、其他用户。如果我想给某个单独的用户设置权限的话是做不到的。所以有了ACL的出现。通过ACL可以给Linux下的文件提供详细的访问控制,比如我们在设置了基本的rwx权限之后,可以通过ACL在细分用户对文件的权限。 0X01 查看文件的ACL 使用getfacl命令可以查看文件的ACL和详细的权限设置。 这里显示了文件名、所属用户、所属组、还有相对应的权限。 0X02 创建测试用户/组/文件…

使用 nmcli 和 ip 命令配置 CentOS/RHEL 的网络

0X00 查看网络配置文件 在CentOS中网络是以配置文件的形式存在系统里的,在/etc/sysconfig/network-scripts/目录下,一般情况下网卡的配置文件都在这里了,以ifcfg-就是配置文件了,打开配置文件看一下。下面注释一下关键的配置项 但是一般不建议直接使用编辑器修改网络配置文件,因为这样容易出现一些语法错误和逻辑错误,所以建议使用命令行来管理配置网络,虽然本质上都是去修改配置文件。但是使用命令行去管理网络,命令都是确保配置没有问题才会写入到文件,所以会更加安全。包括下面介绍的ip和nmcli命令,都是通过修改配置文件来完成功能的。 0X01 ifconfig 命令 这个命令在CentOS7中已经不建议使用了,不过由于之前的版本都是在用这个命令,还是说一下。ifconfig是interface configuration的缩写,也就是接口配置。 查看网络 直接输入这个命令就可以看到现在启动着的所有网络。也可以接上某个特定的网卡来查看单独的信息ifconfig enp0s3 如果想查看包括已经关闭了的网络时,使用ifconfig -a就可以了…

Python 异常处理 捕获异常

0X00 什么是异常 程序在运行出错的时候就会抛出异常,异常时在正确的代码里发生的,不是代码出现了错误。下面就是一个异常 运行这个程序就会报出下面的错误,错误提示说在hello.py这个文件的第6行,出现了一个错误integer division or modulo by zero也就是说Python解释器发现你试图除以0或者试图用0取模。 这里提示的ZeroDivisionError就是一个异常,我们可以在后面捕获这个异常,然后进行一些处理。如果不捕获这个异常的话,程序运行到这里,异常就会直接抛出到用户界面,中断程序的运行。 0X01 自己放出一个异常 我们可以用raise抛出一个自己的异常,这样我们可以在调试程序的时候判断到底出了什么错误,通过抛出的异常信息就可以判断。 上面这段代码只是简单地输入name和age两个变量,合法的话就输出出来。我们这里运行一下试试 我们可以用这种方式在自己的代码中抛出异常,用来做中间值检测,防止中间的数据出现意外导致一些不可思议的后果。 0X02 捕获异常…

OpenSSH 配置 免密码登陆 公钥和私钥 私钥签名

0X00 安装OpenSSH 一般情况下我们的系统中都是自带SSH服务端和客户端的,万一没有的话就需要我们手动安装这个服务。 yum install -y openssh 然后重启OpenSSH服务 systemctl restart sshd 0X01 两行简单的配置 OpenSSH的配置文件在/etc/ssh/目录下,有两个配置文件,一个是针对服务端的一个是针对客户端的,我们只需要修改针对服务端的sshd_config即可。 配置文件里比较重要的两行是PermitRootLogin和PasswordAuthentication。 * PermitRootLogin 当这个值为yes时,才允许root用户使用ssh登陆 * PasswordAuthentication 当这个值为yes时,允许使用密码登陆,反之则拒绝密码登陆(只能使用密钥)。 这里的配置就允许使用root用户登陆,也允许输入密码登陆 0X02 私钥和公钥————非对称加密 在ssh中可以使用用户名密码的形式登陆,也可以使用密钥的形式登陆。 非对称加密 就是说加密和解密用的密码不同。非对称加密里有公钥 和私钥…

Shell编程入门笔记 新手教程

0X00 hello,world 从一本 _The C Programming Language_ 开始,我们就开始了几十年的'hello,world'之路。从那以后,机会所有的教程都从输出一句'hello,world'开始,这次也不例外。 这里的第一行是注释,这个注释是很特殊的,他会告诉系统我们使用哪个解释器来运行下面的代码,这里我们用的是/bin/bash,当然Python的代码就要加上#!/usr/bin/python。 第二行就是输出一句'hello,world'。echo就是输出语句。 运行脚本 执行之前要给脚本一个x权限,也就是执行权限。然后直接运行就行了。还有一种运行方式是/bin/bash test.sh 这样就是执行bash这个命令,将test.sh作为参数传进去,这样就可以不必写第一行的解释器声明。但是建议使用第一种方式执行脚本。 0X01 使用变量 既然是编程,那一定会有变量。Shell编程里的变量和C、Java不同,我们不需要声明一个变量就能直接赋值,想下面这样。 这里需要注意一点,我们在写一些代码的时候,可能习惯了像这样使用操作符str =…

Python 之面向对象

0X00 创建一个类 Python也是一个和C++、Java一样的面向对象编程语言,所以Python里也有类和对象。 在类中创建的方法使用def关键字定义,每个方法有一个或以上的参数,selft就是实例化的对象自己。需要返回值就return一个,不需要就可以不写return Python的类和Java的类还是有点区别,Java的类里主要写的是属性和方法,Python里不写属性,因为Java的变量需要定义而Python的变量并不需要定义,最多也就是在前面个各个属性一个变量名并赋初值 0X01 实例化一个对象 类是一个很抽象的概念,可以由类实例化好多个对象出来。Java中我们习惯说成 new一个对象,而Python中并不需要new 此段代码接着上面的类声明 0X02 Python的私有 Java和其他好多面向对象编程语言中会有一个private关键字,将属性和方法约束为私有的。然而Python并不能直接支持private,间接地支持也不是真正的private。在Python中的private由一种诡异的方式模拟,在方法前加上连续的两个下划线…

Python 字典

0X00 什么是字典 字典,顾名思义就是通过一个条件可以找到相应的值,字典由Key-Value组成。像是下面这样创建一个字典 字典中的数据是没有顺序的,不像列表一样有顺序,在字典中是没有固定顺序的 下文说的Key就是键, Value就是值 Key-Value 就是键值对,一个键对应着一个值 Key的值是可以随意改变的,但是Key的类型是固定的不能改变 如果为一个不存在的键赋值,那么会自动添加这个K-V 0X01 字典操作 len 测量长度 测量这个字典中有多少 d[k] 调用字典 根据已知的Key来查找Key所对应的Value d[k] = v 字典赋值 为某个特定的Key赋值,如果这个Key在字典中不存在则创建这个Key del d[k] 删除Key-Value 删除相应的Key和Value k in d 成员检查 检查某字典中是否存在某Key,成员检查时用的是Key而不是Value 0X02 字典的递归 字典中是Key-Value,然而字典的Value是可以是字典的,也就是Key-Value的Value是字典,也就是递归。…

Python 之序列:列表、元组

0X00 列表和元组 Python里有个东西叫做序列 ,可以想象成一堆数据。可以简单的通过序列实现数组、链表、栈和队列等数据结构。 序列有几种,常见的是列表和元组。 0X01 序列分片 我们可以从序列中截取一部分,这种操作被称为分片 分片的时候我们可以选择起始点和结束点,还能选择步长,甚至乃能倒序 分片使用:分隔开参数,一般情况下有两个参数,截取第一个参数到第二个参数,左开右闭 如果参数是负数的话,则表示倒数第几个 但是可以接受第三个参数,第三个参数表示步长。如果第二个参数是2那么就是接一跳一。 如果参数为空则表示极限。 具体可以看下面的代码 0X02 序列拼接 序列拼接就和Java里的字符串拼接差不多,可以单纯的用一个加号连在一起。当然Python比Java方便的一点就是,不只是字符串,什么东西只要是在序列里就能用序列拼接到一起。 Python中用加号的方式把序列拼接在一起是返回一个新的序列 而不是直接修改其中的一个序列。 序列不只能做加法,还能做乘法。序列乘n之后返回一个重复了n次的序列 0X03 空序列…

Python 之字符串

0X00 如何定义一个字符串 Python不需要定义 其实就是这样的。。在Python中的字符串通常这么写 str1 的声明方式是最普通的声明方式 str2 的声明方式可以在字符串中存在单引号‘ str3 的声明方式可以在字符串中存在双引号 “ 还能在字符串中换行 0X01 拼接字符串 注意: 连接的时候加号左右都要是字符串,如果是字符串加数字就不行了。除非把数字转成字符串格式 0X02 输入字符串 标准输入就是直接把你输入的东西写到代码里,甚至可以用变量名 原始输入就是直接输入字符串,纯字符串 具体情况可以从下面的Demo中看到效果 0X03 字符串格式化 学过C的能迅速的理解Python里的字符串格式化,没学过C的可以快速的理解Python里的字符串格式化 +_+ 0X04 字符串处理函数 find 字符串查找 从一个字符串中查找另一个字符串,返回最左端索引,找不到就返回 -1 如果find函数返回了0,并不是没找到,而是在0的位置找到了。毕竟程序员的世界从来都是从0开始数数的 join 连接 连接序列中的元素 注意这里是 str.join(list) 而不是…

Shadowsocks 如何科学上网 搭梯子 简明教程

0X00 准备工作 1.一台海外或者香港的服务器/虚拟主机(后面统称VPS),要有独立IP 2.VPS的带宽和流量不能太小 3.一个连接VPS的软件,LInux/Mac可以用终端,Windows用户可以用XShell或者putty 4.VPS要使用Linux系统,Debian/Ubuntu/CentOS都行 开工之前最好有Linux适用基础 没有VPS的推荐一个购买地址,便宜好用banwagong 这个网站不是官网,但是起到了类似中文官网的作用,可以按照里面的推荐和教程去购买适合自己的VPS VPS买回来不止可以干这个、配置高一点的话还可以搭建一个独立博客和一些其他的服务 0X01 简述工作原理 不通过伟大防火墙时 我们访问某网站,流量从我们的机器一路跑到网站服务器,然后服务器响应数据再一路跑回来。 现在 有了伟大的防火墙 不让我们和某些网站交流了,我们可以搭一个 梯子 ,让流量通过梯子。其实用 镜子 比喻会更好一点。 有了镜子 之后,我们的流量一路跑到镜子那里,镜子替我们将流量一路跑到网站服务器,然后网站服务器将数据一路发送到镜子,镜子再转发给我们。 所以造成下面几个问题:…