9-linux基础-权限 基础权限: ·linux中文件权限的信息使用ls-l filename可以查看到文件的详细信息,权限位十一位 ·第一位表示文件的类型 '-'普通文件 "d"目录文件 "l" 连接文件 "b" 块设备文件 "c" 字符设备文件 "s" 套接字文件 "p" 管道文件 ·中间9位每三位一组:从左到右为 所有者(u),所属组(g),其他人(o) ·最后一位为'.',表示该文件被selinux保护,selinux为增强型安全组件 ·如果末尾有‘+’表示有acl权限 权限管理: ·主要是针对三类用户定义: 属主 owner 属组 group 其他人 other ·每个文件对每类访问者都定义了三种权限 对于文件来说 r readable可以使用文件查看工具获取其内容 w writable可以修改器内容 x excutable 可以把此文件提请内核启动一个进程 对于文件来说: r 可以使用ls命令列出目录下的文件列表 w 可以再目录中创建、删除文件 x 可以使用cd命令进入此目录,也可以使用ls-l查看此目录中文件列表 修改文件权限 ~]#chmod [option] MOD FILE #修改指定文件的权限 -R 修改目录的权限的时候递归修改权限,修改目录的权限时,默认不会修改目录下文件的权限 使用八进制数形式修改权限 ~]#chmod750 /tmp/test/ #修改指定目录的权限为750 直接指定用户mode进行定义 ~]#chmodu=rwx FILE #修改某一类用户的权限 u=rwx,g=rw,o=(空,表示不给权限) 修改用户的耨意为权限: ~]#chmodu+x FILE #给文件属主添加执行权限 a+x 所有类型用户添加执行权限 a-x 所有类型用户减少执行权限 参考指定文件的权限,将目标的权限修改同相同权限 ~]#chmod--reference=/etc/fstab /tmp/test #以/etc/fstab文件为模板文件 ~]#chownlinux:linux /tmp/test #修改指定用户的属主属组为linux ·~]#chown:linux /tmp/test #仅修改文件的属组 -R 递归修改目录下的所有文件 ~]#chgrp group FILE #修改文件属组 -R递归修改文件属组 遮罩码:为用户创建的文件提供基本权限 ~]#umask #显示当前用户的umask值(遮罩码) ·root用户的umask值为022 ·普通用户的umask值为0002 ·当创建文件的时候,默认的权限为 666-umask 如果文件有执行权限,其八进制权限加1,文件不允许默认有执行权限 ·当创建目录的时候,默认权限为: 777-umask 目录的可用权限只有0,5,7 ·umask的值在/etc/profile文件中可以修改 常使用的权限: 000没有权限 644标准文件权限 755标准目录权限 777最大权限,禁止赋予 权限对文件的含义: r读取文件的内容 w编辑、新增、修改文件的内容,不包含删除 x可执行 权限对目录的意义 r可查询目录下的文件名 w具有修改目录结构的权限 x可以进入目录 目录的可用权限 0最小权限 5标准权限 7最大权限 ·对于文件来说,最大权限为执行权限 ·对于目录来说,最大的权限是写权限 "#" 读音:sharp ·默认权限保证了新建的文件、目录有基本权限,不能通过目录继承的原因是,目录和文件的执行权限的意义不同。 文件系统上的特殊权限 SUID、SGID、Sticky linux上的权限有mode和ownership mode:user、group、other三类用户,分别you读、写、执行权限 ownership:所有权,属主身份 进程的安全上下文: 前提条件:进程由属主、属组,文件有属主、属组 谁发起的进程,进程的属主就是谁 实例: /bin/cat 属主属组都为root,当普通用户执行/bin/cat程序时,匹配的是其他人权限,如果其他人拥有执行权限则普通用户可以执行/bin/cat程序,当程序运行起来后为进程,此时进程的属主属组为执行程序的用户,这个进程所能访问的资源受进程属主属组的限制。 ·任何一个可执行文件能不能启动为进程,取决于发起者对程序问价是否拥有执行权限 ·启动为进程后,其进程属主为发起者,进程的属组为发起者的属组(属组意义不大) ·进程访问目标时的权限,取决于进程的发起者 1.进程的发起者同文件属主,则应用文件属主权限 2.进程的发起者属于文件的属组,则应用文件属组权限,如果进程发起者属于多个组,有一个组与文件相同即表示该用户属于该文件的属组 3.应用其他人的权限 SUID(一般为提权操作) 1. 任何一个可执行程序能否启动为进程,取决于发起者对程序文件是否拥有执行权限 2. 启动为进程后,其进程属主为源程序文件的属主,这个进程访问的资源的权限取决于这个进程属主的权限 ~]#ls -l $(which passwd) #红色的底纹表示拥有特殊权限 ·SUID权限的设定 ~]#chmodu+s filename #给文件添加SUID权限 ~]#chmodu-s filename #取消文件的SUID权限 #ls-l长格式显示时,原文件属主执行位上为s(小)表示存在执行权限 #ls -l长格式显示时,原文件属主执行位上为S(大)表示无执行权限 SGID(一般为提权操作) 默认情况下用户创建文件时,属主为用户的基本组。 一旦某目录被设定了SGID权限,则所有对该目录有写权限的用户,在此目录中创建的文件属组为目录的属组,在创建文件的那一刻,用户以目录的属组为基本组创建文件,临时更改有效组。 ·SGID的设定(对目录) ~]#chmodg+s DIR #给目录添加SGID权限 ~]#chmodg-s DIR #取消目录的SGID权限 ·SGID的设定(对文件) 当一个普通用户执行具有SUID权限的程序时,该命令的 执行者会临时加入该命令的属组内。 ~]#ls-l /usr/bin/local #具有SGID权限的命令 ~]#ls-l /usr/lib/mlocate/mlocate.db #具有SGID权限后操作的文件 ~]#chmodg+s filename #给文件添加SGID权限 ~]#chmodg-s filename #取消文件的SGID权限 #ls -l 长格式显示时,源文件属组执行位上为s(小),表示原属组执行位有权限 #ls-l 长格式显示时,源文件属组执行位上为S(大),表示原属组执行位无权限 Sticky(黏着位SBIT) 对一个多人可写的目录,如果设置了sticky权限,则每个用户只能删除自己的文件,root用户除外。 ~]#chmodo+t DIR #给目录添加sticky权限 ~]#chmodo-t DIR #给目录取消sticky 基础笔记综合整理 2018-10-05 评论 2008 次浏览 8-linux基础-基础命令 linux基础命令: ~]#ls [option][ARG] #列出指定目录下的文件列表 -a 显示所有文件(包含以"."开头的隐藏文件) -A 除了"."和".."其余都显示 -d 查看当前目录本身的信息 -l 使用长格式显示信息 -i 查看文件的inode号,查看目录的inode号需要同-d移动使用 -h 以常用单位显示文件大小 -r 逆序的格式显示 -R (--recursive)递归显示,列出当前目录下子目录下的文件目录 --color=never #指定无颜色显示 --color=auto #自动显示颜色 ~]#ls -l /tmp #长格式显示目录下文件的信息 1. 文件权限位:drwxr-xr-x. - 普通文件 d 目录文件 l 软链接文件 b 块设备文件 c 字符设备文件 p 管道文件 s 套接字文件 2. 引用计数 对于目录:代表目录下,一级子目录的个数 对于文件:代表被硬链接的次数 3. 文件的所属主 4. 文件的所属组 5. 文件的大小 6. 文件最后一次的访问时间 atime 访问时间 mtime 内容改变,只要内容改变ctime一定改变 ctime 元信息改变,改变不一定会修改 7. 文件名 ~]#cd /DIR #切换到指定目录 ~]#cd #进入家目录 ~]#cd ~ #进入家目录 ~]#cd - #进入上一次所在目录 ~]#cd .. #进入上一级目录 ~]#stat FILE #用于显示文件或文件系统的状态,显示时间戳等元信息 ~]#pwd #显示当前所在路径 ~]#mkdir /DIR #创建目录 -p 递归创建目录 ~]#rmdir /DIR #删除空目录(使用不多,用处不大) ~]#rm [选项] [文件名/目录名] -r 递归删除目录 -i 操作前进行询问,root用户命令为别名:alias rm='rm -i' -f 强制删除 ~]#rm -rf [文件/目录] #不询问,强制删除 rm -rf /* #此命令不需要确认,直接执行,需要谨慎 ext undelte 反删除软件,避免误删除,但是需要安装才能生效 ~]#tree /DIR #树状结构显示目录下所有目录和文件名称 文件操作命令: ~]#filefilename #文件内容类型查看命令 ~]#touch /DIR/FILENAME #修改文件的访问时间,如果文件不存在则创建文件 mkdir /tmp/test #创建测试目录 touch /tmp/test #改变了目录的访问时间 ~]#cat [option]/DIR/FILENAME #查看指定文件内容 -n 显示行号,对行进行编号,对文件内容无影响 -E 显示行结束符 -T 显示制表符 ~]#cat [option]file1 file2... #连接文件并显示出来 cat没有跟任何参数时会从键盘读入 ~]#tac filename #将文件内容逆序显示 ~]#morefilename #查看文件分页显示,翻页到行末会自动退出 空格向下翻页,b向上翻页,q退出 ~]#lessfilename #查看文件(分行显示) 空格(↓下键)向下翻,b(↑上键)向上翻页,q退出 ~]#head -nfilename #显示文件头几行 ~]#tail -n 文件 #显示文件尾部几行 -f 监听文件尾,不退出 -c 显示文件尾指定字节数 ~]#echo [option]"....." #回显命令 -n 禁止自动添加换行符 -e 允许使用转义符 单引号:强引用 双引号:弱引用 反引号:命令调用 ~]#cp 源文件 目标位置 -r 复制目录 -p 连带文件属性复制 -d 若文件是连接文件,则复制连接属性 -a 相当于pdr,原文件属性完全复制 -i 询问同名是否覆盖 -a: --archive 归档,保留文件原有属性,常用于备份 -a相当于-dR --preserv=all --preserv=[ATTR_LIST(属性列表)] mode 权限 ownership 属主属组 times-tamps 时间戳 context 安全上下文 xattr 扩展属性 all 以上所有 ~]#mv 源文件 目标文件 #文件移动、若目标为当前目录,则为改名 -i 询问是否覆盖 -f 强制移动 #同一位置下为改名操作,操作对象可以是文件或者目录 ~]#alias #查询命令的别名 ~]#alias rm='rm-i' #定义别名,必须使用单引号 #别名的优先级高于系统命令 #在命令行中执行操作绝大多数是临时生效(立即生效),永久有效需要写入配置文件(重启生效) #alias别名在/etc/bashrc(全局)中进行定义,但是由于个用户习惯不一样,在~/bashrc定义 ~]#ps aux #查看所有运行的进行 ·链接文件:软链接和硬链接 ·软链接:软链接一定要使用绝对路径,否则在跨目录时会报错。 ~]#ln -s 源文件 目标文件 #软链接的权限为777,但是文件的权限在文件上 ·软链接的特点: 源文件和目标文件拥有不同的inode号和block块(存储空间) 软链接的block只存放源文件的inode号、文件名,并没有实际数据 通过软链接打开文件修改内容,源文件也会修改 源文件改名、移动到其他目录后软链接不可使用 删除软链接,源文件不受影响 删除源文件,软链接不可使用 不论源文件的大小如何变化,软链接占用磁盘空间大小不变 软链接的权限为777,但是实际权限在源文件上 软链接可以链接目录 软链接可以跨分区 软链接的属性(长格式信息)只能在上一级目录下查看 ·硬链接:不建议使用,因为没有特别的标识区分 ~]#ln 源文件 目标文件 #给文件创建硬链接 ·硬链接的特点 源文件和连接文件拥有相同的inode号和block(存储空间) 修改任意文件,另一文件内容都发生改变 删除任一文件,另一文件都可以正常访问 硬链接不能跨分区 硬链接不能连接目录 硬链接改名、移动(分区内)后依旧能够访问 文本操作工具 wc、cut、soft、uniq ~]#wc [option] filename #world cuting 统计单词数 -l 只显示行数 -w 只显示单词数 -c 只显示字节数 ~]#wc /etc/passwd #默认显示:行 单词数 字符数(包含换行符) ~]#cut [option] FILENAME -d 指定分隔符,如果不指定默认为空格(智能识别单个字符) -f 指定显示那些字段 ~]#cut-d ':' -f 1 /etc/passwd #提取/etc/passwd文件中的第一列 ~]#cut -d ':' -f 1,3 /etc/passwd #提取/etc/passwd文件中第一列和第三列 ~]#cut -d ':' -f 1-3 /etc/passwd #提取/etc/passwd文件中的第一至第四列 #输入时指定什么分隔符,输出时就以什么分隔符输出 --output-delimiter=STRING #以指定的字符作为分隔符输出 ~]#sort [option] [FILE] #排序命令 #比较每一行的第一个字符,按ASCII码升序排列 -r 逆序排列 -f 忽略大小写排序 ·sort支持以某个字符作为分隔符,并按某个字段进行排序 -t 指定分隔符 -k 指明字段 -n 按数值大小排序 -u uniq去重,相同的内容只显示一次 ~]#uniq [option] FILE #去重(去重的标准为连续且完全一样) -c 统计重复次数 -d 仅显示重复过的行 -u 仅显示未曾重复的行 ·常与sort一同完成文本去重 目录管理类命令: cd、pwd、ls、mkdir、rmdir、tree ~]#ls #显示当前目录下的文件列表,默认开启了别名,即带颜色显示 ~]#mkdir [option] /path/to/somewhere #创建目录 -p 递归创建目录,即目标目录不存在时创建目录 -m 创建目录时直接制定权限 -v 显示创建过程信息 ~]#rmdir DIR #删除空目录,只能够删除空目录 ~]#tree DIR #列出目录的层级结构 -L 限制显示层级 -d 只显示目录 -P(大):显示由指定pattern匹配到的路径 文件的时间戳管理工具: ~]#touch [option] FILE/DIR #创建新文件(当文件不存在的时候) -a 修改访问时间 -m 修改修改时间 -t 指明时间戳,同-a/-m一同使用[cc]YYMMDDhhmm[.ss] -c 不创建文件 ·当touch一个文件的时候,文件如果不存在则创建文件,文件存在只修改其时间戳 ~]#stat FILE/DIR #查看文件/目录的状态 时间戳: access time 访问时间 atime 读取文件的内容叫访问 modify time 修改时间 mtime 修改文件的内容叫修改(修改内容元数据一定改变) change time 改变时间 ctime 改变元数据叫改变 用户和组管理: 只基于密码的认证机制称为token(没有用户名) 有用户名和密码通常称为认证:identify(username/password) 用户的主要作用是实现资源的分配 资源的分配有三个层次(3A概念) Authrntication 认证(识别用户) Authorization 授权 Accouting 审计 ·对于linux来讲,用户有两类 管理员:root ID 0 普通用户:ID 1-65535 系统组:1-499 centos 7 1-999 普通用户组 500+ centos 7 1000+ ·组用于实现将用户和某一类权限建立关联关系 ·我们操作计算机是依靠运行程序来实现的,进程十一发起者的身份去获取资源 ·普通用户的权限决定了cat命令对资源的访问权限 我们站在用户的角度,linux中的组有两类 用户的基本主(主组):组名同用户名,且仅包含一个组:私有组 用户的附加组(额外组) linux用户和组的相关配置文件: /etc/passwd 用户及属性信息 ·/etc/passwd七个字段 用户名:密码占位符:UID:GID:GECOS(用户附加信息):用户家目录:用户默认登录的shell /etc/group 用户组及其属性信息 ·/etc/group 四个字段 组名:组密码占位符:组ID:以当前组为附加组的用户列表(多个使用逗号隔开) /etc/shadow 用户密码及其属性信息 ·/etc/shadow 九个字段 ①登录名 ②加密的密码 $加密算法$salt杂质$加密的密码($作为) ③最近一次更改密码日期 从1970.01.0100:00至密码更改时经过的完整天数 ④密码最小使用期限 ⑤密码最大使用期限 ⑥密码警告时间(快过期) ⑦密码禁用期(已过期,但是登录还能够修改密码) ⑧账号过期日期 echo $(($date --date="2018/12/31"+%s )/86400+1)) ⑨保留字段 ·密码最长有效期限和密码过期时间以短板为准 /etc/gshadow 组密码及其相关信息 用户和用户组的管理命令: 组分类:组本身没有类型,看不同的用户,确定组的类型 初始组:用户创建时,为用户指定的第一个组(有且只有一个) 私有组机制(缩小权限):创建用户的时候,会先创建一个和用户名相同的用户组,并将该组指定为用户的初始组,保证一个文件只属于一个用户 公共组机制:系统预先设定的组,该组的GID为100,以后创建的所有用户指定GID为100的组为初始组,用户创建的文件同时属于组中的其他用户(很多linux发行版不再使用) 附加组:若用户加入到其他组内,则该组作为该用户的附加组(有且可以多个,可以没有) GID:组唯一标识号 ~]#tail -f /var/log/secure #动态查看用户添加时日志的记录情况,组先创建 ~]#useradd [option] loginname #添加用户 #创建用户的时候会自动创建一个与用户同名的用户组,叫做私有组。 #linux操作系统禁止密码登录在/etc/passwd文件的第二列表现为"!!" -u 指定UID ·[UID_MIN,UID_MAX]于/etc/login_defs配置文件中定义 ·如果不指定,则按照已存在的最大UID+1进行自动指定 -g 指明用户所属的基本组,可为组名,也可为GID -c 添加用户的注释信息,可以为任意字符,有空格时需要以引号包含起来 -d 指明家目录的位置,不指定时在/home目录下创建一个用户名同名的目录 ·如果指定的目录已经存在,则不会从/etc/skel目录下复制模板文件,这些模板文件定义可用户的环境 -s 指明用户的默认shell,不指定时有缺省值(/bin/bash) /etc/defaults/useradd定义了添加用户时的缺省值 /etc/shell 保存了当前系统下的shell -G 为用户指明附加组,可以有多个附加组,使用逗号隔开,所指定的组必须事先存在 -r 创建系统用户,通常与-s /sbin/nologin一起使用 -D 修改添加用户的缺省值,直接修改/etc/default/useradd文件 ~]#groupadd [option] group_name #添加一个指定用户组 -g 指定GID ~]#gpasswd [option] GROUPNAME #不指定选项时修改指定组的组密码(root执行) -a username groupname #将一个用户添加到指定组中 -d username groupname #将一个用户从指定组中移除 -M username1,username2.... groupname #将多个用户添加到指定组中 ~]#id [option] username #显示用户的真实有效的ID和组的信息 -u 显示用户的UID -g 显示用户的GID(只显示基本组) -G 显示用户所有组的ID(基本组和附加组) ~]#id-un USERNAME #显示用户的用户名 ~]#id-gn USERNAME #显示用户的组名称 ~]#id #查看当前用户的信息 ~]#su [option] [-] USERNAME [ARGS...] #切换用户 switch user 切换用户或其他用户身份执行命令 ~]#su USERNAME #非登录式切换,不读取用户的环境配置文件 ~]#su - USERNAME #登录时切换,会读取目标用户的配置文件(完全切换) ·root用户切换到其他用户不需要密码 ~]#su - USERNAME -c COMMAND #不切换到其他用户,以其他用户的身份执行命令 -l 相当于"-",表示登录式切换 用户属性的修改: ~]#usermod [option] [logname] #修改已存在用户的信息 -u 指定新的UID -g 指定新的基本组 -G 制定新的附加组,原来的组将被覆盖 -G-a 一起使用为追加附加组 -s 修改默认shell -c 修改新的注释信息 -d HOMEDIR 指定新的家目录(不创建目录仅修改了配置文件) -m -dHOMEDIR 创建新的家目录并移动原家目录下的文件 -l loginname 新的用户名 -L USERNAME 锁定用户,在/etc/shadow文件密码段前加'!' -U USERNAME 解锁指定用户 -e USERNAME指定账户被禁用的日期,格式:YY-MM-DD ~]#usermod -e 2018-12-31 USERNAME #设置用户的过期期限 基础笔记综合整理 2018-10-04 评论 1864 次浏览 7-linux基础-bash基础特性 bash基础特性 ·我们执行的命令是依靠shell命令解释器执行的/bin/bash,bash是linux下的标准shell ·shell解释器中(命令行)的快捷操作: TAB键 命令和文件的补全 Ctrl+L 清屏(clear) Ctrl+U 从光标处删除到行首的内容(剪切) Ctrl+Y 粘贴最后一次次剪切的内容 Ctrl+A 移动光标至行首 Ctrl+E 移动光标至行尾 Ctrl+C 强制退出命令的执行 Ctrl+Z 将程序放入后台 命令历史:history ~]#history #查看命令历史 ~]#echo$HISTFILESIZE #查看命令历史的条数 ~]#!! #执行上一条命令 ~]#!$ #调用上一条命令的最后一个参数 ESC+'.' #调用上一条命令的最后一个参数在当前光标处,重复使用回调多个命令 Alt+'.' #调用上一条命令的最后一条参数到当前光标处,本地可以执行,远程不行 控制命令历史的记录方式: ~]#echo$HISTCONTROL #查看命令历史记录的方式 ignoredups忽略重复的命令 ignorespace忽略空格开头的命令 ignoreboth以上两种方式都生效 命令补全: 直接补全 敲一次tab键,命令会自动补全(输入部分) 列出相关的所有命令(当输入的部分不唯一时) 当输入不唯一时,连续敲两次tab键,显示所有与输入相关的命令 #bash根据PATH环境变量定义的路径自左向右在每个目录下搜索,第一次找到的即要执行的命令,找到以后以hash的形式存储起来,下一次执行命令先去hash表中寻找,需要注意的是,当命令路径缓存后,若是移动位置或者改名,则会报错,并且不会去PATH路径下查询。 路径补全: 将用户给出的字符串作为路径的开头,并在其指定路径的上一级目录下进行搜索,如果结果唯一则补全,如果结果不唯一则给出列表(按两次TAB键) 命令行展开: ~ 展开为家目录 ~USERNAME 展开为指定用户的家目录 {} 可承载以逗号分隔的列表,并将其展开为路径 /tmp/{a,b,c} = /tmp/a /tmp/b /tmp/c 命令的执行状态结果:$? ~]#echo $? #输最近一条命令的执行状态结果 程序的执行有两类结果: 程序的返回值:执行结果 程序的执行状态结果 别名:alias ~]#aliasname='value' #定义别名,必须使用单引号 #命令行中设置只对当前shell生效 ~/.bashrc #仅对当前用户生效 /etc/bashrc #对所有用户生效 Tips:写入配置文件不会立即生效,需要重新读取配置文件 ~]#sourceFILENAME #重新读取配置文件 ~]#.FILENAME #重新服务配置文件 撤销别名: ~]#unalias 别名 #撤销别名 -a撤销所有别名 不执行别名,使用命令原有含义的方式: ~]#\COMMAND #将别名转义 文件名通配:bash中用于实现文件名的通配机制 ~]#whatisglob #查看关于glob的帮助文档 ·通配符 *、?、[] *任意长度的任意字符 ? 任意的单个字符 [list]匹配指定范围内的任意单个字符 [0-9] 表示所有的数字,"-"为连接符 [A-Z] 大写字母 [a-z] 小写字母 [^] 匹配指定范围外的所有单个字符 ·专用字符集(不包括范围指定符号"[ ]") [:alnum:] 任意数字或字母 [:alpha:] 任意字母 [:space:] 空格 [:lower:] 小写字母 [:digit:] 任意数字相当于0-9 [:punct:] 标点符号 ~]#ls/L*[0-9]*[[:lower:]] #以L开头,中间有一个数字 ,以小写字母结尾的文件 bash的I/O重定向及管道 程序:指令+数据 读入数据:input 输出数据:output 标准输入:默认(缺省)从键盘读入,描述符(IO):0 计算机识别文件、用户、进程、都是依靠数字(ID)来实现的,我们用户看到的是文件名,但内核内部追踪文件时,对打开文件分配ID,这个ID称为文件描述符 打开的文件有一个fd(filedescriptor),程序运行结束时有数据输出,数据输出可以是文件,也可以是屏幕、打印机,所以它应当有一个默认位置。 标准输出:monitor,监视器 描述符 1 错误标准输出:monitor,监视器 描述符 2 I/O重定向:不从标准输入读取数据 不从标准输出输出数据 改变默认位置即为重定向 ·输出重定向 COMMOND> new.pos #覆盖重定向 COMMAND>> new.pos #追加重定向 ~]#set -C #禁止将内容覆盖输出至已有文件 ~]#set +C #允许将内容覆盖输出到已有文件 ·错误的输出是单独的数据流,使用2>进行重定向 ~]#cat/etc/fstab >| /tmp/fstab #强制覆盖">|" &> 合并数据流,覆盖重定向至一个文件 &>> 合并数据流,追加重定向至一个文件 ~]#COMMAND> /path/to/file.out 2&>1 #将2(错误输出)覆盖定向到1中 ~]#COMMAND> /path/to/file.out 2&>1 #将2(错误输出)追加重定向至1 ·输入重定向:< /path/to/somefile ~]#tr [option] SET1 SET2 #不支持跟文件,默认只从标准输入接收数据,将SET1中的字符按位替换成SET2中的字符 -d 如果只有一个字符集,则删除出现在字符集中的字符 ~]#tr abc ABC </etc/fstab #将/etc/fstab中内容小写的abc替换成ABC,不改变原文件内容 ·'<<' 此处生成文档 cat<<EFO #从标准输入接收数据,以EFO作为输入结束符,打印到屏幕 cat>>/tmp/test.out<<EFO #在此处生成文件 管道:'|' COMMADN1 |COMMAND2|COMMAND3 ~]#tee[option] file #一路输入两路输出 #tee是覆盖输出,可以再管道中截取数据 变量的类型: 变量的类型决定了数据存储格式,存储空间大小,参与运算种类 ·字符型 ·数值型 强类型编程语言:定义变量必须指定类型,参与运算的变量必须符合要求,调用未声明的变量将产生错误; 弱类型编程语言:可以不指定(shell)类型,默认均为字符型,参与计算时会自动进行隐式转换,变量无需实现定义,可直接引用。 bash中变量的种类(应用场景或作用域的划分) 根据变量生效范围的标准 ·本地变量 生效范围为当前shell进程的生命周期,对当前shell外的其他shell进程,包括当前子shell进程均无效。 ·环境变量 生效范围为当前shell进程及其子shell ~]#delare-x #声明环境变量 ·局部变量 生效范围为当前shell进程中模块代码片段,这些代码是指函数。 ·位置参数变量 使用$1/$2...来表示,在脚本中调用通过命令传递给它的参数,对应调用第1/2个参数 基础笔记综合整理 2018-10-03 评论 1944 次浏览 6-linux基础-2 常用命令: 命令提示符: ~]#echo ${PS1} #显示提示符的格式 [root@localhost ~] # root:当前登录用户 @:分隔符 localhost:简写主机名 localhost.localdomain ~:当前目录为家目录 #:超级用户的提示符 $:普通用户的提示符 ~]#echo ${SHELL} #显示当前系统的shell ~]#cat /etc/shell #查看当前系统下的所有shell 命令的格式(大多数的命令都遵守) 命令 [选项] [参数] "[ ]":意为可选项,能省略的原因是由可选项 选项的作用:用于调整或启用、关闭的命令的功能 短选项"-"(单横线):单个字符,大多数情况下多个短选项可合并,如果多个选项使用空白字符隔开。 长选项"--"(双横线):单词、长选项一般不能合并。 参数(ARGUMENTS):命令的作用对象,参数其实是向命令提供数据 Ctrl + C :取消命令的执行 我们在命令行中输入命令回车时,是提请shell程序找到键入命令所对应的执行程序或代码,并由其分析后提交给内核分配资源将其运行起来,表现为一个或多个进程。 在shell中执行的命令的有两类 内建命令:由shell自带的,而且通过命令形式提供 外部命令:在当前系统中的某文件系统路径下有对应的可执行程序文件 ~]#which COMMAND #查看外部命令的位置,如果有别名则显示别名 ~]#where COMMOND #查看外部命令的位置,并显示命令帮助文档位置。 获取命令的帮助方式 ~]#type COMMAND #可以查看命令的类型 ~]#help COMMAND #查询内建命令的使用帮助 ~]#man COMMAND #查询外部命令的使用帮助 ~]#man -f COMMAND #查询关键字的man章节 ~]#witch [option] COMMOND #显示命令对应的路径 --skip-alias跳过别名,即不显示别名 ~]#whereis COMMAND #指定关键字到数据库中查找相应的man章节数 ~]#COMMAND --help #获取命令本身自带的帮助 ~]#info COMMAND #更详细的命令信息,文档中支持超链接/usr/share/doc/CMD-版本 程序的官方文档 发行版的官方文档 搜索引擎的使用方法: 关键字 site:pan.baidu.com #指定搜索位置 filetype:pdf #指定搜索文件类型 在linux中: 文件名严格区分大小写 文件名可以使用除"/"外的任意字符 "/" 根目录,路径分隔符 不建议使用特殊符号 文件名长度不能超过255个字符 所以以点"."开头文件均为隐藏文件 ·根是逻辑上的概念,根的inode号为2,是固定的,自引用的。 文件系统时按名存取的,自上而下的查找方式,末端称为叶子节点 目录:目录是路径的映射 路径: 绝对路径:从根开始的路径 相对路径:对于当前位置起始的路径 ~]#pwd #打印当前路径,printingworking directoty "./" 当前目录 "../" 上一级目录 $PATH 环境变量,使用冒号分隔的绝对路径,shell程序搜索可执行文件路径记录在$PATH中,从左至右在路径中寻找,以第一次匹配到的为准。 hash 将一段数据提取出一段特征码,任何一个文件只有在第一次才会主动寻找,找到后会记录在一个缓存中,这个缓存其实是内存中的一段空间。 shell搜索到的外部命令路径结果会缓存至kv(key-value键值) kv(key-value)键值存储,两个字段,一个作为搜索标准,一个作为结果。 ~]#hash #查看已缓存的命令 #hits 命中的次数,命令被缓存后执行的次数 当缓存中的数据因为一些原因发生改变的时候,缓存中的内容会失效(如缓存建立后移动了文件),可以清空缓存解决。 -d 清空指定命令 -r 清空所有 ~]#history #查看、管理历史命令 用户登录后,执行的新命令都会放置在内存的缓冲中,当用户退出时,这些命令就会被记录到历史命令文件~/.bash_history中,历史命令有编号。 登录shell的时候,会读取历史文件记录下的命令 登录shell后,新执行的命令只会记录在缓存中,退出时加载到文件中 ~]#history -a #记录缓冲中的命令追加到~/.bash_history中 ~]#history -d NUM #删除指定编号的命令 ~]#history -c #清空缓冲区的命令历史 基于命令历史的快捷操作: ~]#!25 #执行命令历史中第25条命令 ~]#!string #调用命令历史中最近一个以string(字符串)开头的命令。 帮助文档一般为纯文本文件,压缩比较大,因此帮助文档都是压缩文档,一般存储在特定位置/usr/share/man下,不同权限的命令分门别类存放 ~]#man ls #查看ls的帮助命令 到/usr/share/man/man1中找到ls命令的帮助文档,解压缩并调用less命令打开,解压缩时自动执行的,并且解压缩的文件放在临时目录下,操作同less命令 space,ctrl+v,ctrl+f 向文件尾部翻屏 ctrl+b|B 向文件尾部翻屏 d,ctrl+d #向文件尾部翻半屏 u,ctrl+u #向文件尾部翻半屏 q #退出 G #翻至文件尾 1G #翻至文件头 enter/e/j/↓ #向文件尾部翻一行 y/k/↑ #向文件首部翻一行 文本搜索: /keyword(关键字)当前位置向文件尾部搜索 n下一个,N上一个 ?/keyword(关键字) 当前位置项文件首部搜索 n下一个,N上一个 man1 普通用户命令 man2 系统调用 man3 库调用(函数库) man4 设备及特殊文件 man5 配置文件格式 man6 与游戏相关 man7 杂项,不便于归类的 man8 管理类命令 man9 查看内核文件的帮助 ~]#whatis COMMAND #查看命令属于那个章节,man命令默认打开排在前面章节的 ~]#man # COMMAND #查看指定章节的帮助文档 ~]#man -f COMMAND #查看命令有那些章节 man手册不一定在/usr/share/man下,其他的位置需要手工指定 ~]#vim /etc/man.config #man的配置文件 MANPATH/PATH/TO/SOMEWHERE #指定帮助文档的路径 ~]#man -M/path/to/somewhere COMMAND #到指定位置下搜索手册 帮助文档的段落说明: NAME 程序的名字 SYNOPSIS 程序简要使用说明 DESCRIPTION 功能的详细描述 OPTIONS 选项 EXAMPLES 示例 AUTHOR 作者 [ ] 可选内容 < > 必选内容 a|b 多选一 ...... 同一内容可出现多次 { } 用于定界,方便识别 基础笔记综合整理 2018-10-02 评论 1839 次浏览 5-linux基础-1 linux基础: Linux简介: Unix : 硬件平台 AIX IBM powerPC HP-UX HP PA-RISC Solaris Sun SPARC Solaris有个人版 linux诞生于1991年 常见的linux版本: 内核版本:www.kernrl.org 主要使用的版本为:2.6.32和3.10 版本格式: 主版本.次版本.末版本 发行版: readhat系列: 个人版:Fedra 服务器版:RHEL(Read HatEnterprise Linux)6/7 Debian系列 Ubuntu的开发支持很友好,是个个人开发者 www.netcaft.com查看linux等开源软件的行业占比,由此观望行业发展 常见的开源软件(GPL协定) Apache web服务器(实现网页共享) Nginx web服务器(实现网页共享) MySQL 数据库(SQLserver、Oracle) samba linux和windows之间的内网文件共享服务器 TCP 139/445 UDP137/138 MongoDB NoSQL数据库(Redis) Python 脚本语言 PHP 脚本语言 Ruby 脚本语言 sphinx 中文分词(搜索引擎使用,避免歧义) SQL:结构化查询语言 Ubuntu内核的版本较高,server版使用的数量也较多 新的软件运行在较高的内核版本上,因此也有很多虚拟化的软件跑在Ubuntu上 CentOS|RHEL|Ubuntu|core(google) 国内的deepin(深度linux) 主机名修改规则参考:地区-应用-编号 也可为FQDN(完全合格域名) 虚拟机中虚拟网卡的地址固定为1 vmnet0(桥接) 利用真实的交换机进行通信 vmnet1(仅主机) 是在内部创建了一个虚拟的交换机来实现虚拟机与主机之间的通信 vmnet8(NAT) 是在内部创建了一个虚拟的三层交换,用于实现虚拟机连接主机、公网 linux的两个防护 iptables(防火墙),对外,对所有的数据包进行过滤 临时关闭:iptables-F #清空防火墙规则 永久关闭:chkconfigiptables off #设为开机不启动,重启生效 selinux:行为控制工具(限制用户的行为) 临时关闭:setenforce0 #将限制模式修改为警告模式 永久生效通过修改配置文件生效 ~]#sed-i '7s/enforcing/disabled/g' /etc/selinux/config windows;连接到linux的工具 xshell 上传文件需新建文件传输,取消后悔弹出对话框,put命令上传 finalshell secure-CRT 安装操作系统时应当配置IP 生产环境的服务器一般有多块网卡,慎用重启网络服务,会重启所有网卡,网络会断开,但是终端是有反应时间的,因此我们感觉不到 IP的配置(直接编辑配置文件) ~]#vim/etc/sysconfig/network-scripts/ifcfg-eth0 ONBOOT=yes #开机启动 BOOTPROTO=dhcp|static|none #指定获取IP的方式dhcp为动态获取,需要局域网内有dhcp服务器,static和none为静态地址,即手动填写。 IPADDR=192.168.11.10 #指定当前计算机的IP地址 NETMASK=255.255.255.0 #指定当前计算机与IP配对的子网掩码 GATEWAY=192.168.11.2 #指定网关,局域网内传输不需要指定网关 DNS1=8.8.8.8 #指定DNS,配置DNS,必须加数字指定DNS #配置文件的选项必须为大写,否则不识别,但是不会报错。 ~]#ifdown eth0 #关闭指定网卡 ~]#ifup eth0 #开启指定网卡 ~]#ifconfig #查看网卡信息 ~]#ifconfig -a #查看所有的网卡信息 linux中文件的三个文件时间: 访问时间-atime 数据修改时间-ctime 状态修改时间-mtime linux安装: 分区 1-4为主分区号 逻辑分区一定是从第五开始编号,因为1-4是给主分区使用的 linux下必须存在的分区 / 根分区(够用就行,数据目录应当单独分区如/usr) /swap 交换分区,虚拟内存(windows中C盘下的pagebles.sys就是交换文件) swap是一个文件系统类型 官方建议swap大小为内存的两倍(较老的规定) 内存小于4G时swap设为内存的两倍 内存大于4G时swap和内存持平 实验环境,swap不大于2G /boot 启动分区,200M,CentOS 7设置500M 真机装机安装操作系统应当安装64为,因为32位操作系统只能识别3.1G内存(4G),操作系统占用一部分。 网页服务器的目录应当单独挂载,有分区作为屏障有一定安全性,无法直接攻击根。 格式化(写入文件系统) 挂载(使用已建立的空目录作为文件系统的挂载点) 修改主机名,因为主机名是区分服务器最有效的方法 正常安装应选择minimal或者basicserver(可以使用setup设置IP信息) 配置IP 使用远程工具通过IP连接服务器 家目录下有三个文件: /root/install.log 记录了系统安装了哪些安装包(包全名) /root/install.log.syslog 记录了安装过程中产生的事件,添加的用户、组等信息 /root/anaconda-ks.cfg 记录了安装过程(安装模板) 注意事项: linux区分大小写 linux下一切皆文件 linux不靠扩展名区分文件类型,但是有一些文件扩展名约定俗成,方便管理 压缩包: .gz .bz2 .tar.bz2 .tgz 二进制包:rpm 网页文件:.html .php 脚本:.sh 有颜色辅助管理员,颜色是帮助信息 配置文件:.conf 配置文件字符一个都不能错,否则软件找不到 linux上所有的外部存储都需要挂载后才能够使用 linux上移动设备不建议自动挂载,因为当设备不存在的时候,开机会因找不到设备造成无法启动。 windows下的程序不能直接在linux下安装和运行。 服务器的注意事项: 1. 远程服务器不允许关机,只能重启 2. 重启时应当关闭服务(可能会造成硬盘损坏) 3. 不在服务器高峰时期运行高负载命令(一般在陵城4-5点运行) 4. 远程配置防火墙时不要将自己踢出服务器 写一个脚本在定时任务中,内容为每十分钟清空一次iptables规则,防止写错规则将自己阻挡在外 在我们配置防火墙的时候开启定时任务,如果防火墙生效重写一遍(写入文档中) 5. 指定合理的密码规范并定期更新密码 6. 合理分配权限(linux中权限越小越合理) 7. 定期备份重要数据和日志 规范操作(操作手册,整理电子文档,按流程操作) 文件系统: linux< 基础笔记综合整理 2018-10-01 评论 1994 次浏览 4-网络基础-IP URL:统一资源定位 协议+ 域名或者IP:端口+ 网页路径+ 网页名 http:// www.linuxhobby.top:80 /index.html + (变量,也就是那一堆段七八糟的数值) .top 一级域名 Linuxhobby 二级域名 www 三级域名 我们使用浏览器输入网址的时候,浏览器会默认补全,所以我们输入域名也可以直接访问。 IP地址: 主机的唯一标识符,保证主机间正常通信的一种网络编码,,用来确定网络中的一个节点IP地址,由32位二进制组成。 IP地址的分类: A类地址: 前八位(二进制)以0开头的IP地址 0000 0001-----0111 1111(前八位) 1.0.0.0----126.255.255.255 子网掩码255.0.0.0 127段被用于回环网卡 B类地址: 前八位以10开头的IP 1000 0000---10111111 128..0.0.0—191.255.255.255 子网掩码:255.255.0.0 C类地址: 前八位以110开头的IP 1100 0000—11011111 192.0.0.0—223.255.255.255 子网掩码:255.255.255.0 D类地址: 前八位以1110开头的IP 1110 0000---11101111 224.0.0.0---239.255.255.255 E类地址: 余下的,以前八位以1111开头的IP IP地址的组成: IP地址由两部分组成:网络部分(NETWORK)、主机部分(HOST) 任何网段都有两个IP不能使用,第一个IP代表网络本身,最后一个IP叫做广播地址 网络位和主机位是由子网掩码决定的 IP地址和子网掩码不能单独使用。 私有IP: A类: 10.0.0.0—10.255.255.255 255.0.0.0 默认的子网掩码 B类: 172.16.0.0—172.31.255.255 255.255.0.0 默认的子网掩码 C类 192.168.0.0 – 192.168.255.255 255.255.255.0 默认的子网掩码 网关称为默认路由,完成NAT的转发。 骨干网上的路由一定是带操作系统的,这样才能进行自动运算。 总结: 可用IP分为A、B、C三类 每个类别的IP地址中有一部分私有IP 子网掩码必须和IP地址成对出现 每个网段都有默认的子网掩码,用来区分网络位和主机位。 子网划分的原因: 满足不同网络对IP地址的需求 实现网络的层次性 节省IP地址 一般来说,是往小了划分,而不会往大扩。 子网掩码换算成二进制,IP地址换算成二进制 子网掩码为对应的IP地址为网络位 子网掩码为零对应的IP地址为主机位 子网掩码的划分: 子网掩码只要是连续的1就可用。 子网掩码的计算公式: 网络地址:把IP地址和子网掩码的二进制相与,得到的就是网络地址。 主机地址:把子网掩码取反后与IP地址相与,得到的就是主机地址。 广播地址:子网掩码中有几个0,就把IP对应位数换成1,得到的就是广播地址。 网段数:在有效子网中,有几个1,网段数就是2^n 主机数:有效子网中,有m个0,主机数就是2^m – 2台主机数 可变长子网掩码(VLSM),将一个网段划分为不同长度。 VLSM允许把子网继续划分为更小的子网。 也就是说把一个网络划分为不同长度的网段。 128个IP 192.168.1.1/25 64个IP 192.168.1.130/26 32个IP 192.168.1.195/27 我们还可以将其划分,但是最小限制为4个IP 第一个为本网络,最后一个为广播地址,拿一个作为网关,只有一个IP能够使用。 IP首部格式(IP数据包格式) 于网络层封装 IP首部为20字节(160位) 但是IP首部中有可选项,默认是不使用的,但是可能不使用,不在20byte中,四个字节为一行,32位。 IPv4是不定长的,可变的,截取IP包头的时候会耗费更多的资源。 UDP比TCP更快,因为UDP是定长的,还因为TCP在传输过程中需要确认。但是主要还是网络层的IP封装拆除耗费了大量的时间。 版本(4) 首部长度(4)。行 优先级与服务类型(8) 总长度(16) 标识符(16) 标志(3) 段偏移量(13) TTL (8) 协议号(8) 首部校验和(16) 源地址(32) 协议中规定了IP的长度 目标地址(32) 可选项 数据 TTL 数据包在网络中的生存时间,单位为跳,也就是说每经过一个路由减一。 当数据包大小超过2^16=65535时,接收方因无法处理造成逻辑混乱,死机,这是协议上的漏洞。 TCP协议讲解: IP地址的分类 有类网络:有类网络就是把IP地址能归结到A类、B类、C类IP。 无类网络:无类网络的掩码是变长的,不分A类、B类。 TCP协议工作的机制 主机1 主机2 发送SYN信息(序列号=x)--------------------------à 接收SYN信息(序列号=x) 接收SYN、ACK 基础笔记综合整理 2018-09-30 评论 1879 次浏览 « 前一页1...45678910...33后一页 » 关于博主 几人行 纸上谈来终觉浅,绝知此事要躬行。 了解更多 文章分类 OpenStack+Ceph(5) Python笔记(0) CI/CD(4) Ansible(1) Docker笔记(3) shell脚本(24) Linux_quession&answer(2) 调优文档(4) 服务(6) 随手笔记(21) 妄尘集(20) 基础笔记二(8) 基础笔记综合整理(20) 给自己讲linux(114) 最受欢迎的文章 博客停更通知( 21,626 人看过 ) OpenStack(一)( 13,764 人看过 ) 情书( 12,808 人看过 ) 我的青春里没有爱情( 11,083 人看过 ) 操作系统原理--Linux篇(摘录)( 10,195 人看过 ) OpenStack+Ceph云平台卷清理操作( 10,088 人看过 ) OpenStack+Ceph磁盘解锁( 9,775 人看过 ) Docker container 修改MAC( 9,638 人看过 ) JumpServer简介( 8,696 人看过 ) 防火墙规则笔记整理( 8,470 人看过 ) 最近回复 wuzetian: alert("你好,我是一个警告框!"); wuzetian: function myFunction() { alert("你好,我是一个警告框!"); } wuzetian: http://fxme.top/index.php/page/2/ wuzetian: http://fxme.top/index.php/page/2/ wuzetian: 凯哥哇,继续更新,学习学习 wuzetian: 凯哥哇,继续更新,学习学习 wuzetian: 凯哥哇,继续更新,学习学习 wuzetian: 凯哥哇,继续更新,学习学习 wuzetian: 凯哥哇,继续更新,学习学习 wuzetian: 凯哥哇,继续更新,学习学习
8-linux基础-基础命令 linux基础命令: ~]#ls [option][ARG] #列出指定目录下的文件列表 -a 显示所有文件(包含以"."开头的隐藏文件) -A 除了"."和".."其余都显示 -d 查看当前目录本身的信息 -l 使用长格式显示信息 -i 查看文件的inode号,查看目录的inode号需要同-d移动使用 -h 以常用单位显示文件大小 -r 逆序的格式显示 -R (--recursive)递归显示,列出当前目录下子目录下的文件目录 --color=never #指定无颜色显示 --color=auto #自动显示颜色 ~]#ls -l /tmp #长格式显示目录下文件的信息 1. 文件权限位:drwxr-xr-x. - 普通文件 d 目录文件 l 软链接文件 b 块设备文件 c 字符设备文件 p 管道文件 s 套接字文件 2. 引用计数 对于目录:代表目录下,一级子目录的个数 对于文件:代表被硬链接的次数 3. 文件的所属主 4. 文件的所属组 5. 文件的大小 6. 文件最后一次的访问时间 atime 访问时间 mtime 内容改变,只要内容改变ctime一定改变 ctime 元信息改变,改变不一定会修改 7. 文件名 ~]#cd /DIR #切换到指定目录 ~]#cd #进入家目录 ~]#cd ~ #进入家目录 ~]#cd - #进入上一次所在目录 ~]#cd .. #进入上一级目录 ~]#stat FILE #用于显示文件或文件系统的状态,显示时间戳等元信息 ~]#pwd #显示当前所在路径 ~]#mkdir /DIR #创建目录 -p 递归创建目录 ~]#rmdir /DIR #删除空目录(使用不多,用处不大) ~]#rm [选项] [文件名/目录名] -r 递归删除目录 -i 操作前进行询问,root用户命令为别名:alias rm='rm -i' -f 强制删除 ~]#rm -rf [文件/目录] #不询问,强制删除 rm -rf /* #此命令不需要确认,直接执行,需要谨慎 ext undelte 反删除软件,避免误删除,但是需要安装才能生效 ~]#tree /DIR #树状结构显示目录下所有目录和文件名称 文件操作命令: ~]#filefilename #文件内容类型查看命令 ~]#touch /DIR/FILENAME #修改文件的访问时间,如果文件不存在则创建文件 mkdir /tmp/test #创建测试目录 touch /tmp/test #改变了目录的访问时间 ~]#cat [option]/DIR/FILENAME #查看指定文件内容 -n 显示行号,对行进行编号,对文件内容无影响 -E 显示行结束符 -T 显示制表符 ~]#cat [option]file1 file2... #连接文件并显示出来 cat没有跟任何参数时会从键盘读入 ~]#tac filename #将文件内容逆序显示 ~]#morefilename #查看文件分页显示,翻页到行末会自动退出 空格向下翻页,b向上翻页,q退出 ~]#lessfilename #查看文件(分行显示) 空格(↓下键)向下翻,b(↑上键)向上翻页,q退出 ~]#head -nfilename #显示文件头几行 ~]#tail -n 文件 #显示文件尾部几行 -f 监听文件尾,不退出 -c 显示文件尾指定字节数 ~]#echo [option]"....." #回显命令 -n 禁止自动添加换行符 -e 允许使用转义符 单引号:强引用 双引号:弱引用 反引号:命令调用 ~]#cp 源文件 目标位置 -r 复制目录 -p 连带文件属性复制 -d 若文件是连接文件,则复制连接属性 -a 相当于pdr,原文件属性完全复制 -i 询问同名是否覆盖 -a: --archive 归档,保留文件原有属性,常用于备份 -a相当于-dR --preserv=all --preserv=[ATTR_LIST(属性列表)] mode 权限 ownership 属主属组 times-tamps 时间戳 context 安全上下文 xattr 扩展属性 all 以上所有 ~]#mv 源文件 目标文件 #文件移动、若目标为当前目录,则为改名 -i 询问是否覆盖 -f 强制移动 #同一位置下为改名操作,操作对象可以是文件或者目录 ~]#alias #查询命令的别名 ~]#alias rm='rm-i' #定义别名,必须使用单引号 #别名的优先级高于系统命令 #在命令行中执行操作绝大多数是临时生效(立即生效),永久有效需要写入配置文件(重启生效) #alias别名在/etc/bashrc(全局)中进行定义,但是由于个用户习惯不一样,在~/bashrc定义 ~]#ps aux #查看所有运行的进行 ·链接文件:软链接和硬链接 ·软链接:软链接一定要使用绝对路径,否则在跨目录时会报错。 ~]#ln -s 源文件 目标文件 #软链接的权限为777,但是文件的权限在文件上 ·软链接的特点: 源文件和目标文件拥有不同的inode号和block块(存储空间) 软链接的block只存放源文件的inode号、文件名,并没有实际数据 通过软链接打开文件修改内容,源文件也会修改 源文件改名、移动到其他目录后软链接不可使用 删除软链接,源文件不受影响 删除源文件,软链接不可使用 不论源文件的大小如何变化,软链接占用磁盘空间大小不变 软链接的权限为777,但是实际权限在源文件上 软链接可以链接目录 软链接可以跨分区 软链接的属性(长格式信息)只能在上一级目录下查看 ·硬链接:不建议使用,因为没有特别的标识区分 ~]#ln 源文件 目标文件 #给文件创建硬链接 ·硬链接的特点 源文件和连接文件拥有相同的inode号和block(存储空间) 修改任意文件,另一文件内容都发生改变 删除任一文件,另一文件都可以正常访问 硬链接不能跨分区 硬链接不能连接目录 硬链接改名、移动(分区内)后依旧能够访问 文本操作工具 wc、cut、soft、uniq ~]#wc [option] filename #world cuting 统计单词数 -l 只显示行数 -w 只显示单词数 -c 只显示字节数 ~]#wc /etc/passwd #默认显示:行 单词数 字符数(包含换行符) ~]#cut [option] FILENAME -d 指定分隔符,如果不指定默认为空格(智能识别单个字符) -f 指定显示那些字段 ~]#cut-d ':' -f 1 /etc/passwd #提取/etc/passwd文件中的第一列 ~]#cut -d ':' -f 1,3 /etc/passwd #提取/etc/passwd文件中第一列和第三列 ~]#cut -d ':' -f 1-3 /etc/passwd #提取/etc/passwd文件中的第一至第四列 #输入时指定什么分隔符,输出时就以什么分隔符输出 --output-delimiter=STRING #以指定的字符作为分隔符输出 ~]#sort [option] [FILE] #排序命令 #比较每一行的第一个字符,按ASCII码升序排列 -r 逆序排列 -f 忽略大小写排序 ·sort支持以某个字符作为分隔符,并按某个字段进行排序 -t 指定分隔符 -k 指明字段 -n 按数值大小排序 -u uniq去重,相同的内容只显示一次 ~]#uniq [option] FILE #去重(去重的标准为连续且完全一样) -c 统计重复次数 -d 仅显示重复过的行 -u 仅显示未曾重复的行 ·常与sort一同完成文本去重 目录管理类命令: cd、pwd、ls、mkdir、rmdir、tree ~]#ls #显示当前目录下的文件列表,默认开启了别名,即带颜色显示 ~]#mkdir [option] /path/to/somewhere #创建目录 -p 递归创建目录,即目标目录不存在时创建目录 -m 创建目录时直接制定权限 -v 显示创建过程信息 ~]#rmdir DIR #删除空目录,只能够删除空目录 ~]#tree DIR #列出目录的层级结构 -L 限制显示层级 -d 只显示目录 -P(大):显示由指定pattern匹配到的路径 文件的时间戳管理工具: ~]#touch [option] FILE/DIR #创建新文件(当文件不存在的时候) -a 修改访问时间 -m 修改修改时间 -t 指明时间戳,同-a/-m一同使用[cc]YYMMDDhhmm[.ss] -c 不创建文件 ·当touch一个文件的时候,文件如果不存在则创建文件,文件存在只修改其时间戳 ~]#stat FILE/DIR #查看文件/目录的状态 时间戳: access time 访问时间 atime 读取文件的内容叫访问 modify time 修改时间 mtime 修改文件的内容叫修改(修改内容元数据一定改变) change time 改变时间 ctime 改变元数据叫改变 用户和组管理: 只基于密码的认证机制称为token(没有用户名) 有用户名和密码通常称为认证:identify(username/password) 用户的主要作用是实现资源的分配 资源的分配有三个层次(3A概念) Authrntication 认证(识别用户) Authorization 授权 Accouting 审计 ·对于linux来讲,用户有两类 管理员:root ID 0 普通用户:ID 1-65535 系统组:1-499 centos 7 1-999 普通用户组 500+ centos 7 1000+ ·组用于实现将用户和某一类权限建立关联关系 ·我们操作计算机是依靠运行程序来实现的,进程十一发起者的身份去获取资源 ·普通用户的权限决定了cat命令对资源的访问权限 我们站在用户的角度,linux中的组有两类 用户的基本主(主组):组名同用户名,且仅包含一个组:私有组 用户的附加组(额外组) linux用户和组的相关配置文件: /etc/passwd 用户及属性信息 ·/etc/passwd七个字段 用户名:密码占位符:UID:GID:GECOS(用户附加信息):用户家目录:用户默认登录的shell /etc/group 用户组及其属性信息 ·/etc/group 四个字段 组名:组密码占位符:组ID:以当前组为附加组的用户列表(多个使用逗号隔开) /etc/shadow 用户密码及其属性信息 ·/etc/shadow 九个字段 ①登录名 ②加密的密码 $加密算法$salt杂质$加密的密码($作为) ③最近一次更改密码日期 从1970.01.0100:00至密码更改时经过的完整天数 ④密码最小使用期限 ⑤密码最大使用期限 ⑥密码警告时间(快过期) ⑦密码禁用期(已过期,但是登录还能够修改密码) ⑧账号过期日期 echo $(($date --date="2018/12/31"+%s )/86400+1)) ⑨保留字段 ·密码最长有效期限和密码过期时间以短板为准 /etc/gshadow 组密码及其相关信息 用户和用户组的管理命令: 组分类:组本身没有类型,看不同的用户,确定组的类型 初始组:用户创建时,为用户指定的第一个组(有且只有一个) 私有组机制(缩小权限):创建用户的时候,会先创建一个和用户名相同的用户组,并将该组指定为用户的初始组,保证一个文件只属于一个用户 公共组机制:系统预先设定的组,该组的GID为100,以后创建的所有用户指定GID为100的组为初始组,用户创建的文件同时属于组中的其他用户(很多linux发行版不再使用) 附加组:若用户加入到其他组内,则该组作为该用户的附加组(有且可以多个,可以没有) GID:组唯一标识号 ~]#tail -f /var/log/secure #动态查看用户添加时日志的记录情况,组先创建 ~]#useradd [option] loginname #添加用户 #创建用户的时候会自动创建一个与用户同名的用户组,叫做私有组。 #linux操作系统禁止密码登录在/etc/passwd文件的第二列表现为"!!" -u 指定UID ·[UID_MIN,UID_MAX]于/etc/login_defs配置文件中定义 ·如果不指定,则按照已存在的最大UID+1进行自动指定 -g 指明用户所属的基本组,可为组名,也可为GID -c 添加用户的注释信息,可以为任意字符,有空格时需要以引号包含起来 -d 指明家目录的位置,不指定时在/home目录下创建一个用户名同名的目录 ·如果指定的目录已经存在,则不会从/etc/skel目录下复制模板文件,这些模板文件定义可用户的环境 -s 指明用户的默认shell,不指定时有缺省值(/bin/bash) /etc/defaults/useradd定义了添加用户时的缺省值 /etc/shell 保存了当前系统下的shell -G 为用户指明附加组,可以有多个附加组,使用逗号隔开,所指定的组必须事先存在 -r 创建系统用户,通常与-s /sbin/nologin一起使用 -D 修改添加用户的缺省值,直接修改/etc/default/useradd文件 ~]#groupadd [option] group_name #添加一个指定用户组 -g 指定GID ~]#gpasswd [option] GROUPNAME #不指定选项时修改指定组的组密码(root执行) -a username groupname #将一个用户添加到指定组中 -d username groupname #将一个用户从指定组中移除 -M username1,username2.... groupname #将多个用户添加到指定组中 ~]#id [option] username #显示用户的真实有效的ID和组的信息 -u 显示用户的UID -g 显示用户的GID(只显示基本组) -G 显示用户所有组的ID(基本组和附加组) ~]#id-un USERNAME #显示用户的用户名 ~]#id-gn USERNAME #显示用户的组名称 ~]#id #查看当前用户的信息 ~]#su [option] [-] USERNAME [ARGS...] #切换用户 switch user 切换用户或其他用户身份执行命令 ~]#su USERNAME #非登录式切换,不读取用户的环境配置文件 ~]#su - USERNAME #登录时切换,会读取目标用户的配置文件(完全切换) ·root用户切换到其他用户不需要密码 ~]#su - USERNAME -c COMMAND #不切换到其他用户,以其他用户的身份执行命令 -l 相当于"-",表示登录式切换 用户属性的修改: ~]#usermod [option] [logname] #修改已存在用户的信息 -u 指定新的UID -g 指定新的基本组 -G 制定新的附加组,原来的组将被覆盖 -G-a 一起使用为追加附加组 -s 修改默认shell -c 修改新的注释信息 -d HOMEDIR 指定新的家目录(不创建目录仅修改了配置文件) -m -dHOMEDIR 创建新的家目录并移动原家目录下的文件 -l loginname 新的用户名 -L USERNAME 锁定用户,在/etc/shadow文件密码段前加'!' -U USERNAME 解锁指定用户 -e USERNAME指定账户被禁用的日期,格式:YY-MM-DD ~]#usermod -e 2018-12-31 USERNAME #设置用户的过期期限 基础笔记综合整理 2018-10-04 评论 1864 次浏览
7-linux基础-bash基础特性 bash基础特性 ·我们执行的命令是依靠shell命令解释器执行的/bin/bash,bash是linux下的标准shell ·shell解释器中(命令行)的快捷操作: TAB键 命令和文件的补全 Ctrl+L 清屏(clear) Ctrl+U 从光标处删除到行首的内容(剪切) Ctrl+Y 粘贴最后一次次剪切的内容 Ctrl+A 移动光标至行首 Ctrl+E 移动光标至行尾 Ctrl+C 强制退出命令的执行 Ctrl+Z 将程序放入后台 命令历史:history ~]#history #查看命令历史 ~]#echo$HISTFILESIZE #查看命令历史的条数 ~]#!! #执行上一条命令 ~]#!$ #调用上一条命令的最后一个参数 ESC+'.' #调用上一条命令的最后一个参数在当前光标处,重复使用回调多个命令 Alt+'.' #调用上一条命令的最后一条参数到当前光标处,本地可以执行,远程不行 控制命令历史的记录方式: ~]#echo$HISTCONTROL #查看命令历史记录的方式 ignoredups忽略重复的命令 ignorespace忽略空格开头的命令 ignoreboth以上两种方式都生效 命令补全: 直接补全 敲一次tab键,命令会自动补全(输入部分) 列出相关的所有命令(当输入的部分不唯一时) 当输入不唯一时,连续敲两次tab键,显示所有与输入相关的命令 #bash根据PATH环境变量定义的路径自左向右在每个目录下搜索,第一次找到的即要执行的命令,找到以后以hash的形式存储起来,下一次执行命令先去hash表中寻找,需要注意的是,当命令路径缓存后,若是移动位置或者改名,则会报错,并且不会去PATH路径下查询。 路径补全: 将用户给出的字符串作为路径的开头,并在其指定路径的上一级目录下进行搜索,如果结果唯一则补全,如果结果不唯一则给出列表(按两次TAB键) 命令行展开: ~ 展开为家目录 ~USERNAME 展开为指定用户的家目录 {} 可承载以逗号分隔的列表,并将其展开为路径 /tmp/{a,b,c} = /tmp/a /tmp/b /tmp/c 命令的执行状态结果:$? ~]#echo $? #输最近一条命令的执行状态结果 程序的执行有两类结果: 程序的返回值:执行结果 程序的执行状态结果 别名:alias ~]#aliasname='value' #定义别名,必须使用单引号 #命令行中设置只对当前shell生效 ~/.bashrc #仅对当前用户生效 /etc/bashrc #对所有用户生效 Tips:写入配置文件不会立即生效,需要重新读取配置文件 ~]#sourceFILENAME #重新读取配置文件 ~]#.FILENAME #重新服务配置文件 撤销别名: ~]#unalias 别名 #撤销别名 -a撤销所有别名 不执行别名,使用命令原有含义的方式: ~]#\COMMAND #将别名转义 文件名通配:bash中用于实现文件名的通配机制 ~]#whatisglob #查看关于glob的帮助文档 ·通配符 *、?、[] *任意长度的任意字符 ? 任意的单个字符 [list]匹配指定范围内的任意单个字符 [0-9] 表示所有的数字,"-"为连接符 [A-Z] 大写字母 [a-z] 小写字母 [^] 匹配指定范围外的所有单个字符 ·专用字符集(不包括范围指定符号"[ ]") [:alnum:] 任意数字或字母 [:alpha:] 任意字母 [:space:] 空格 [:lower:] 小写字母 [:digit:] 任意数字相当于0-9 [:punct:] 标点符号 ~]#ls/L*[0-9]*[[:lower:]] #以L开头,中间有一个数字 ,以小写字母结尾的文件 bash的I/O重定向及管道 程序:指令+数据 读入数据:input 输出数据:output 标准输入:默认(缺省)从键盘读入,描述符(IO):0 计算机识别文件、用户、进程、都是依靠数字(ID)来实现的,我们用户看到的是文件名,但内核内部追踪文件时,对打开文件分配ID,这个ID称为文件描述符 打开的文件有一个fd(filedescriptor),程序运行结束时有数据输出,数据输出可以是文件,也可以是屏幕、打印机,所以它应当有一个默认位置。 标准输出:monitor,监视器 描述符 1 错误标准输出:monitor,监视器 描述符 2 I/O重定向:不从标准输入读取数据 不从标准输出输出数据 改变默认位置即为重定向 ·输出重定向 COMMOND> new.pos #覆盖重定向 COMMAND>> new.pos #追加重定向 ~]#set -C #禁止将内容覆盖输出至已有文件 ~]#set +C #允许将内容覆盖输出到已有文件 ·错误的输出是单独的数据流,使用2>进行重定向 ~]#cat/etc/fstab >| /tmp/fstab #强制覆盖">|" &> 合并数据流,覆盖重定向至一个文件 &>> 合并数据流,追加重定向至一个文件 ~]#COMMAND> /path/to/file.out 2&>1 #将2(错误输出)覆盖定向到1中 ~]#COMMAND> /path/to/file.out 2&>1 #将2(错误输出)追加重定向至1 ·输入重定向:< /path/to/somefile ~]#tr [option] SET1 SET2 #不支持跟文件,默认只从标准输入接收数据,将SET1中的字符按位替换成SET2中的字符 -d 如果只有一个字符集,则删除出现在字符集中的字符 ~]#tr abc ABC </etc/fstab #将/etc/fstab中内容小写的abc替换成ABC,不改变原文件内容 ·'<<' 此处生成文档 cat<<EFO #从标准输入接收数据,以EFO作为输入结束符,打印到屏幕 cat>>/tmp/test.out<<EFO #在此处生成文件 管道:'|' COMMADN1 |COMMAND2|COMMAND3 ~]#tee[option] file #一路输入两路输出 #tee是覆盖输出,可以再管道中截取数据 变量的类型: 变量的类型决定了数据存储格式,存储空间大小,参与运算种类 ·字符型 ·数值型 强类型编程语言:定义变量必须指定类型,参与运算的变量必须符合要求,调用未声明的变量将产生错误; 弱类型编程语言:可以不指定(shell)类型,默认均为字符型,参与计算时会自动进行隐式转换,变量无需实现定义,可直接引用。 bash中变量的种类(应用场景或作用域的划分) 根据变量生效范围的标准 ·本地变量 生效范围为当前shell进程的生命周期,对当前shell外的其他shell进程,包括当前子shell进程均无效。 ·环境变量 生效范围为当前shell进程及其子shell ~]#delare-x #声明环境变量 ·局部变量 生效范围为当前shell进程中模块代码片段,这些代码是指函数。 ·位置参数变量 使用$1/$2...来表示,在脚本中调用通过命令传递给它的参数,对应调用第1/2个参数 基础笔记综合整理 2018-10-03 评论 1944 次浏览 6-linux基础-2 常用命令: 命令提示符: ~]#echo ${PS1} #显示提示符的格式 [root@localhost ~] # root:当前登录用户 @:分隔符 localhost:简写主机名 localhost.localdomain ~:当前目录为家目录 #:超级用户的提示符 $:普通用户的提示符 ~]#echo ${SHELL} #显示当前系统的shell ~]#cat /etc/shell #查看当前系统下的所有shell 命令的格式(大多数的命令都遵守) 命令 [选项] [参数] "[ ]":意为可选项,能省略的原因是由可选项 选项的作用:用于调整或启用、关闭的命令的功能 短选项"-"(单横线):单个字符,大多数情况下多个短选项可合并,如果多个选项使用空白字符隔开。 长选项"--"(双横线):单词、长选项一般不能合并。 参数(ARGUMENTS):命令的作用对象,参数其实是向命令提供数据 Ctrl + C :取消命令的执行 我们在命令行中输入命令回车时,是提请shell程序找到键入命令所对应的执行程序或代码,并由其分析后提交给内核分配资源将其运行起来,表现为一个或多个进程。 在shell中执行的命令的有两类 内建命令:由shell自带的,而且通过命令形式提供 外部命令:在当前系统中的某文件系统路径下有对应的可执行程序文件 ~]#which COMMAND #查看外部命令的位置,如果有别名则显示别名 ~]#where COMMOND #查看外部命令的位置,并显示命令帮助文档位置。 获取命令的帮助方式 ~]#type COMMAND #可以查看命令的类型 ~]#help COMMAND #查询内建命令的使用帮助 ~]#man COMMAND #查询外部命令的使用帮助 ~]#man -f COMMAND #查询关键字的man章节 ~]#witch [option] COMMOND #显示命令对应的路径 --skip-alias跳过别名,即不显示别名 ~]#whereis COMMAND #指定关键字到数据库中查找相应的man章节数 ~]#COMMAND --help #获取命令本身自带的帮助 ~]#info COMMAND #更详细的命令信息,文档中支持超链接/usr/share/doc/CMD-版本 程序的官方文档 发行版的官方文档 搜索引擎的使用方法: 关键字 site:pan.baidu.com #指定搜索位置 filetype:pdf #指定搜索文件类型 在linux中: 文件名严格区分大小写 文件名可以使用除"/"外的任意字符 "/" 根目录,路径分隔符 不建议使用特殊符号 文件名长度不能超过255个字符 所以以点"."开头文件均为隐藏文件 ·根是逻辑上的概念,根的inode号为2,是固定的,自引用的。 文件系统时按名存取的,自上而下的查找方式,末端称为叶子节点 目录:目录是路径的映射 路径: 绝对路径:从根开始的路径 相对路径:对于当前位置起始的路径 ~]#pwd #打印当前路径,printingworking directoty "./" 当前目录 "../" 上一级目录 $PATH 环境变量,使用冒号分隔的绝对路径,shell程序搜索可执行文件路径记录在$PATH中,从左至右在路径中寻找,以第一次匹配到的为准。 hash 将一段数据提取出一段特征码,任何一个文件只有在第一次才会主动寻找,找到后会记录在一个缓存中,这个缓存其实是内存中的一段空间。 shell搜索到的外部命令路径结果会缓存至kv(key-value键值) kv(key-value)键值存储,两个字段,一个作为搜索标准,一个作为结果。 ~]#hash #查看已缓存的命令 #hits 命中的次数,命令被缓存后执行的次数 当缓存中的数据因为一些原因发生改变的时候,缓存中的内容会失效(如缓存建立后移动了文件),可以清空缓存解决。 -d 清空指定命令 -r 清空所有 ~]#history #查看、管理历史命令 用户登录后,执行的新命令都会放置在内存的缓冲中,当用户退出时,这些命令就会被记录到历史命令文件~/.bash_history中,历史命令有编号。 登录shell的时候,会读取历史文件记录下的命令 登录shell后,新执行的命令只会记录在缓存中,退出时加载到文件中 ~]#history -a #记录缓冲中的命令追加到~/.bash_history中 ~]#history -d NUM #删除指定编号的命令 ~]#history -c #清空缓冲区的命令历史 基于命令历史的快捷操作: ~]#!25 #执行命令历史中第25条命令 ~]#!string #调用命令历史中最近一个以string(字符串)开头的命令。 帮助文档一般为纯文本文件,压缩比较大,因此帮助文档都是压缩文档,一般存储在特定位置/usr/share/man下,不同权限的命令分门别类存放 ~]#man ls #查看ls的帮助命令 到/usr/share/man/man1中找到ls命令的帮助文档,解压缩并调用less命令打开,解压缩时自动执行的,并且解压缩的文件放在临时目录下,操作同less命令 space,ctrl+v,ctrl+f 向文件尾部翻屏 ctrl+b|B 向文件尾部翻屏 d,ctrl+d #向文件尾部翻半屏 u,ctrl+u #向文件尾部翻半屏 q #退出 G #翻至文件尾 1G #翻至文件头 enter/e/j/↓ #向文件尾部翻一行 y/k/↑ #向文件首部翻一行 文本搜索: /keyword(关键字)当前位置向文件尾部搜索 n下一个,N上一个 ?/keyword(关键字) 当前位置项文件首部搜索 n下一个,N上一个 man1 普通用户命令 man2 系统调用 man3 库调用(函数库) man4 设备及特殊文件 man5 配置文件格式 man6 与游戏相关 man7 杂项,不便于归类的 man8 管理类命令 man9 查看内核文件的帮助 ~]#whatis COMMAND #查看命令属于那个章节,man命令默认打开排在前面章节的 ~]#man # COMMAND #查看指定章节的帮助文档 ~]#man -f COMMAND #查看命令有那些章节 man手册不一定在/usr/share/man下,其他的位置需要手工指定 ~]#vim /etc/man.config #man的配置文件 MANPATH/PATH/TO/SOMEWHERE #指定帮助文档的路径 ~]#man -M/path/to/somewhere COMMAND #到指定位置下搜索手册 帮助文档的段落说明: NAME 程序的名字 SYNOPSIS 程序简要使用说明 DESCRIPTION 功能的详细描述 OPTIONS 选项 EXAMPLES 示例 AUTHOR 作者 [ ] 可选内容 < > 必选内容 a|b 多选一 ...... 同一内容可出现多次 { } 用于定界,方便识别 基础笔记综合整理 2018-10-02 评论 1839 次浏览 5-linux基础-1 linux基础: Linux简介: Unix : 硬件平台 AIX IBM powerPC HP-UX HP PA-RISC Solaris Sun SPARC Solaris有个人版 linux诞生于1991年 常见的linux版本: 内核版本:www.kernrl.org 主要使用的版本为:2.6.32和3.10 版本格式: 主版本.次版本.末版本 发行版: readhat系列: 个人版:Fedra 服务器版:RHEL(Read HatEnterprise Linux)6/7 Debian系列 Ubuntu的开发支持很友好,是个个人开发者 www.netcaft.com查看linux等开源软件的行业占比,由此观望行业发展 常见的开源软件(GPL协定) Apache web服务器(实现网页共享) Nginx web服务器(实现网页共享) MySQL 数据库(SQLserver、Oracle) samba linux和windows之间的内网文件共享服务器 TCP 139/445 UDP137/138 MongoDB NoSQL数据库(Redis) Python 脚本语言 PHP 脚本语言 Ruby 脚本语言 sphinx 中文分词(搜索引擎使用,避免歧义) SQL:结构化查询语言 Ubuntu内核的版本较高,server版使用的数量也较多 新的软件运行在较高的内核版本上,因此也有很多虚拟化的软件跑在Ubuntu上 CentOS|RHEL|Ubuntu|core(google) 国内的deepin(深度linux) 主机名修改规则参考:地区-应用-编号 也可为FQDN(完全合格域名) 虚拟机中虚拟网卡的地址固定为1 vmnet0(桥接) 利用真实的交换机进行通信 vmnet1(仅主机) 是在内部创建了一个虚拟的交换机来实现虚拟机与主机之间的通信 vmnet8(NAT) 是在内部创建了一个虚拟的三层交换,用于实现虚拟机连接主机、公网 linux的两个防护 iptables(防火墙),对外,对所有的数据包进行过滤 临时关闭:iptables-F #清空防火墙规则 永久关闭:chkconfigiptables off #设为开机不启动,重启生效 selinux:行为控制工具(限制用户的行为) 临时关闭:setenforce0 #将限制模式修改为警告模式 永久生效通过修改配置文件生效 ~]#sed-i '7s/enforcing/disabled/g' /etc/selinux/config windows;连接到linux的工具 xshell 上传文件需新建文件传输,取消后悔弹出对话框,put命令上传 finalshell secure-CRT 安装操作系统时应当配置IP 生产环境的服务器一般有多块网卡,慎用重启网络服务,会重启所有网卡,网络会断开,但是终端是有反应时间的,因此我们感觉不到 IP的配置(直接编辑配置文件) ~]#vim/etc/sysconfig/network-scripts/ifcfg-eth0 ONBOOT=yes #开机启动 BOOTPROTO=dhcp|static|none #指定获取IP的方式dhcp为动态获取,需要局域网内有dhcp服务器,static和none为静态地址,即手动填写。 IPADDR=192.168.11.10 #指定当前计算机的IP地址 NETMASK=255.255.255.0 #指定当前计算机与IP配对的子网掩码 GATEWAY=192.168.11.2 #指定网关,局域网内传输不需要指定网关 DNS1=8.8.8.8 #指定DNS,配置DNS,必须加数字指定DNS #配置文件的选项必须为大写,否则不识别,但是不会报错。 ~]#ifdown eth0 #关闭指定网卡 ~]#ifup eth0 #开启指定网卡 ~]#ifconfig #查看网卡信息 ~]#ifconfig -a #查看所有的网卡信息 linux中文件的三个文件时间: 访问时间-atime 数据修改时间-ctime 状态修改时间-mtime linux安装: 分区 1-4为主分区号 逻辑分区一定是从第五开始编号,因为1-4是给主分区使用的 linux下必须存在的分区 / 根分区(够用就行,数据目录应当单独分区如/usr) /swap 交换分区,虚拟内存(windows中C盘下的pagebles.sys就是交换文件) swap是一个文件系统类型 官方建议swap大小为内存的两倍(较老的规定) 内存小于4G时swap设为内存的两倍 内存大于4G时swap和内存持平 实验环境,swap不大于2G /boot 启动分区,200M,CentOS 7设置500M 真机装机安装操作系统应当安装64为,因为32位操作系统只能识别3.1G内存(4G),操作系统占用一部分。 网页服务器的目录应当单独挂载,有分区作为屏障有一定安全性,无法直接攻击根。 格式化(写入文件系统) 挂载(使用已建立的空目录作为文件系统的挂载点) 修改主机名,因为主机名是区分服务器最有效的方法 正常安装应选择minimal或者basicserver(可以使用setup设置IP信息) 配置IP 使用远程工具通过IP连接服务器 家目录下有三个文件: /root/install.log 记录了系统安装了哪些安装包(包全名) /root/install.log.syslog 记录了安装过程中产生的事件,添加的用户、组等信息 /root/anaconda-ks.cfg 记录了安装过程(安装模板) 注意事项: linux区分大小写 linux下一切皆文件 linux不靠扩展名区分文件类型,但是有一些文件扩展名约定俗成,方便管理 压缩包: .gz .bz2 .tar.bz2 .tgz 二进制包:rpm 网页文件:.html .php 脚本:.sh 有颜色辅助管理员,颜色是帮助信息 配置文件:.conf 配置文件字符一个都不能错,否则软件找不到 linux上所有的外部存储都需要挂载后才能够使用 linux上移动设备不建议自动挂载,因为当设备不存在的时候,开机会因找不到设备造成无法启动。 windows下的程序不能直接在linux下安装和运行。 服务器的注意事项: 1. 远程服务器不允许关机,只能重启 2. 重启时应当关闭服务(可能会造成硬盘损坏) 3. 不在服务器高峰时期运行高负载命令(一般在陵城4-5点运行) 4. 远程配置防火墙时不要将自己踢出服务器 写一个脚本在定时任务中,内容为每十分钟清空一次iptables规则,防止写错规则将自己阻挡在外 在我们配置防火墙的时候开启定时任务,如果防火墙生效重写一遍(写入文档中) 5. 指定合理的密码规范并定期更新密码 6. 合理分配权限(linux中权限越小越合理) 7. 定期备份重要数据和日志 规范操作(操作手册,整理电子文档,按流程操作) 文件系统: linux< 基础笔记综合整理 2018-10-01 评论 1994 次浏览 4-网络基础-IP URL:统一资源定位 协议+ 域名或者IP:端口+ 网页路径+ 网页名 http:// www.linuxhobby.top:80 /index.html + (变量,也就是那一堆段七八糟的数值) .top 一级域名 Linuxhobby 二级域名 www 三级域名 我们使用浏览器输入网址的时候,浏览器会默认补全,所以我们输入域名也可以直接访问。 IP地址: 主机的唯一标识符,保证主机间正常通信的一种网络编码,,用来确定网络中的一个节点IP地址,由32位二进制组成。 IP地址的分类: A类地址: 前八位(二进制)以0开头的IP地址 0000 0001-----0111 1111(前八位) 1.0.0.0----126.255.255.255 子网掩码255.0.0.0 127段被用于回环网卡 B类地址: 前八位以10开头的IP 1000 0000---10111111 128..0.0.0—191.255.255.255 子网掩码:255.255.0.0 C类地址: 前八位以110开头的IP 1100 0000—11011111 192.0.0.0—223.255.255.255 子网掩码:255.255.255.0 D类地址: 前八位以1110开头的IP 1110 0000---11101111 224.0.0.0---239.255.255.255 E类地址: 余下的,以前八位以1111开头的IP IP地址的组成: IP地址由两部分组成:网络部分(NETWORK)、主机部分(HOST) 任何网段都有两个IP不能使用,第一个IP代表网络本身,最后一个IP叫做广播地址 网络位和主机位是由子网掩码决定的 IP地址和子网掩码不能单独使用。 私有IP: A类: 10.0.0.0—10.255.255.255 255.0.0.0 默认的子网掩码 B类: 172.16.0.0—172.31.255.255 255.255.0.0 默认的子网掩码 C类 192.168.0.0 – 192.168.255.255 255.255.255.0 默认的子网掩码 网关称为默认路由,完成NAT的转发。 骨干网上的路由一定是带操作系统的,这样才能进行自动运算。 总结: 可用IP分为A、B、C三类 每个类别的IP地址中有一部分私有IP 子网掩码必须和IP地址成对出现 每个网段都有默认的子网掩码,用来区分网络位和主机位。 子网划分的原因: 满足不同网络对IP地址的需求 实现网络的层次性 节省IP地址 一般来说,是往小了划分,而不会往大扩。 子网掩码换算成二进制,IP地址换算成二进制 子网掩码为对应的IP地址为网络位 子网掩码为零对应的IP地址为主机位 子网掩码的划分: 子网掩码只要是连续的1就可用。 子网掩码的计算公式: 网络地址:把IP地址和子网掩码的二进制相与,得到的就是网络地址。 主机地址:把子网掩码取反后与IP地址相与,得到的就是主机地址。 广播地址:子网掩码中有几个0,就把IP对应位数换成1,得到的就是广播地址。 网段数:在有效子网中,有几个1,网段数就是2^n 主机数:有效子网中,有m个0,主机数就是2^m – 2台主机数 可变长子网掩码(VLSM),将一个网段划分为不同长度。 VLSM允许把子网继续划分为更小的子网。 也就是说把一个网络划分为不同长度的网段。 128个IP 192.168.1.1/25 64个IP 192.168.1.130/26 32个IP 192.168.1.195/27 我们还可以将其划分,但是最小限制为4个IP 第一个为本网络,最后一个为广播地址,拿一个作为网关,只有一个IP能够使用。 IP首部格式(IP数据包格式) 于网络层封装 IP首部为20字节(160位) 但是IP首部中有可选项,默认是不使用的,但是可能不使用,不在20byte中,四个字节为一行,32位。 IPv4是不定长的,可变的,截取IP包头的时候会耗费更多的资源。 UDP比TCP更快,因为UDP是定长的,还因为TCP在传输过程中需要确认。但是主要还是网络层的IP封装拆除耗费了大量的时间。 版本(4) 首部长度(4)。行 优先级与服务类型(8) 总长度(16) 标识符(16) 标志(3) 段偏移量(13) TTL (8) 协议号(8) 首部校验和(16) 源地址(32) 协议中规定了IP的长度 目标地址(32) 可选项 数据 TTL 数据包在网络中的生存时间,单位为跳,也就是说每经过一个路由减一。 当数据包大小超过2^16=65535时,接收方因无法处理造成逻辑混乱,死机,这是协议上的漏洞。 TCP协议讲解: IP地址的分类 有类网络:有类网络就是把IP地址能归结到A类、B类、C类IP。 无类网络:无类网络的掩码是变长的,不分A类、B类。 TCP协议工作的机制 主机1 主机2 发送SYN信息(序列号=x)--------------------------à 接收SYN信息(序列号=x) 接收SYN、ACK 基础笔记综合整理 2018-09-30 评论 1879 次浏览 « 前一页1...45678910...33后一页 » 关于博主 几人行 纸上谈来终觉浅,绝知此事要躬行。 了解更多 文章分类 OpenStack+Ceph(5) Python笔记(0) CI/CD(4) Ansible(1) Docker笔记(3) shell脚本(24) Linux_quession&answer(2) 调优文档(4) 服务(6) 随手笔记(21) 妄尘集(20) 基础笔记二(8) 基础笔记综合整理(20) 给自己讲linux(114) 最受欢迎的文章 博客停更通知( 21,626 人看过 ) OpenStack(一)( 13,764 人看过 ) 情书( 12,808 人看过 ) 我的青春里没有爱情( 11,083 人看过 ) 操作系统原理--Linux篇(摘录)( 10,195 人看过 ) OpenStack+Ceph云平台卷清理操作( 10,088 人看过 ) OpenStack+Ceph磁盘解锁( 9,775 人看过 ) Docker container 修改MAC( 9,638 人看过 ) JumpServer简介( 8,696 人看过 ) 防火墙规则笔记整理( 8,470 人看过 ) 最近回复 wuzetian: alert("你好,我是一个警告框!"); wuzetian: function myFunction() { alert("你好,我是一个警告框!"); } wuzetian: http://fxme.top/index.php/page/2/ wuzetian: http://fxme.top/index.php/page/2/ wuzetian: 凯哥哇,继续更新,学习学习 wuzetian: 凯哥哇,继续更新,学习学习 wuzetian: 凯哥哇,继续更新,学习学习 wuzetian: 凯哥哇,继续更新,学习学习 wuzetian: 凯哥哇,继续更新,学习学习 wuzetian: 凯哥哇,继续更新,学习学习
6-linux基础-2 常用命令: 命令提示符: ~]#echo ${PS1} #显示提示符的格式 [root@localhost ~] # root:当前登录用户 @:分隔符 localhost:简写主机名 localhost.localdomain ~:当前目录为家目录 #:超级用户的提示符 $:普通用户的提示符 ~]#echo ${SHELL} #显示当前系统的shell ~]#cat /etc/shell #查看当前系统下的所有shell 命令的格式(大多数的命令都遵守) 命令 [选项] [参数] "[ ]":意为可选项,能省略的原因是由可选项 选项的作用:用于调整或启用、关闭的命令的功能 短选项"-"(单横线):单个字符,大多数情况下多个短选项可合并,如果多个选项使用空白字符隔开。 长选项"--"(双横线):单词、长选项一般不能合并。 参数(ARGUMENTS):命令的作用对象,参数其实是向命令提供数据 Ctrl + C :取消命令的执行 我们在命令行中输入命令回车时,是提请shell程序找到键入命令所对应的执行程序或代码,并由其分析后提交给内核分配资源将其运行起来,表现为一个或多个进程。 在shell中执行的命令的有两类 内建命令:由shell自带的,而且通过命令形式提供 外部命令:在当前系统中的某文件系统路径下有对应的可执行程序文件 ~]#which COMMAND #查看外部命令的位置,如果有别名则显示别名 ~]#where COMMOND #查看外部命令的位置,并显示命令帮助文档位置。 获取命令的帮助方式 ~]#type COMMAND #可以查看命令的类型 ~]#help COMMAND #查询内建命令的使用帮助 ~]#man COMMAND #查询外部命令的使用帮助 ~]#man -f COMMAND #查询关键字的man章节 ~]#witch [option] COMMOND #显示命令对应的路径 --skip-alias跳过别名,即不显示别名 ~]#whereis COMMAND #指定关键字到数据库中查找相应的man章节数 ~]#COMMAND --help #获取命令本身自带的帮助 ~]#info COMMAND #更详细的命令信息,文档中支持超链接/usr/share/doc/CMD-版本 程序的官方文档 发行版的官方文档 搜索引擎的使用方法: 关键字 site:pan.baidu.com #指定搜索位置 filetype:pdf #指定搜索文件类型 在linux中: 文件名严格区分大小写 文件名可以使用除"/"外的任意字符 "/" 根目录,路径分隔符 不建议使用特殊符号 文件名长度不能超过255个字符 所以以点"."开头文件均为隐藏文件 ·根是逻辑上的概念,根的inode号为2,是固定的,自引用的。 文件系统时按名存取的,自上而下的查找方式,末端称为叶子节点 目录:目录是路径的映射 路径: 绝对路径:从根开始的路径 相对路径:对于当前位置起始的路径 ~]#pwd #打印当前路径,printingworking directoty "./" 当前目录 "../" 上一级目录 $PATH 环境变量,使用冒号分隔的绝对路径,shell程序搜索可执行文件路径记录在$PATH中,从左至右在路径中寻找,以第一次匹配到的为准。 hash 将一段数据提取出一段特征码,任何一个文件只有在第一次才会主动寻找,找到后会记录在一个缓存中,这个缓存其实是内存中的一段空间。 shell搜索到的外部命令路径结果会缓存至kv(key-value键值) kv(key-value)键值存储,两个字段,一个作为搜索标准,一个作为结果。 ~]#hash #查看已缓存的命令 #hits 命中的次数,命令被缓存后执行的次数 当缓存中的数据因为一些原因发生改变的时候,缓存中的内容会失效(如缓存建立后移动了文件),可以清空缓存解决。 -d 清空指定命令 -r 清空所有 ~]#history #查看、管理历史命令 用户登录后,执行的新命令都会放置在内存的缓冲中,当用户退出时,这些命令就会被记录到历史命令文件~/.bash_history中,历史命令有编号。 登录shell的时候,会读取历史文件记录下的命令 登录shell后,新执行的命令只会记录在缓存中,退出时加载到文件中 ~]#history -a #记录缓冲中的命令追加到~/.bash_history中 ~]#history -d NUM #删除指定编号的命令 ~]#history -c #清空缓冲区的命令历史 基于命令历史的快捷操作: ~]#!25 #执行命令历史中第25条命令 ~]#!string #调用命令历史中最近一个以string(字符串)开头的命令。 帮助文档一般为纯文本文件,压缩比较大,因此帮助文档都是压缩文档,一般存储在特定位置/usr/share/man下,不同权限的命令分门别类存放 ~]#man ls #查看ls的帮助命令 到/usr/share/man/man1中找到ls命令的帮助文档,解压缩并调用less命令打开,解压缩时自动执行的,并且解压缩的文件放在临时目录下,操作同less命令 space,ctrl+v,ctrl+f 向文件尾部翻屏 ctrl+b|B 向文件尾部翻屏 d,ctrl+d #向文件尾部翻半屏 u,ctrl+u #向文件尾部翻半屏 q #退出 G #翻至文件尾 1G #翻至文件头 enter/e/j/↓ #向文件尾部翻一行 y/k/↑ #向文件首部翻一行 文本搜索: /keyword(关键字)当前位置向文件尾部搜索 n下一个,N上一个 ?/keyword(关键字) 当前位置项文件首部搜索 n下一个,N上一个 man1 普通用户命令 man2 系统调用 man3 库调用(函数库) man4 设备及特殊文件 man5 配置文件格式 man6 与游戏相关 man7 杂项,不便于归类的 man8 管理类命令 man9 查看内核文件的帮助 ~]#whatis COMMAND #查看命令属于那个章节,man命令默认打开排在前面章节的 ~]#man # COMMAND #查看指定章节的帮助文档 ~]#man -f COMMAND #查看命令有那些章节 man手册不一定在/usr/share/man下,其他的位置需要手工指定 ~]#vim /etc/man.config #man的配置文件 MANPATH/PATH/TO/SOMEWHERE #指定帮助文档的路径 ~]#man -M/path/to/somewhere COMMAND #到指定位置下搜索手册 帮助文档的段落说明: NAME 程序的名字 SYNOPSIS 程序简要使用说明 DESCRIPTION 功能的详细描述 OPTIONS 选项 EXAMPLES 示例 AUTHOR 作者 [ ] 可选内容 < > 必选内容 a|b 多选一 ...... 同一内容可出现多次 { } 用于定界,方便识别 基础笔记综合整理 2018-10-02 评论 1839 次浏览
5-linux基础-1 linux基础: Linux简介: Unix : 硬件平台 AIX IBM powerPC HP-UX HP PA-RISC Solaris Sun SPARC Solaris有个人版 linux诞生于1991年 常见的linux版本: 内核版本:www.kernrl.org 主要使用的版本为:2.6.32和3.10 版本格式: 主版本.次版本.末版本 发行版: readhat系列: 个人版:Fedra 服务器版:RHEL(Read HatEnterprise Linux)6/7 Debian系列 Ubuntu的开发支持很友好,是个个人开发者 www.netcaft.com查看linux等开源软件的行业占比,由此观望行业发展 常见的开源软件(GPL协定) Apache web服务器(实现网页共享) Nginx web服务器(实现网页共享) MySQL 数据库(SQLserver、Oracle) samba linux和windows之间的内网文件共享服务器 TCP 139/445 UDP137/138 MongoDB NoSQL数据库(Redis) Python 脚本语言 PHP 脚本语言 Ruby 脚本语言 sphinx 中文分词(搜索引擎使用,避免歧义) SQL:结构化查询语言 Ubuntu内核的版本较高,server版使用的数量也较多 新的软件运行在较高的内核版本上,因此也有很多虚拟化的软件跑在Ubuntu上 CentOS|RHEL|Ubuntu|core(google) 国内的deepin(深度linux) 主机名修改规则参考:地区-应用-编号 也可为FQDN(完全合格域名) 虚拟机中虚拟网卡的地址固定为1 vmnet0(桥接) 利用真实的交换机进行通信 vmnet1(仅主机) 是在内部创建了一个虚拟的交换机来实现虚拟机与主机之间的通信 vmnet8(NAT) 是在内部创建了一个虚拟的三层交换,用于实现虚拟机连接主机、公网 linux的两个防护 iptables(防火墙),对外,对所有的数据包进行过滤 临时关闭:iptables-F #清空防火墙规则 永久关闭:chkconfigiptables off #设为开机不启动,重启生效 selinux:行为控制工具(限制用户的行为) 临时关闭:setenforce0 #将限制模式修改为警告模式 永久生效通过修改配置文件生效 ~]#sed-i '7s/enforcing/disabled/g' /etc/selinux/config windows;连接到linux的工具 xshell 上传文件需新建文件传输,取消后悔弹出对话框,put命令上传 finalshell secure-CRT 安装操作系统时应当配置IP 生产环境的服务器一般有多块网卡,慎用重启网络服务,会重启所有网卡,网络会断开,但是终端是有反应时间的,因此我们感觉不到 IP的配置(直接编辑配置文件) ~]#vim/etc/sysconfig/network-scripts/ifcfg-eth0 ONBOOT=yes #开机启动 BOOTPROTO=dhcp|static|none #指定获取IP的方式dhcp为动态获取,需要局域网内有dhcp服务器,static和none为静态地址,即手动填写。 IPADDR=192.168.11.10 #指定当前计算机的IP地址 NETMASK=255.255.255.0 #指定当前计算机与IP配对的子网掩码 GATEWAY=192.168.11.2 #指定网关,局域网内传输不需要指定网关 DNS1=8.8.8.8 #指定DNS,配置DNS,必须加数字指定DNS #配置文件的选项必须为大写,否则不识别,但是不会报错。 ~]#ifdown eth0 #关闭指定网卡 ~]#ifup eth0 #开启指定网卡 ~]#ifconfig #查看网卡信息 ~]#ifconfig -a #查看所有的网卡信息 linux中文件的三个文件时间: 访问时间-atime 数据修改时间-ctime 状态修改时间-mtime linux安装: 分区 1-4为主分区号 逻辑分区一定是从第五开始编号,因为1-4是给主分区使用的 linux下必须存在的分区 / 根分区(够用就行,数据目录应当单独分区如/usr) /swap 交换分区,虚拟内存(windows中C盘下的pagebles.sys就是交换文件) swap是一个文件系统类型 官方建议swap大小为内存的两倍(较老的规定) 内存小于4G时swap设为内存的两倍 内存大于4G时swap和内存持平 实验环境,swap不大于2G /boot 启动分区,200M,CentOS 7设置500M 真机装机安装操作系统应当安装64为,因为32位操作系统只能识别3.1G内存(4G),操作系统占用一部分。 网页服务器的目录应当单独挂载,有分区作为屏障有一定安全性,无法直接攻击根。 格式化(写入文件系统) 挂载(使用已建立的空目录作为文件系统的挂载点) 修改主机名,因为主机名是区分服务器最有效的方法 正常安装应选择minimal或者basicserver(可以使用setup设置IP信息) 配置IP 使用远程工具通过IP连接服务器 家目录下有三个文件: /root/install.log 记录了系统安装了哪些安装包(包全名) /root/install.log.syslog 记录了安装过程中产生的事件,添加的用户、组等信息 /root/anaconda-ks.cfg 记录了安装过程(安装模板) 注意事项: linux区分大小写 linux下一切皆文件 linux不靠扩展名区分文件类型,但是有一些文件扩展名约定俗成,方便管理 压缩包: .gz .bz2 .tar.bz2 .tgz 二进制包:rpm 网页文件:.html .php 脚本:.sh 有颜色辅助管理员,颜色是帮助信息 配置文件:.conf 配置文件字符一个都不能错,否则软件找不到 linux上所有的外部存储都需要挂载后才能够使用 linux上移动设备不建议自动挂载,因为当设备不存在的时候,开机会因找不到设备造成无法启动。 windows下的程序不能直接在linux下安装和运行。 服务器的注意事项: 1. 远程服务器不允许关机,只能重启 2. 重启时应当关闭服务(可能会造成硬盘损坏) 3. 不在服务器高峰时期运行高负载命令(一般在陵城4-5点运行) 4. 远程配置防火墙时不要将自己踢出服务器 写一个脚本在定时任务中,内容为每十分钟清空一次iptables规则,防止写错规则将自己阻挡在外 在我们配置防火墙的时候开启定时任务,如果防火墙生效重写一遍(写入文档中) 5. 指定合理的密码规范并定期更新密码 6. 合理分配权限(linux中权限越小越合理) 7. 定期备份重要数据和日志 规范操作(操作手册,整理电子文档,按流程操作) 文件系统: linux< 基础笔记综合整理 2018-10-01 评论 1994 次浏览
4-网络基础-IP URL:统一资源定位 协议+ 域名或者IP:端口+ 网页路径+ 网页名 http:// www.linuxhobby.top:80 /index.html + (变量,也就是那一堆段七八糟的数值) .top 一级域名 Linuxhobby 二级域名 www 三级域名 我们使用浏览器输入网址的时候,浏览器会默认补全,所以我们输入域名也可以直接访问。 IP地址: 主机的唯一标识符,保证主机间正常通信的一种网络编码,,用来确定网络中的一个节点IP地址,由32位二进制组成。 IP地址的分类: A类地址: 前八位(二进制)以0开头的IP地址 0000 0001-----0111 1111(前八位) 1.0.0.0----126.255.255.255 子网掩码255.0.0.0 127段被用于回环网卡 B类地址: 前八位以10开头的IP 1000 0000---10111111 128..0.0.0—191.255.255.255 子网掩码:255.255.0.0 C类地址: 前八位以110开头的IP 1100 0000—11011111 192.0.0.0—223.255.255.255 子网掩码:255.255.255.0 D类地址: 前八位以1110开头的IP 1110 0000---11101111 224.0.0.0---239.255.255.255 E类地址: 余下的,以前八位以1111开头的IP IP地址的组成: IP地址由两部分组成:网络部分(NETWORK)、主机部分(HOST) 任何网段都有两个IP不能使用,第一个IP代表网络本身,最后一个IP叫做广播地址 网络位和主机位是由子网掩码决定的 IP地址和子网掩码不能单独使用。 私有IP: A类: 10.0.0.0—10.255.255.255 255.0.0.0 默认的子网掩码 B类: 172.16.0.0—172.31.255.255 255.255.0.0 默认的子网掩码 C类 192.168.0.0 – 192.168.255.255 255.255.255.0 默认的子网掩码 网关称为默认路由,完成NAT的转发。 骨干网上的路由一定是带操作系统的,这样才能进行自动运算。 总结: 可用IP分为A、B、C三类 每个类别的IP地址中有一部分私有IP 子网掩码必须和IP地址成对出现 每个网段都有默认的子网掩码,用来区分网络位和主机位。 子网划分的原因: 满足不同网络对IP地址的需求 实现网络的层次性 节省IP地址 一般来说,是往小了划分,而不会往大扩。 子网掩码换算成二进制,IP地址换算成二进制 子网掩码为对应的IP地址为网络位 子网掩码为零对应的IP地址为主机位 子网掩码的划分: 子网掩码只要是连续的1就可用。 子网掩码的计算公式: 网络地址:把IP地址和子网掩码的二进制相与,得到的就是网络地址。 主机地址:把子网掩码取反后与IP地址相与,得到的就是主机地址。 广播地址:子网掩码中有几个0,就把IP对应位数换成1,得到的就是广播地址。 网段数:在有效子网中,有几个1,网段数就是2^n 主机数:有效子网中,有m个0,主机数就是2^m – 2台主机数 可变长子网掩码(VLSM),将一个网段划分为不同长度。 VLSM允许把子网继续划分为更小的子网。 也就是说把一个网络划分为不同长度的网段。 128个IP 192.168.1.1/25 64个IP 192.168.1.130/26 32个IP 192.168.1.195/27 我们还可以将其划分,但是最小限制为4个IP 第一个为本网络,最后一个为广播地址,拿一个作为网关,只有一个IP能够使用。 IP首部格式(IP数据包格式) 于网络层封装 IP首部为20字节(160位) 但是IP首部中有可选项,默认是不使用的,但是可能不使用,不在20byte中,四个字节为一行,32位。 IPv4是不定长的,可变的,截取IP包头的时候会耗费更多的资源。 UDP比TCP更快,因为UDP是定长的,还因为TCP在传输过程中需要确认。但是主要还是网络层的IP封装拆除耗费了大量的时间。 版本(4) 首部长度(4)。行 优先级与服务类型(8) 总长度(16) 标识符(16) 标志(3) 段偏移量(13) TTL (8) 协议号(8) 首部校验和(16) 源地址(32) 协议中规定了IP的长度 目标地址(32) 可选项 数据 TTL 数据包在网络中的生存时间,单位为跳,也就是说每经过一个路由减一。 当数据包大小超过2^16=65535时,接收方因无法处理造成逻辑混乱,死机,这是协议上的漏洞。 TCP协议讲解: IP地址的分类 有类网络:有类网络就是把IP地址能归结到A类、B类、C类IP。 无类网络:无类网络的掩码是变长的,不分A类、B类。 TCP协议工作的机制 主机1 主机2 发送SYN信息(序列号=x)--------------------------à 接收SYN信息(序列号=x) 接收SYN、ACK 基础笔记综合整理 2018-09-30 评论 1879 次浏览 « 前一页1...45678910...33后一页 » 关于博主 几人行 纸上谈来终觉浅,绝知此事要躬行。 了解更多 文章分类 OpenStack+Ceph(5) Python笔记(0) CI/CD(4) Ansible(1) Docker笔记(3) shell脚本(24) Linux_quession&answer(2) 调优文档(4) 服务(6) 随手笔记(21) 妄尘集(20) 基础笔记二(8) 基础笔记综合整理(20) 给自己讲linux(114) 最受欢迎的文章 博客停更通知( 21,626 人看过 ) OpenStack(一)( 13,764 人看过 ) 情书( 12,808 人看过 ) 我的青春里没有爱情( 11,083 人看过 ) 操作系统原理--Linux篇(摘录)( 10,195 人看过 ) OpenStack+Ceph云平台卷清理操作( 10,088 人看过 ) OpenStack+Ceph磁盘解锁( 9,775 人看过 ) Docker container 修改MAC( 9,638 人看过 ) JumpServer简介( 8,696 人看过 ) 防火墙规则笔记整理( 8,470 人看过 ) 最近回复 wuzetian: alert("你好,我是一个警告框!"); wuzetian: function myFunction() { alert("你好,我是一个警告框!"); } wuzetian: http://fxme.top/index.php/page/2/ wuzetian: http://fxme.top/index.php/page/2/ wuzetian: 凯哥哇,继续更新,学习学习 wuzetian: 凯哥哇,继续更新,学习学习 wuzetian: 凯哥哇,继续更新,学习学习 wuzetian: 凯哥哇,继续更新,学习学习 wuzetian: 凯哥哇,继续更新,学习学习 wuzetian: 凯哥哇,继续更新,学习学习