命令模式

我的linux学习之路(第七节)

你。 提交于 2020-02-29 16:26:00
===接第六节=== ( 五)文件的特殊权限 chmod -R + 权限 文件或目录赋予权限 //权限=数值 chmod -R - 权限 文件或目录减少权限 //权限=数值 chown -R 所有者:所属组 文件或目录 //指定文件或目录的所有者及所属组 参数:-R表示对目录执行递归操作。 1 、SUID SUID 是一种对Linux系统内置或开发的二进制程序或命令添加所有者位具有特殊权限s的命令,让二进制程序或命令的执行者(普通用户)临时拥有属主(所有者)的权限(仅对拥有执行权限的二进制程序或命令有效)。 命令格式:chmod u+s 命令或程序 说明:命令执行后二进制程序或命令所有者的权限由rwx中的x变成了s,原先权限位上没有x执行权限的被赋予特殊权限后将变成大写的S。 举例1: // 查 看 passwd 程序 权 限 为 -rwxr-xr-x ,passwd 没 有 s 权 限 。 [root@linuxprobe home]# ll -l /usr/bin/passwd -rwxr-xr-x. 1 root root 27832 Jan 30 2014 /usr/bin/passwd // 切 换 到普通用 户执 行修改密 码 的命令 。 [root@linuxprobe home]# su – linuxprobe Last login: Sat Feb 29 09

wpa_supplicant软件架构分析

三世轮回 提交于 2020-02-29 12:33:44
struct socket 数据结构 interface network callback 目录 (?) [+] 启动命令 wpa_supplicant 初始化流程 main函数 wpa_supplicant_init函数 wpa_supplicant_add_iface函数 wpa_supplicant_run函数 Wpa_supplicant提供的接口 上行接口 Dbus接口 Unix domain socket 接口 下行接口 Control interface commands 1. 启动命令 wpa supplicant 在启动时,启动命令可以带有很多参数,目前我们的启动命令如下: wpa_supplicant /system/bin/wpa_supplicant -Dwext -ieth0 -c/data/wifi/wpa_supplicant.conf -f/data/wifi/wpa_log.txt wpa_supplicant 对于启动命令带的参数,用了两个数据结构来保存, 一个是 wpa_params, 另一个是 wpa_interface. 这主要是考虑到 wpa_supplicant 是可以同时支持多个网络接口的。 wpa_params 数据结构主要记录与网络接口无关的一些参数设置。 而每一个网络接口就用一个 wpa_interface 数据结构来记录。

Linux基本命令(1-1)

瘦欲@ 提交于 2020-02-29 11:24:48
写在前面:本文并非原创,有老师讲课的PPT中整理而来,如果有哪位大佬,找到了原文链接,一定要先发给我,这篇文章,先暂时写成原创,因为,我没找到原文链接,孩子整理了一个多小时,不容易,有原文链接先发我,我再改成转载。 目录 一、Linux命令基础 1、Linux系统的终端窗口 2、Linux命令基础 二、文件目录类命令 1、浏览目录类命令 2、浏览文件类命令 3、目录操作类命令 ​ 4、文件操作类命令 三、系统信息类命令 四、进程管理类命令 五、其他常用命令 六、一个命令网站 一、Linux命令基础 1、Linux系统的终端窗口 (1)字符终端为用户提供了一个标准的命令行接口,在字符终端窗口中,会显示一个Shell提示符,通常为$。 (如果为个人客户端,可以通过命令 su root 进入,密码是123456) (2)用户可以在提示符后输入带有选项和参数的字符命令,并能够在终端窗口中看到命令的运行结果,此后,将会出现一个新的提示符,标志着新命令行的开始。 (3)字符终端窗口中出现的Shell提示符因用户不同而有所差异,普通用户的命令提示符为“$”,超级管理员用户的命令提示符为“#”。 2、Linux命令基础 (1)在Linux系统中命令区分大小写 (2)在命令行中,可以使用Tab键来自动补齐命令,即可以只输入命令的前几个字母,然后按Tab键,系统将自动补齐该命令,若命令不止一个

设计模式课程 设计模式精讲 23-2 命令模式coding

ⅰ亾dé卋堺 提交于 2020-02-29 09:59:18
1    代码演练 1.1  代码演练1 1    代码演练 1.1  代码演练1 需求: 木木网付费课程,第一节课可以不付费观看或者付费观看,通过命令模式实现 注意:(个人开发中没有注意到的地方) a   接口无法添加属性 (添加属性的接口编译器默认赋值成静态的,已经不属于本类属性范畴了), 属性通过它的实现类来添加 ,参见打开课程命令类或者关闭课程命令类(标红部分)。 b  员工类命令集合 用ArrayList列表实现,先进先出,后进后出。 c  实际场景中,调用完执行命令后,记得把命令列表清空,参见员工类. uml类图: 测试类: package com.geely.design.pattern.behavioral.command; public class Test { public static void main(String [] args){ CourseVideo courseVideo = new CourseVideo("豆豆哲学论"); //关闭课程的命令 Command command = new CloseCourseVideoCommand(courseVideo); //打开课程的命令 Command command1 = new OpenCourseVideoCommand(courseVideo); Staff staff1 = new

40.每日一个Linux命令----sed

空扰寡人 提交于 2020-02-29 09:48:34
描述:sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作 用法:sed [option] 'command' 输入文本 常用选项: -n∶使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到萤幕上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。 -e∶直接在指令列模式上进行 sed 的动作编辑; -f∶直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的sed 动作; -r∶sed 的动作支援的是延伸型正规表示法的语法。(预设是基础正规表示法语法) -i∶直接修改读取的档案内容,而不是由萤幕输出。 常用命令: a ∶新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行) c ∶取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行! d ∶删除,因为是删除啊,所以 d 后面通常不接字符串; i ∶插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行); p ∶列印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起运作~ s ∶取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s

redis 并发锁

喜你入骨 提交于 2020-02-29 09:33:31
Redis并发问题 Redis为单进程单线程模式,采用队列模式将并发访问变为串行访问。Redis本身没有锁的概念,Redis对于多个客户端连接并不存在竞争,但是在Jedis客户端对Redis进行并发访问时会发生连接超时、数据转换错误、阻塞、客户端关闭连接等问题,这些问题均是由于客户端连接混乱造成。对此有2种解决方法: 1.客户端角度,为保证每个客户端间正常有序与Redis进行通信,对连接进行池化,同时对客户端读写Redis操作采用内部锁synchronized。 2.服务器角度,利用setnx实现锁。 对于第一种,需要应用程序自己处理资源的同步,可以使用的方法比较通俗,可以使用synchronized也可以使用lock;第二种需要用到Redis的setnx命令,但是需要注意一些问题。 SETNX命令(SET if Not eXists) 语法: SETNX key value 功能: 将 key 的值设为 value ,当且仅当 key 不存在;若给定的 key 已经存在,则 SETNX 不做任何动作。 时间复杂度: O(1) 返回值: 设置成功,返回 1 。 设置失败,返回 0 。 模式:将 SETNX 用于加锁(locking) SETNX 可以用作加锁原语(locking primitive)。比如说,要对关键字(key) foo 加锁,客户端可以尝试以下方式: SETNX

Linux 多个留后门姿势

此生再无相见时 提交于 2020-02-29 08:57:05
在一次渗透中,成功获取某目标几台比较重要的机器,当时只想着获取脱库,结果动静太大被发现了,之前渗透并没太在意Linux维持权限,经过此次事后从Google找各种资料,一款满意的rootkit都没有,现在一直在关注这方面,但还是没有找到满意的后门,在渗透圈一个人的资源总是有限往往你全力追求的,也不过是别人的一层关系就可以解决得到更有力的资源。 常用后门技术 增加超级用户帐号 破解/嗅控用户密码 放置SUID Shell ** 利用系统服务程序 TCP/UDP/ICMP Shell Crontab定时任务 共享库文件 工具包rootkit 可装载内枋模块(LKM) 增加超级用户 echo "mx7krshell:x:0:0::/:/bin/sh" >> /etc/passwd 如果系统不允许uid=0的用户远程登录,可以增加一个普通用户账号 echo "mx7krshell::-1:-1:-1:-1:-1:-1:500" >> /etc/shadow 小案例 搞某外企,主站拿不下来进行C段渗透,发现某个业务系统存在Struts2漏洞。 Struts漏洞工具执行命令有些交互式没有办法回显,所以通过无密码添加密码来连接SSH: useradd seradd -u 0 -o -g root -G roo1 echo "123456" | passwd --stdin roo1

Redis——复制

亡梦爱人 提交于 2020-02-29 07:55:58
主从服务器的心跳检测机制 Redis的复制功能分为同步(sync)和命令传播(command propagate)两个操作: * 同步操作用于将从服务器的数据库状态更新至主服务器当前所处的数据库状态、 * 命令传播操作则用于在主服务器的数据库状态被修改,导致主从服务器的数据库状态出现不一致时, 让主从服务器的数据库重新回到一致状态。 同步: 当客户端向从服务器发送SLAVEOF命令,要求从服务器复制主服务器时,从服务器首先需要执行 同步操作,也即是,将从服务器的数据库状态更新至主服务器当前所处的服务器状态。 SYNC命令时一个非常耗费资源的操作 每次执行SYNC命令,主从服务器需要执行以下动作: 1. 主服务器需要执行BGSAVE命令来生成RDB文件,这个生成操作会耗费主服务器大量的CPU,内存和磁盘 I/O 资源。 2. 主服务器需要将自己生成的RDB文件发送给从服务器,这个发送操作会耗费主从服务器大量的网络资源(带宽和流量),并对主服务器响应命令请求的时间产生影响。 3. 接收RDB文件的从服务器需要载入主服务器发来的RDB文件,并且在载入期间,从服务器会因为阻塞而 没办法处理命令请求。 新版本 : 使用PSYNC命令代替SYNC命令来执行复制时的同步操作。 PSYNC命令具有完整重同步(full resynchoronization)和部分重同步(partial

vi 编辑器 常用命令

♀尐吖头ヾ 提交于 2020-02-29 06:26:39
Vi简介 Vi是一种广泛存在于各种UNIX和Linux系统中的文本编辑程序。 Vi不是排版程序,只是一个纯粹的文本编辑程序。 Vi是全屏幕文本编辑器,它没有菜单,只有命令。 Vi不是基于窗口的,所以,这个多用途编辑程序可以用于在任何类型的终端上编辑各式各样的文件。 Vi的功能十分强大,但是命令繁多,熟练掌握起来有一定难度。 Vi的发明者:bill joy Vi的启动 $ Vi filename 或者$ Vi 如果filename已经存在,Vi会打开现存文件 如果是一个新文件,Vi会创建它 Vi的退出 在命令行模式下输入:q,:q!,:wq或者:x,可以退出Vi :w 保存 :w filename 另存为filename :wq! 保存并退出 :wq! filename 以filename为文件名保存后退出 :q! 不保存退出 :x 保存并退出,功能和:wq!相同 Vi的工作模式 Vi有三种工作模式,分别为: 命令模式、插入模式(编辑模式)和末行模式 ,三种模式分别进行不同的操作,它们之间可以进行切换。 命令模式 :进入Vi后,首先进入的就是命令模式,等待用户输入编辑命令,此时输入的字母将作为编辑命令来解释。 插入模式 :在命令模式下输入插入命令i、附加命令a、打开命令o等命令可以进入插入模式,在插入模式下,用户输入可以对文本进行编辑,输入的任何字符都被当作文件内容保存起来。【Esc

shell之变量和引用

六月ゝ 毕业季﹏ 提交于 2020-02-29 04:39:56
一 变量 变量:本质上是程序中保存用户数据的一块内存空间,变量名就是内存空间地址。 Shell中:变量可有字母数字和下划线组成,只能以字母或下划线开头。 命名:PATH=/sbin JAVA_HOME=”/usr/lib” (变量名区分大小写) 在shell中,变量的数据类型无需显示低声明,变量的数据类型会根据不同操作有所变化。 (shell变量部分数据类型,统一按字符串存储,但根据变量的上下文环境,允许程序执行一些不同操作)。为了能执行加减法计算,shell为自动进行数据类型的转换,如果遇到含义非数字的字符串,则该字符串被转换成整数0。同时,在空串以及没有定义变量的情况下,变量值都会被转换为整数0。 例如,n=“” echo “n=$n” Echo “p=$p” 1.1变量的定义: Shell中可以直接使用变量,无需定义,如果变量的值包含空格,一定要用引号引起来。 declare attribute variable(控制变量相关属性) attribute 表示变量属性,variable表示名称,属性有: -p:显示所有变量值 -i:定义为整数 -r:定义为只读变量 -a:定义为数组变量 -f:显示所有自定义函数,包括名称和函数体 -x:变量设置成环境变量,随后的脚本和程序可以使用 例子: x=6/3 echo "$x" //6/3 #定义变量x为整数 declare -i x