iOS逆向攻防之了解操做系统,文件权限,Shell脚本

接着上一篇的应用签名(应用签名内容太多,篇幅大,会比这个要晚点更),直接上今天的干货部分php

一、操做系统简介Linux,Unix
二、用户、组、权限
三、初识Shell脚本及简单练习
复制代码

1、操做系统的了解


操做系统(Operation System,简称OS)ios

操做系统是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在‘裸机’上的最基本的系统软件,任何其余软件都必须在操做系统的支持下才能运行。‘裸机’就是没有安装操做系统的计算机。shell

一、我的计算机PC(personal computer)操做系统apache

· Windows 系列
  · MacOS
  · Linux
复制代码

二、服务器操做系统bash

· Linux
  · Windows
复制代码

三、嵌入式以及移动设备操做系统服务器

· Linux (嵌入式)
  · iOS (基于Unix)
  · Android (基于Linux)
复制代码

四、系统诞生session

Unix诞生:1969年 肯·汤姆逊 为了他的名为星际旅游的游戏可以跑起来,先后花了一个月的时间,写出了Unix的原型。app

C语言的诞生:肯的另外一个同事丹尼斯·里奇对Unix有很大的兴趣,在当时高级语言BCPL的基础上开发了一种新的高级语言将Unix从新写了一遍,这个语言就是C语言!ssh

MacOS诞生:刚开始乔布斯的苹果公司采用的仍是Unix操做系统,后期通过乔布斯对产品卓越的追求和不断的改进,发展成了MacOS。tcp

Windows诞生:狡猾的比尔盖茨找到了当时蒸蒸日上的乔布斯,祈求了一份Apple的产品原型,并承诺微软的一切成果都是苹果的,比尔盖茨获得了产品原型机以后,立刻组织团队研发,并在1990年5月份推出了Windows3.0.

Minix诞生:1991年因为Unix由于市场缘由(能捞钱啊~)闭源了,林纳斯(当时林纳斯22岁)的大学教授就无法讲他们的《操做系统》课程了,因此当时的大学教授Andrew S. Tanenbaum专门写了一个小型具有Unix基本功能的操做系统用来上课。因为比较小,因此叫Min Unix,简称Minix。

Linux诞生:因为Minix和初始的Unix同样,不具有移植性,而林纳斯有一台本身的电脑,却又不能将Minix运行在本身电脑上,莫得办法,他也本身写了一个操做系统,两个月后,第一个版本的以他名字命名的Linux就此诞生了,今后在大学校园传播了起来,可是也仅仅传播在大学校园。接下来就是传播的问题了,当时有一个黑客叫雷蒙德,在那时是一切收费软件公司的噩梦!微软靠卖软件大发特发,让他很不满,他认为全部的软件都应该自由的让人们使用,因此1983年,他发起了’GNU(GNU’s Not Unix的递归缩写)‘计划,激发了软件界开发者极大的热情并吸引了不少优秀的人才,’GUN‘开发了不少优秀的免费软件,可是雷蒙德不甘心GUN的免费软件运行在了收费的Unix系统上,以后承诺两年内从新写一个操做系统,可是5年过去了,操做系统仍是没有出来,而芬兰那边,林纳斯只有一个操做系统内核Linux,并无相应的应用软件。直到Linux加入了GUN计划,而后整个世界都变了!好比今天全球500台超级计算机中,413台都是Linux系统,大到航天,小到IC卡芯片,所有由Linux主宰,包括移动端和服务器领域。移动端Android的内核就是Linux、服务器也是Linux独领风骚。

2、用户、组、权限


一、权限的概念

Unix和Linux都是多用户、多任务的系统,因此这样的系统里面就拥有了用户、组的概念,那么一样文件的权限也就有了相应的所属用户和所属组了。

Windows系统并无这些权限的概念,不论是谁进入都能看见C,D,E,F...盘中的文件,都能删除文件;而Linux、MacOS、iOS系统每一个用户都是只属于本身的,只能操做本身的文件。

Windows系统有一堆目录盘,好比C, D, E, F...等等。

Linux及Unix只有一个根目录'~',根目录下包含/bin, /etc, /home, /lib, /usr, 其中这个/usr并非user的意思,是Unix System Resource的意思,就是系统的一些资源。/home家目录就是操做系统用来处理不一样用户逻辑的,每个用户只能在本身的家目录下面操做,固然还有一个超级管理员,能够操做全部用户的数据。

同理,正是由于权限,因此有了用户、组的概念,也有了文件的权限。系统上的每个文件都有其所属的用户权限,所属的组权限,所属的other权限(非所属组,非所属用户的其余人对这个文件的操做权限)。

二、终端权限示例部分

接着咱们来使用终端示例一下:

cd ~          //到根目录下
 
ls            //查看目录下全部文件

ls -l         //以列表的形式展现目录下的全部文件

复制代码

获得全部文件及文件夹及文件权限

battleMage:~ battleMage$ cd ~
battleMage:~ battleMage$ ls
Applications			Music
Desktop				Pictures
Documents			Public
Downloads			WebstormProjects
Library				efguc-app-ios
Movies				iCloud 云盘(归档)
battleMage:~ battleMage$ ls -l
total 0
drwx------   4 battleMage  staff   128  6  9  2018 Applications
drwx------+ 11 battleMage  staff   352 10 13 14:49 Desktop
drwx------+  3 battleMage  staff    96  6  9 14:08 Documents
drwx------+  9 battleMage  staff   288 10 12 21:18 Downloads
drwx------@ 92 battleMage  staff  2944 10  4 13:35 Library
drwx------+  9 battleMage  staff   288  7  5 20:10 Movies
drwx------+  7 battleMage  staff   224  4 29  2018 Music
drwx------+  9 battleMage  staff   288  6  2 14:54 Pictures
drwxr-xr-x+  5 battleMage  staff   160 10 24  2016 Public
drwxr-xr-x   3 battleMage  staff    96 12 14  2017 WebstormProjects
drwxr-xr-x  13 battleMage  staff   416  3 27  2018 efguc-app-ios
drwx------   7 battleMage  staff   224  8  6  2018 iCloud 云盘(归档)
battleMage:~ battleMage$ 

复制代码

从终端结果中可以看到,每一个文件夹的前面都有权限字符串(好比drwxr-xr-x,drwx------),这个权限字符串的意义以下图

一、Mac文件属性介绍图

三、Mac文件属性介绍.png

二、文件类型与权限介绍图

四、文件类型与权限介绍.png

三、改变文件权限chmod指令介绍

五、Chmod指令改变文件权限.png

chmod指令有两种类型,数字类型和符号类型 下面这两种指令是等价的,给test.txt文件的三种权限所有加上读和写

chmod 666 test.txt

//解释一下666,6 = 4 + 2;其中4是r(‘读’权限),2是w(‘写’权限)

复制代码

等价于

chmod a+r test.txt   //全部权限加上读权限
chmod a+w test.txt   //全部权限再加上写权限

复制代码

3、初识Shell脚本及简单练习


一、Shell脚本介绍

Shell是一种特殊的交互式工具,它为用户提供了启动程序、管理文件系统中的文件以及运行在系统上的进程的途径。(有点相似于一个系统,咱们经常使用的交互系统好比MacOS系统,是有可视化交互界面的,而Shell这个系统是经过脚本指令来交互的)。

Shell通常指命令行工具。它容许你输入文本命令,而后解释命令,并在内核中执行。Shell脚本,也就是用各种命令预先放入到一个文本文件中,方便一次性执行的一个脚本文件。

苹果Mac电脑自带的Shell版本是bash,还有不少好用的Shell版本好比公认好用的zsh
复制代码

二、Shell脚本简单练习

咱们先来简单熟悉一下Shell脚本指令

好比如今有这样一个需求:在指定路径下新建一个叫'shell脚本'的件夹,而后在这个文件夹中新建一个'test.txt'的文本文件。

用Shell指令执行这样的需求须要

一、先cd到指定文件夹下,好比桌面Desktop

cd ~/Destop

二、新建文件,文件名‘shell脚本’

mkdir shell脚本

三、指定路径为新的文件夹

cd shell脚本

四、建立'test.txt'文件

touch test.txt

复制代码

终端练习展现:

battleMage:~ battleMage$ cd ~/Desktop
battleMage:Desktop battleMage$ mkdir shell脚本
battleMage:Desktop battleMage$ cd shell脚本
battleMage:shell脚本 battleMage$ touch test.txt
battleMage:shell脚本 battleMage$ 


复制代码

一、Shell脚本练习之桌面建立文件.png

结果就在指定路径Desktop桌面上建立完成,若是你这个需求是常常要用的,你就能够把这些指令写在shell脚本文件中,shell脚本文件顾名思义就是一堆shell指令操做的集合,能够帮您快速完成指定的需求。

把上面的指令集整理一下就能够生成这样的shell脚本,可以直接经过脚本文件,完成一连串的操做。

步骤以下: 首先cd到指定路径(例如桌面)

cd ~/Desktop

复制代码

接着直接建立‘test.sh’文件

touch test.sh

复制代码

接着编辑'test.sh'文件, 会进入文件编辑界面

vi test.sh

复制代码

接着输入'i'进入编辑界面,输入脚本内容,输入完成后按'ESC'键退出编辑,接着使用'shift'+':',输入'x'以后回车,就在桌面上会生成一个shell脚本文件。

mkdir shell
 cd shell
 touch test.sh

复制代码

二、Shell脚本自动实现.png

使用下列命令均可以运行这个shell脚本,接下来会详细讲述这几个命令的区别。

一、bash运行shell脚本文件
bash test.sh
二、source运行
source test.sh
三、zsh运行
zsh test.sh
四、直接./test.sh , 可是须要先添加权限
chmod +x test.sh
./test.sh

复制代码

三、运行shell脚本命令方法详细介绍

·$source FileName
  ·意思:在当前shell环境中读取并执行FileName中的命令
  ·特色:
    ·命令能够强制让一个脚本去当即影响当前的环境(通常用于加载配置文件)
    ·命令会强制执行脚本中的所有命令,而忽略文件的权限
    
    
·$bash FileName 、$zsh FileName
  ·意思:从新创建一个子shell,在子shell中执行脚本里面的命令。
  
·./FileName
  ·意思:读取并执行文件中的命令。可是有一个前提,脚本文件须要有可执行权限

复制代码

四、了解查看系统全部的shell

按顺序执行下列命令,查看系统根目录下的shells

cd /private/etc

ls

cat shells

复制代码

可以获得

battleMage:~ battleMage$ cd /private/etc
battleMage:etc battleMage$ ls
afpovertcp.cfg				newsyslog.d
afpovertcp.cfg~orig			nfs.conf
aliases					nfs.conf~orig
aliases.db				notify.conf
apache2					ntp.conf
asl					ntp_opendirectory.conf
asl.conf				openldap
auto_home				pam.d
auto_master				passwd
auto_master~orig			passwd~orig
autofs.conf				paths
bashrc					paths.d
bashrc_Apple_Terminal			paths~orig
bashrc~previous				periodic
com.apple.screensharing.agent.launchd	pf.anchors
csh.cshrc				pf.conf
csh.cshrc~orig				pf.os
csh.login				php-fpm.conf.default
csh.login~orig				php-fpm.d
csh.logout				php.ini.default
csh.logout~orig				php.ini.default-previous
cups					php.ini.default-previous~orig
defaults				postfix
dnsextd.conf				ppp
efax.rc~previous			profile
emond.d					profile~orig
find.codes				protocols
find.codes~orig				protocols~previous
fstab.hd				racoon
fstab.hd~previous			rc.common
ftpusers				rc.common~previous
ftpusers~orig				rc.netboot
gettytab				resolv.conf
gettytab~orig				rmtab
group					rpc
group~previous				rpc~previous
hosts					rtadvd.conf
hosts.equiv				rtadvd.conf~previous
hosts~orig				security
irbrc					services
kern_loader.conf			services~previous
kern_loader.conf~previous		shells
krb5.keytab				shells~orig
localtime				snmp
locate.rc				ssh
mach_init.d				ssl
mach_init_per_login_session.d		sudo_lecture
mach_init_per_user.d			sudoers
mail.rc					sudoers.d
mail.rc~orig				sudoers~orig
man.conf				syslog.conf
manpaths				syslog.conf~previous
manpaths.d				ttys
master.passwd				ttys~previous
master.passwd~orig			wfs
nanorc					xtab
networks				zprofile
networks~orig				zshrc
newsyslog.conf
battleMage:etc battleMage$ cat shells
# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.

/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh
battleMage:etc battleMage$ 

复制代码

这时候,咱们能看到有不少shell,简介以下

/bin/bash    bash这个是Linux默认的shell
/bin/csh     csh已经被tcsh代替了
/bin/ksh     ksh兼容bash
/bin/sh      sh已经被bash替代了
/bin/tcsh    整合了C shell 和 csh,它提供了更多的功能
/bin/zsh     zsh是基于ksh开发的,功能比较多,比较好用

复制代码

今天就到这里啦~ -- END --

相关文章
相关标签/搜索