Linux_Learning_兄弟连

兄弟连Linux学习笔记,用于个人查阅复习使用

  • 安装deb:sudo dpkg -i <filename.deb>
  • 文件目录列举:ls -a
  • 截屏快捷键:Ctrl + Shfit + Prtsc
  • 设置Linux的IP地址:ifconfig eth0 192.168.1.156(ifconfig查询本机ip)
  • df:用于显示目前在 Linux 系统上的文件系统磁盘使用情况统计

文章目录

兄弟连-Linux学习

Chapter 1 Linux系统简介

1.起源:

Unix -> Linux

2.开源软件

  • 使用自由,绝大多数开源软件免费(开源 ≠ \neq =免费)
  • 研究自由,可以获得软件源代码(可以学习大佬编程方法)
  • 散布及改良自由,可以自由传播、改良甚至销售

3.支持互联网的开源技术

LAMP:

  • Linux:操作系统
  • Apache:Web服务器
  • MySQL:数据库
  • PHP: 编程语言

4.Linux应用领域

  • 基于Linux的企业服务器
    • www.netcraft.com:查找企业服务器所用操作系统
  • 嵌入式应用
    • 手机、平板电脑
    • 智能家电:机顶盒、游戏机、数码相机等
    • 智能卡系统
    • 航空系统
    • 银行系统
    • 卡拉OK点歌系统
  • Linux在电影娱乐中的应用
    • CAD/C

5.如何学习Linux

  • 选择命令行

  • 解决问题,根据提示查找文档

  • 英文提示问题

  • windows思维方式(x)

  • 计划+专注+坚持+练习

Chapter 2 Linux安装

1.VMware虚拟机安装与使用

VMware主要特点:

  • 不需要分区或重新开机就能在同一台PC上使用两种以上的操作系统

  • 本机系统可以与虚拟机系统网络通信

  • 可以设定并且随时修改虚拟机操作系统的硬件环境

建议配置:

  • CPU:主频为1GHz以上
  • 内存:1GB以上
  • 硬盘:空闲空、
  • 间8GB以上

2.系统分区

1)磁盘分区:使用分区编辑器在磁盘上划分几个逻辑部分,碟片一旦划分成数个分区,不同类的目录与文件可以存储进不同的分区。

2)分区类型:

  • 主分区:最多只有4个
  • 扩展分区:
    • 最多只能有1个
    • 主分区加扩展分区最多有4个
    • 不能写入数据,只能包含逻辑分区
  • 逻辑分区

3)格式化(高级格式化):又称逻辑格式化,是根据用户选定的文件系统(如FAT16、FAT32、NTFS、EXT2、EXT3、EXT4等),在磁盘的特定区域写入特定数据,在分区中划出一片用于存放文件分配表、目录表等用于文件管理的磁盘空间。

4)硬盘设备文件名

  • Windows操作系统一般不需要给硬件设备分配设备文件名

  • 分区设备文件名:在设备文件名后加编号,逻辑分区只能从5开始,因为前4号用于主分区和扩展分区

硬件 设备文件名
IDE硬盘 /dev/hd[a-d]
SCSI/SATA/USB硬盘 /dev/sd[a-p]
光驱 /dev/cdrom或/dev/sr0
软盘 /dev/fd[0-1]
打印机(25针) /dev/lp[0-2]
打印机(USB) /dev/usb/lp[0-15]
鼠标 /dev/mouse

5)挂载

  • 必须分区:
    • /(根分区)
    • swap分区(交换分区,内存2倍,不超过2GB)
  • 推荐分区
    • /boot(启动分区,200MB)

总结:Linux系统启动前准备需要

  • 分区:把大硬盘分为小的逻辑分区
  • 格式化:写入文件系统
  • 分区设备文件名:给每个分区定义设备文件名
  • 挂载:给每个分区分配挂载点

Linux文件系统与Windows不同,在结构上,Linux根目录要大于其余目录,但是在硬件内存上各目录是分开的

3.Linux系统安装

密码原则:

  • 复杂性
    • 八位字符以上、大小写字母、数字、符号
    • 不能是英文字母
    • 不能是和用户相关的内容
  • 易记忆性
  • 时效性

4.远程登录管理工具

  • 网络设置:
    • 桥接
    • NAT
    • Hash-only

SecureCRT—远程连接工具

WinSCP—文件拷贝工具

Chapter 3 给Linux初学者的意见

1.注意事项

  • Linux严格区分大小写
  • Linux中所有内容以文件形式保存,包括硬件
    • 硬盘文件是/dev/sd[a-p]
    • 光盘文件是/dev/sr0等
  • Linux不靠扩展名区分文件类型
    • 压缩包:".gz",".bz2",".tar.bz2",".tgz"等
    • 二进制软件包:".rpm"
    • 网页文件:"*.html","*.php"
    • 脚本文件:"*.sh"
    • 配置文件:"*.conf"
  • Linux所有的存储设备都必须挂载之后用户才能使用,包括硬盘、U盘和光盘
  • Windows下的程序不能直接在Linux中安装和运行

2.服务器管理及维护

  • Linux各目录的作用
目录名 目录作用
/bin/ 存放系统命令的目录,普通用户和超级用户都可以执行。不过放在/bin下的命令在单用户模式下也可以执行
/sbin/ 保存和系统环境设置相关的命令,只有超级用户可以使用这些命令进行系统环境设置,但是有些命令可以允许普通用户查看
/usr/bin/ 存放系统命令的目录,普通用户和超级用户都可以执行。这些命令和系统启动无关,在单用户模式下不能执行
/usr/sbin/ 存放根文件系统不必要的系统管理命令,例如多数服务程序。只有超级用户可以使用。大家其实可以注意到Linux的系统,在所有“sbin”目录中保存的命令只有超级用户可以使用,“bin”目录中保存的命令所有用户都可以使用
/boot/ 系统启动目录,保存系统启动相关的文件,如内核文件和启动引导程序(grub)文件等
/dev/ 设备文件保存位置。我们已经说过Linux中所有内容以文件形式保存,包括硬件。那么这个目录就是用来保存所有硬件设备文件的
/etc/ 配置文件保存位置。系统内所有采用默认安装方式(rpm安装)的服务的配置文件全部都保存在这个目录当中,如用户账户和密码,服务的 启动脚本,常用服务的配置文件等
/home/ 普通用户的家目录。建立每个用户时,每个用户要有一个默认登录位置,这个位置就是这个用户的家目录,所有普通用户的家目录就是在/home下建立一个和用户名相同的目录。如用户user1的家目录就是/home/user1
/lib/ 系统调用的函数库保存位置
/lost+found/ 当系统意外崩溃或机器意外关机,而产生一些文件碎片放在这里。当系统启动的过程中fsck工具会检查这里,并修复已经损坏的文件系统。这个目录只在每个分区中出现,例如/lost+found就是根分区的备份恢复目录,/boot/lost+found就是/boot分区的备份恢复目录
/media/ 挂载目录。系统建议是用来挂载媒体设备的,例如软盘和光盘
/mnt/ 挂载目录,早期Linux中只有这一个挂载目录,并没有细分。现在这个目录系统建议挂载额外设备,如U盘,移动硬盘和其他操作系统的分区
/misc/ 挂载目录。系统建议用来挂载NFS服务的共享目录。只要是一个已经建立的空目录就可以作为挂载点,哪个目录中挂载什么设备由管理员自己决定
/opt/ 第三方安装的软件保存位置。
/proc/ 虚拟文件系统,该目录中的数据不保存到硬盘当中,而是保存到内存当中。主要保存系统的内核、进程、外部设备状态和网络状态灯。如/proc/cpuinfo是保存CPU信息的。
/sys/ 虚拟文件系统。和/proc目录类似,都是保存在内存当中的,主要是保存于内核相关信息的。
/root/ 超级用户家目录
/srv/ 服务数据目录。一些系统服务启动之后,可以在这个目录中保存所需要的数据
/tmp/ 临时目录。系统存放临时文件的目录,该目录下所有用户都可以访问和写入。建议此目录不存放重要数据,最好每次开机都把该目录清空
/usr/ 系统软件资源目录(Unix Software Resource)
/var/ 动态数据保存位置。主要保存缓存、日志以及软件运行所产生的文件
  • 服务器注意事项
    • 远程服务器不允许关机,只能重启
    • 重启时应该关闭服务
    • 不要在服务器访问高峰运行高负载命令
    • 远程配置防火墙时不要把自己踢出服务器
    • 指定合理的密码规范并定期更新
    • 合理分配权限
    • 定期备份重要数据和日志

Chapter 4 Linux常用命令

1.文件处理命令

1)命令格式与目录处理命令ls
  • 命令格式:
    • 命令 [-选项] [参数],例:ls -la /etc
    • 说明:
      • 个别命令使用不遵循此格式
      • 当有多个选项时,可以写在一起
      • 简化选项与完整选项:-a == -all
  • 目录处理命令:ls(list)
    • 命令所在路径:/bin/ls
    • 执行权限:所有用户
    • 功能描述:显示目录文件
    • 语法:ls 选项[-ald] [文件/目录]
      • -a:显示所有文件,包括隐藏文件
      • -l:详细信息显示(7部分:文件类型及权限/计数/用户/所属组/文件大小/文件最后修改时间/文件名)
      • -d:查看目录属性,与-l配合使用
      • -h:与-l配合使用,人性化展示文件大小
      • -i:查看文件的i节点
    • -rw-r–r--:
      • -文件类型(- 二进制文件 d 目录 l 软链接文件)
      • rw-(u)\r–(g)\r–(o):u(所有者);g(所属组);o(其他人),表示对应的用户所使用的权限
      • r:读;w:写;x:执行
2)目录处理命令

.表示当前目录;..表示上一级命令

1> mkdir(make directories)

  • 命令所在路径:/bin/mkdir
  • 执行权限:所有用户
  • 功能描述:创建新目录,-p 递归创建
  • 语法:mkdir -p [目录名]

2> cd(cahnge directory)

  • 命令所在路径:shell内置命令
  • 执行权限:所有用户
  • 功能描述:切换目录
  • 语法:cd [目录]

3> pwd(print working directory)

  • 命令所在路径:/bin/pwd
  • 执行权限:所有用户
  • 功能描述:显示当前目录
  • 语法:pwd

4> 文件处理命令:rmdir(remove empty directories)

  • 命令所在路径:/bin/rmdir
  • 执行权限:所有用户
  • 功能描述:删除空目录
  • 语法:rmdir [目录名]

5> cp(copy)

  • 命令所在路径:/bin/cp
  • 执行权限:所有用户
  • 功能描述:复制文件或目录
  • 语法:cp -rp [原文件或目录] [目标目录]—可以同时更名
    • -r:复制目录
    • -p:保留文件属性

6> mv(move)

  • 命令所在路径:/bin/mv
  • 执行权限:所有用户
  • 功能描述:剪切文件、改名(同一文件夹下直接改名)
  • 语法:mv [原文件或目录] [目标目录]

7> rm(remove)

  • 命令所在路径:/bin/rm
  • 执行权限:所有用户
  • 功能描述:删除文件
  • 语法:rm -rf [文件或目录]
    • -r:删除目录(会提示是否删除,y/n)
    • -f:强制删除
3)文件处理命令

1> touch

  • 命令所在路径:/bin/touch
  • 执行权限:所有用户
  • 功能描述:创建空文件
  • 语法:touch [文件名]
  • 新建带空格的文件时,要以双引号括起来,否则就是创建两个文件,所以最好不要创建带空格的文件。

2> cat

  • 命令所在路径:/bin/cat
  • 执行权限:所有用户
  • 功能描述:显示文件内容
  • 语法:cat [文件名]
    • -n:显示行号

3> tac

  • 命令所在路径:/usr/bin/tac
  • 执行权限:所有用户
  • 功能描述:显示文件内容(反向列示)
  • 语法:tac [文件名]

4> more

  • 命令所在路径:/bin/more
  • 执行权限:所有用户
  • 功能描述:分页显示文件内容
  • 语法:more [文件名]
    • (空格)或f:翻页
    • (Enter):换行
    • q或Q:退出

5> less

  • 命令所在路径:/usr/bin/less
  • 执行权限:所有用户
  • 功能描述:分页显示文件内容(可向上翻页,除了more的操作外还可以使用上下键浏览,使用/keyword搜索keyword,按n接着搜索下一页)
  • 语法:less [文件名]

6> head

  • 命令所在路径:/usr/bin/head
  • 执行权限:所有用户
  • 功能描述:显示文件前面几行(默认显示前10行)
  • 语法:head [文件名]
    • -n:指定行数

7> tail

  • 命令所在路径:/usr/bin/tail
  • 执行权限:所有用户
  • 功能描述:显示文件后面几行(默认显示后10行)
  • 语法:tail [文件名]
    • -n:指定行数
    • -f:动态显示文件末尾内容
4)链接命令

1> ln(link)

  • 命令所在路径:/bin/ln
  • 执行权限:所有用户
  • 功能描述:生成链接文件
  • 语法:ln -s [原文件] [目标文件]
    • -s:创建链接文件

软链接特征:类似Windows快捷方式

  • lrwxrwxrwx:l软链接
  • 文件大小-只是符号链接
  • 箭头指向源文件(/tmp/issue.soft->/etc/issue)

硬链接特征:

  • 拷贝cp -p +同步更新
  • 通过i节点识别
  • 不能跨分区
  • 不能针对目录使用

2.权限管理命令

1)权限管理命令chmod

1> chmod(change the permissions mode of a file)

  • 命令所在路径:/bin/chmod
  • 执行权限:所有用户
  • 功能描述:改变文件或目录权限
  • 语法:chmod [{ugoa} {±=} {rwx}] [文件/目录](a:all)
    • [mode=421] [文件/目录]:r–4;w–2;x–1(rwxrw-r–:764)
    • -R:递归修改(目录中所含文件权限都会修改)

2> 文件目录权限总结

代表字符 权限 对文件的含义 对目录的含义
r 读权限 可以查看文件内容 可以列出目录中的内容
w 写权限 可以修改文件内容 可以在目录中创建、删除文件
x 执行权限 可以执行文件 可以进入目录
  • 对于目录一般rx权限同时存在
  • 要想删除文件,必须要获取所在目录的写权限
2)其他权限管理命令

1> chown(change file ownership)

  • 命令所在路径:/bin/chown
  • 执行权限:所有用户
  • 功能描述:改变文件或目录的所有者
  • 语法:chown [用户] [文件/目录]

2> chgrp(change file group ownership)

  • 命令所在路径:/bin/chgrp
  • 执行权限:所有用户
  • 功能描述:改变文件或目录的所属组
  • 语法:chgrp [用户组] [文件/目录]

3> umask(the user file-creation mask)

  • 命令所在路径:shell内置命令
  • 执行权限:所有用户
  • 功能描述:显示、设置文件的缺省权限
  • 语法:umask [-S]
    • -S:以rwx形式显示新建文件缺省权限—>(u=rwx,g=rx,o=rx)
  • 注意:
    • 新建文件默认没有可执行权限
    • 单独执行时,得到掩码,比如0222,第一位为特殊权限,后几位为ugo权限
    • 777-022=755—>rwxr-xr-x
    • umask 023—>更改以后新建文件的权限

3.文件搜索命令

1)文件搜索命令find

1> find

  • 命令所在路径:/bin/find
  • 执行权限:所有用户
  • 功能描述:文件搜索
  • 语法:find [搜索范围] [匹配条件]
    • -name:精准搜索,可以使用通配符进行模糊搜索(*任意字符,?单个字符)
    • -iname:不区分大小写
    • -size:指定大小(+n大于;-n小于;n等于,需要换算1k=2数据块=1024字节)
    • -user:指定所有者;-group:指定所属组
    • -amin:访问时间(acess);-cmin:文件属性(change);-mmin:文件内容(modify)(-n分钟之内)
    • -a:两个条件同时满足;-o:两个条件满足一个
    • -type:根据文件类型查找(f:文件d:目录l:软链接文件)
    • -exec/-ok 命令 {} ; :对搜索结果执行操作(-ok有询问确认环节)
    • -inum:分局i节点查找
2)其他搜索命令

1> locate

  • 命令所在路径:/usr/bin/locate
  • 执行权限:所有用户
  • 功能:在文件资料库中查找文件
  • 语法:locate 文件名
    • -i:不考虑文件大小写
  • 注意:不能实施功能,需要使用updatedb命令更新文件资料库,而且不能查找tmp或其他目录下的文件

2> which

  • 命令所在路径:/usr/bin/which
  • 执行权限:所有用户
  • 功能:搜索命令所在目录及别名信息
  • 语法:which 命令

3> whereis

  • 命令所在路径:/usr/bin/whereis
  • 执行权限:所有用户
  • 功能:搜索命令所在目录及帮助文档路径
  • 语法:whereis [命令名称]

4> grep

  • 命令所在路径:/bin/grep
  • 执行权限:所有用户
  • 功能:在文件中搜索字符串匹配的行并输出
  • 语法:grep -iv [指定字串] [文件]
    • -i:不区分大小写
    • -v:排除指定字串(^#:以#开头)

4.帮助命令

1> man(manual)

  • 命令所在路径:/usr/bin/man
  • 执行权限:所有用户
  • 功能:获取帮助信息
  • 语法:man [命令/配置文件]
  • 注意:
    • 如果是配置文件,不需要提供绝对路径
    • 1:命令的帮助;5:配置文件的帮助(可在man后加,确定查看类型)
    • whatis 命令/apropos 配置文件:查看对应命令/配置文件的功能
    • 命令 --help:找到命令的选项—>info 命令(类似man)
    • 不能得到shell命令的帮助

2> help

  • 命令所在路径:Shell内置命令(用which/whereis找不到命令所在路径)
  • 执行权限:所有用户
  • 功能:获取Shell内置命令的帮助信息
  • 语法:help 命令

5.用户管理命令

1> useradd

  • 命令所在路径:/usr/sbin/useradd
  • 执行权限:root
  • 功能:添加新用户
  • 语法:useradd 用户名

2> passwd

  • 命令所在路径:/usr/bin/passwd
  • 执行权限:所有用户
  • 功能:设置用户密码
  • 语法:passwd 用户名
  • 注意:普通用户更改密码必须符合密码要求,且只能更改自身密码

3> who

  • 命令所在路径:/usr/bin/who
  • 执行权限:所有信息
  • 功能:查看登录用户信息
  • 语法:who
  • 返回信息:登录用户名 登录终端(tty本地登录;pts远程终端) 登录时间(IP地址)

4> w

  • 命令所在路径:/usr/bin/w
  • 执行权限:所有用户
  • 功能:查看登录用户详细信息
  • 语法:w
  • 返回信息:除了who返回的信息外,还包括:
    • 当前系统时间,系统运行了多长时间(up),用户数,系统负载情况
    • 各用户登录后空闲时间(IDLE),WHAT当前登录执行的操作,PCPU操作所占用CPU时间,JCPU累积占用CPU时间

6.压缩解压命令

1> gzip(GNU zip)

  • 命令所在路径:/bin/gzip
  • 执行权限:所有用户
  • 功能:压缩文件
  • 语法:gzip [文件]
  • 压缩后文件格式:.gz(只能压缩文件,不保留源文件)

2> gunzip(GNU unzip)

  • 命令所在路径:/bin/gunzip
  • 执行权限:所有用户
  • 功能:解压缩.gz的压缩文件
  • 语法:gunzip [压缩文件]/(gzip -d …)

3> tar

  • 命令所在路径:/bin/tar
  • 执行权限:所有用户
  • 功能:打包目录
  • 语法:tar 选项[-zcf] [压缩后文件名] [目录]
    • -c/-x:打包/解包
    • -v:显示详细信息
    • -f:指定文件名/解压文件
    • -z:打包同时压缩/解压缩(将-zcf换成-jcf即可压缩成.tar.bz2格式压缩包/将-zxf换成-jxf即可解压缩.tar.bz2格式压缩包)
  • 压缩后文件格式:.tar.gz

4> zip

  • 命令所在路径:/usr/bin/zip
  • 执行权限:所有用户
  • 功能:压缩文件/目录
  • 语法:zip 选项[-r] [压缩后文件名] [文件/目录]
    • -r:压缩目录
  • 压缩后文件格式:.zip(Windows/Linux都支持)

5> unzip

  • 命令所在路径:/usr/bin/unzip
  • 执行权限:所有用户
  • 功能:解压缩.zip的压缩文件
  • 语法:unzip [压缩文件]

6> bzip2

  • 命令所在路径:/usr/bin/bzip2
  • 执行权限:所有用户
  • 功能:压缩文件
  • 语法:bzip2 选项[-k] [文件]
    • -k:产生压缩文件后保留源文件
  • 压缩后文件格式:.bz2

7> bunzip2

  • 命令所在路径:/usr/bin/bunzip2
  • 执行权限:所有用户
  • 功能:解压缩文件
  • 语法:bunzip2 选项[-k] [压缩文件]
    • -k:解压缩后保留源文件

7.网络命令

1> write

  • 命令所在路径:/usr/bin/write
  • 执行权限:所有用户
  • 功能:给用户发信息,以Ctrl+D保存结束
  • 语法:write <用户名>(在线用户)

2> wall(write all)

  • 命令所在路径:/usr/bin/wall
  • 执行权限:所有用户
  • 功能:发广播信息
  • 语法:wall [message]

3> ping

  • 命令所在路径:/bin/ping
  • 执行权限:所有用户
  • 功能:测试网络连通性
  • 语法:ping 选项 IP地址
    • -c: 指定发送次数(默认一直执行,Ctrl+C停止)

4> ifconfig(interface configure)

  • 命令所在路径:/sbin/ifconfig
  • 执行权限:root
  • 功能:查看和设置网卡信息
  • 语法:ifconfig 网卡名称 IP地址

5> mail

  • 命令所在路径:/bin/mail
  • 执行权限:所有用户
  • 功能:查看发送电子邮件
  • 语法:mail [用户名]

6> last

  • 命令所在路径:/usr/bin/last
  • 执行权限:所有用户
  • 功能:列出目前与过去登入系统的用户信息
  • 语法:last

7> lastlog

  • 命令所在路径:/usr/bin/lastlog
  • 执行权限:所有用户
  • 功能:检查某特定用户上次登录的时间
  • 语法:lastlog -u uid (只查看该用户的信息)

8> traceroute

  • 命令所在路径:/bin/traceroute
  • 执行权限:所有用户
  • 功能:显示数据包到主机间的路径
  • 语法:traceroute

9> netstat

  • 命令所在路径:/bin/netstat
  • 执行权限:所有用户
  • 功能:显示网络相关信息
  • 语法:netstat [选项]
    • -t:TCP协议
    • -u:UDP协议
    • -l:监听
    • -r:路由
    • -n:显示IP地址和端口号

10> setup

  • 命令所在路径:/usr/bin/setup
  • 执行权限:root
  • 功能:配置网络
  • 语法:setup(RedHat系列linux特有)
  • service network restart生效(永久生效)

11> 挂载命令mount

  • 命令所在路径:/bin/mount
  • 执行权限:所有用户
  • 功能:列出目前与过去登入系统的用户信息
  • 语法:mount [-t 文件系统] 设备文件名 挂载点
  • umount:卸载,示例如下
    • mount [-t iso9660] /dev/sr0 /mnt/cdrom/
    • umount /dev/sr0[/mnt/cdrom/]

8.关机重启命令

1> shutdown

  • 语法:shutdown [选项] 时间
    • -c:取消前一个关机命令
    • -h:关机
    • -r:重启

2> 其他关机命令

  • halt
  • poweroff
  • init 0

3> 其他重启命令

  • reboot
  • init 6

4> 系统运行级别(cat /etc/inittab查看–>runlevel:查看当前运行级别)

  • 0:关机
  • 1:单用户(类似安全模式)
  • 2:不完全多用户,不含NFS服务(文件共享服务,不联网)
  • 3:完全多用户
  • 4:未分配
  • 5:图形界面(X…)
  • 6:重启

5> 退出登录命令:logout

Chapter 5 文本编辑器Vim

Vim常用操作

  • Vim没有菜单,只有命令
  • Vim操作模式:
    • 进入:vi filename—>命令模式—>:wq—>退出
    • 命令模式下:iao—>插入模式—>ESC—>命令模式
    • 编辑模式:命令以回车结束运行
  • 插入命令:
命令 作用
a 在光标所在字符后插入
A 在光标所在行尾插入
i 在光标所在字符前插入
I 在光标所在行行首插入
o 在光标下插入新行
O 在光标上插入新行
  • 定位命令:
命令 作用
: set nu 设置行号
: set nonu 取消行号
gg 到第一行
G 到最后一行
nG 到第n行
: n 到第n行
$ 移至行尾
0 移至行首
  • 删除命令
命令 作用
x 删除光标所在处字符
nx 删除光标所在处后n个字符
dd 删除光标所在行,ndd删除n行
dG 删除光标所在行到文件末尾内容
D 删除光标所在处到行尾内容
: n1,n2d 删除指定范围的行
  • 复制和剪切命令
命令 作用
yy 复制当前行
nyy 复制当前行以下n行
dd 剪切当前行
ndd 剪切当前行以下n行
p、P 粘贴在当前光标所在行下或行上
  • 替换和取消命令
命令 作用
r 取代光标所在处字符
R 从光标所在处开始替换字符,按ESC结束
u 取消上一步操作
  • 搜索和搜索替换命令
命令 作用
/string 搜索指定字符串;搜索时忽略 大小写:set ic
n 搜索指定字符串的下一个出现位置
:%s/old/new/g 全文替换指定字符串
:n1,b2s/old/new/g 在一定范围内替换指定字符串(c:询问)
  • 保存和退出命令
命令 作用
:w 保存修改
:w new_filename 另存为指定文件
:wq 保存修改并退出
ZZ 快捷键,保存修改并退出
:q! 不保存修改退出
:wq! 保存修改并退出(文件所有者及root可使用)

Vim使用技巧

  • 导入命令执行结果 :r !命令
  • 定义快捷键 :map 快捷键 触发命令
    • 范例: :map ^P(Ctrl + V + P) I#<ESC>/:map ^B 0x
  • 连续行注释
    • :n1,n2s/^/#/g
    • :n1,n2s/^#//g
    • :n1,n2s/^g
  • 替换 :ab mymail samlee@lampbrother.net
  • 配置文件一般在家目录下的.vimrc中,为了使命令永久生效,可以在配置文件中

Chapter 6 软件包管理

1、软件包管理简介

1)软件包分类
  • 源码包

    • 脚本安装包
  • 二进制包(RPM包、系统默认包)—>(源码包编译后的)

    Notes:Windows软件不能直接在Linux中使用

2)源码包

源码包优点:

  • 开源,如果有足够的能力,可以修改源代码
  • 可以自由选择所需的功能
  • 软件是编译安装,所以更加适合自己的系统,更加稳定也效率更高
  • 卸载方便

源码包的缺点:

  • 安装过程步骤较多,尤其安装较大的软件集合时(如LAMP环境搭建),容易出现拼写错误
  • 编译过程时间较长,安装比二进制安装时间长
  • 因为是编译安装,安装过程中一旦报错新手很难解决
3)RPM包

二进制包的优点:

  • 包管理系统简单,只通过几个命令就可以实现包的安装、升级、查询和卸载
  • 安装速度比源码包安装快的多

二进制包缺点:

  • 经过编译,不再可以看到源代码
  • 功能选择不如源码包灵活
  • 依赖性

2、RPM包管理-rpm命令管理

1)包命名与依赖性

1> RPM包命名原则

httpd-2.2.15-15.e16.centos.1.i686.rpm

  • httpd:软件包名(区分包全名)
  • 2.2.15:软件版本
  • 15:软件发布的次数
  • e16.centos:适合的Linux平台
  • i686:适合的硬件平台(noarch或没有表示适合所有平台)
  • rpm:rpm包扩展名

2> RPM包依赖性

  • 树形依赖:a->b->c
  • 环形依赖:a->b->c->a
  • 模块依赖:模块依赖查询网站:www.rpmfind.net

3> 包全名与包名

  • 包全名:操作的包是没有安装的软件包时,使用包全名。而且要注意路径
  • 包名:操作已经安装的软件包时,使用包名。是搜索/var/lib/rpm/中的数据库
2)安装升级与卸载

1> RPM安装

rpm -ivh 包全名

选项:

  • -i(install):安装
  • -v(verbose):显示详细信息
  • -h(hash):显示进度
  • –nodeps:不检测依赖性

2> RPM包升级

rpm -Uvh 包全名

选项:

  • -U(upgrade):升级

3> RPM包卸载

rpm -e 包名

选项:

  • -e(erase):卸载
  • –nodeeps:不检查依赖性
3)查询

1> 查询是否安装

rpm -q 包名/-a

  • -q:查询包是否安装
  • -a:查询所有已安装的RPM包,一般与-q结合使用

2> 查询软件包详细信息

rpm -qi 包名

选项:

  • -i:查询软件信息
  • -p:查询未安装包信息(+包全名)

3> 查询包中文件安装位置

rpm -ql 包名

选项:

  • -l:列表(list)
  • -p:查询未安装包信息(+包全名)

4> 查询系统文件属于哪个RPM包

rpm -qf 系统文件名

选项:

  • -f:查询系统文件属于哪个RPM包

5> 查询软件包的依赖性

rpm -qR 包名

选项:

  • -R:查询软件包的依赖性
  • -p:查询未安装包信息(+包全名)
4)校验和文件提取

1> RPM包校验

rpm -V 已安装的包名

选项:

  • -V:校验指定RPM包中的文件(Verify)

验证内容中的8个信息的具体内容如下:

  • S:文件大小是否改变
  • M:文件的类型或文件的权限是否改变
  • 5:文件的MD5校验和是否改变(可以看成文件内容是否改变)
  • D:设备的中,从代码是否改变
  • L:文件路径是否改变
  • U:文件的属主(所有者)是否改变
  • G:文件的属组是否改变
  • T:文件的修改时间是否改变

文件类型:

  • c:配置文件(config file)
  • d:普通文档(documentation)
  • g:“鬼”文件(ghost file),很少见,就是该文件不应该被这个RPM包包含
  • l:授权文件(license file)
  • r:描述文件(read me)

2> RPM包中文件提取

rpm2cpio 包全名 | cpio -idv .文件绝对路径

  • rpm2cpio:将rpm包转换为cpio格式的命令
  • cpio:标准工具,用于创建软件档案文件和从档案文件中提取文件

cpio 选项 < [文件|设备]

选项:

  • -i:copy-in模式,还原
  • -d:还原时自动新建目录
  • -v:显示还原过程

3、RPM包管理-yum在线管理

1)IP地址配置和网络yum源

1> IP地址配置

setup # 启动setup工具(注意:setup只针对于Red Hat系列的Linux系统)
vi /etc/sysconfig/network-scripts/ifcfg-eth0 # 把ONBOOT=“no”改为yes,启动网卡
service network restart # 重启网络服务(永久生效)

2> 网络yum源

vi /etc/yum.repos.d/CentOS-Bare.repo

  • [base]:容器名称,一定要放在[]中
  • name:容器说明,可以随便写
  • mirrorlist:镜像站点,可以注释掉
  • baseurl:yum源服务器地址。
  • enabled:此容器是否生效,如果不写或写成enable=1都是生效,否则不生效。
  • gpgcheck:如果是1是指RPM的数字证书生效,如果是0则不生效。
  • gpgkey:数字证书的公钥文件保存位置。不用修改
2)yum命令

1> 常用yum命令

(1)查询:

  • yum list:查询所有可用软件包列表
  • yum search 关键字:搜索服务器上所有和关键字相关的包

(2)安装:

yum -y install 包名

  • 选项:
    • install:安装
    • -y:自动回答yes

(3) 升级:

yum -y update 包名

  • 选项:
    • update:升级
    • -y:自动回答yes

(4) 卸载:

yum -y remove 包名

  • 选项:
    • remove:卸载
    • -y:自动回答yes

yum升级和卸载命令使用要注意,update一定要加包名,remove会卸载相应包所对应的所有依赖,所以不建议使用

2> YUM软件组管理命令

  • yum grouplist:列出所有可用的软件组列表
  • yum groupinstall 软件组名:安装指定软件组,组名可以由grouplist查询出来
  • yum groupremove 软件组名:卸载指定软件组

软件组名中如果带空格,则需用双引号引起来

3)光盘yum源搭建

光盘yum源搭建步骤:

1> 挂载光盘:mount /dev/cdrom /mnt/cdrom

2> 让网络yum源文件失效:

cd /etc/yum.repos.d/
mv CentOS-Base.repo CentOS-Base.repo.bak
mv CentOS-Debuginfo.repo CentOS-Debuginfo.repo.bak
mv CentOS-Vault.repo CentOS-Vault.repo.bak

3> 修改光盘yum源文件

vim CentOS-Media.repo
===================================
[c6-media]
name=CentOS-$releasever - Media
baseurl=file:///mnt/cdrom
# 地址为你自己的光盘挂载地址
#		file:///media/cdrom/ 
#		file:///media/cdrecorder/
# 注释这两个不存在的地址
gpgcheck=1
enabled=1
# 把enabled=0改为enabled=1,让这个yum源配置文件生效
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

4、源码包管理

1)源码包和RPM包的区别

1> 区别

  • 安装之前的区别:概念上的区别
  • 安装之后的区别:安装位置不同

2> RPM包安装位置(默认位置)

  • /etc/:配置文件安装目录
  • /usr/bin/:可执行的命令安装目录
  • /usr/lib/:程序所使用的函数库保存位置
  • /usr/share/doc/:基本的软件使用手册保存位置
  • /usr/share/man/:帮助文件保存位置

3> 源码包安装位置:安装在指定位置当中,一般是/usr/local/软件名/

4> 安装位置不同带来的影响

  • RPM包安装的服务可以使用系统服务管理命令(service)来管理,例如RPM包安装的apache的启动方法:

    • /etc/rc.d/init.d/httpd start(绝对路径启动)

    • service httpd start(service红帽专有,别的liunx不一定有)

  • 源码包安装的服务不能被服务管理命令管理,因为ie没有安装到默认路径中。所以只能用绝对路径进行服务管理,如/usr/local/apache2/bin/apachect1 start

2)源码包安装过程

1> 安装准备

  • 安装C语言编译器
  • 下载源码包,比如http://mirror.bit.edu.cn/apahce/httpd/

2> 安装和注意事项

  • 源代码保存位置:/usr/local/src/
  • 软件安装位置:/usr/local
  • 如何确定安装过程错误:
    • 安装过程停止
    • 并出现error、warning或no的提示

3> 源码包安装过程

  • 下载源码包

  • 解压缩下载的源码包

  • 进入解压缩目录

  • ./configure软件配置与检查

    • 定义需要的功能环境
    • 检测系统环境是否符合安装要求
    • 把定义好的功能选项和检测系统环境的信息都写入Makefile文件,用于后续的编辑
  • make 编译

    • make clean(报错时,可以运行该命令清空安装包)
  • make install 编译安装

4> 源码包的卸载

不需要卸载命令,直接删除安装目录即可,不会遗留任何垃圾文件

5、脚本安装包与软件包选择

1)脚本安装包
  • 脚本安装包并不是独立的软件包类型,常见安装的是源码包
  • 是人为把安装过程写成了自动安装的脚本,只要执行脚本,定义简单参数,就可以完成安装
  • 非常类似于Windows下软件的安装方式
2)Webmin的作用
  • Webmin是一个基于Web的Linux系统管理界面。可以通过图形化的方式设置用户帐号、Apache、DNS、文件共享等服务
3)Webmin安装过程
  • 下载软件:http://sourceforge.net/projects/webadmin/files/webmin/
  • 解压缩,并进入解压缩目录
  • 执行安装脚本(./setup.sh)Ctrl+Backspace可以删除命令行中的^H等误操作

Chapter 7 用户和用户组管理

1、用户配置文件

1)用户信息文件/etc/passwd

1> 用户管理简介

  • 越是对服务器安全性要求高的服务器,越需要建立合理的用户权限等级制度和服务器操作规范
  • 在Linux中主要是通过用户配置文件来查看和修改用户信息

2> /etc/passwd

  • 第1字段:用户名称
  • 第2字段:密码标志(x:表示有密码,密码存放与/etc/shadow中)
  • 第3字段:UID(用户ID,通过更改可以变为重复用户,如果相同的话,拥有相同权限)
    • 0:超级用户
    • 1-499:系统用户(伪用户)
    • 500-65535:普通用户
  • 第4字段:GID(用户初始组ID)
  • 第5字段:用户说明
  • 第6字段:家目录
    • 普通用户:/home/用户名/
    • 超级用户:/root/
  • 第7字段:登录之后的Shell

3> 初始组和附加组

  • 初始组:用户一登录就立刻拥有这个用户组的相关权限,每个用户的初始组只能一个,一般就是和这个用户的用户名相同的组名作为这个用户的初始组
  • 附加组:用户可以加入多个其他的用户组,并拥有这些组的权限,附加组可以有多个。

4> Shell是什么

  • Shell是Linux的命令解释器
  • 在/etc/passwd当中,除了标准Shell是/bin/bash之外,还可以写如/sbin/nologin
2)影子文件/etc/shadow

1> 影子文件/etc/shadow

  • 第1字段:用户名
  • 第2字段:加密密码
    • 加密算法升级为SHA512散列加密算法
    • 如果密码是“!!”或“*”代表没有密码,不能登录
  • 第3字段:密码最后一次修改日期
    • 使用1970年1月1日作为标准时间,每过一天时间戳加1
  • 第4字段:两次密码的修改间隔时间(和第3字段相比)
  • 第5字段:密码有效期(和第3字段相比)
  • 第6字段:密码修改到期前的警告天数(和第5字段相比)
  • 第7字段:密码过期后的宽限天数(和第5字段相比)
    • 0:代表密码过期后立即失效
    • -1:代表密码永远不会失效
  • 第8字段:账号失效时间
    • 要用时间戳表示
  • 第9字段:保留

2> 时间戳换算

  • 把时间戳换算为日期:
    • date -d “1970-01-01 16066 days”
  • 把日期换算为时间戳
    • echo $(($(date --date=“2014/01/06”+%s)/86400+1))
3)组信息文件/etc/group和组密码文件/etc/gshadow

1> 组信息文件/etc/group

  • 第1字段:组名
  • 第2字段:组密码标志
  • 第3字段:GID
  • 第4字段:组中附加用户

2> 组密码文件/etc/gshadow

  • 第1字段:组名
  • 第2字段:组密码
  • 第3字段:组管理员用户名
  • 第4字段:组中附加用户

2、用户管理相关文件

1> 用户的家目录

  • 普通用户:/home/用户名/,所有者和所属组都是此用户,权限是700
  • 超级用户:/root/,所有者和所属组都是root用户,权限是550

如果要把普通用户改为超级用户,需要更改UID,而非GID,Linux系统区分普通用户和超级用户看命令行中首字符是#(超级用户)还是$

2> 用户的邮箱

  • /var/spool/mail/用户名/

3> 用户模板目录

  • /etc/skel/

创建新用户时,会自动产生模板目录中的文件

3、用户管理命令

1)用户添加命令useradd

useradd [选项] 用户名

  • 选项:
    • -u UID:手工指定用户的UID号
    • -d 家目录:手工指定用户的家目录
    • -c 用户说明:手工指定用户的说明
    • -g 组名:手工指定用户的初始组
    • -G 组名:指定用户的附加组
    • -s shell:手工指定用户的登录shell。默认是/bin/bash
  • 添加默认用户时,会自动修改目录:/etc/passwd, /etc/shadow, /etc/group, /etc/gshadow,自动生成 /home/用户名/, /var/spool/mail/用户名
  • 指定选项添加用户,比如:useradd -u 550 -G root,bin -d /home/lamp1 -c “test user” -s /bin/bash sc
  • 用户默认值文件:
    • /etc/default/useradd
      • GROUP=100 # 用户默认组(公有模式下的设定,一般为私有模式,用户的默认组为本身)
      • HOME=/home # 用户家目录
      • INACTIVE=-1 # 密码过期宽限天数(shadow文件7字段)
      • EXPIRE= # 密码失效时间(8)
      • SHELL=/bin/bash # 默认shell
      • SKEL=/etc/skel # 模板目录
      • CREATE_MAIL_SPOOL=yes # 是否建立邮箱
    • /etc/login.defs
      • PASS_MAX_DAYS 99999 # 密码有效期(5)
      • PASS_MIN_DAYS 0 # 密码修改间隔(4)
      • PASS_MIN_LEN 5 # 密码最小5位(该模式不生效,改用PAM)
      • PASS_WARN_AGE 7 # 密码到期警告(6)
      • UID_MIN 500 # 最小和最大UID范围
      • GID_MAX 60000
      • ENCRYPT_METHOD SHA512 # 加密模式
2)修改用户密码passwd

passwd [选项] 用户名(针对超级用户)

  • 选项:
    • -S:查询用户密码的密码状态。仅root用户可用
    • -l:暂时锁定用户。仅root用户可用
    • -u:解锁用户。仅root用户可用
    • -stdin:可以通过管道符输出的数据作为用户密码

不加选项和用户名时,可以修改当前用户的密码,对于超级用户可以修改所有用户密码,普通用户修改密码不加用户名,而且需要确定当前用户密码而且要符合密码原则

  • 查看密码状态:passwd -S 用户名
    • 用户名 PS 用户名和密码设定时间 密码修改间隔时间 密码有效期 警告时间 密码不失效
  • 锁定和解锁用户:本质上是对密码文件/etc/passwd文件进行更改,在密码前加/去“!!”
  • 使用字符串作为用户的密码,比如:echo “123” |passwd --stdin 用户名
3)修改用户信息usermod/修改用户密码状态chage

1> usermod [选项] 用户名

  • 选项:
    • -u UID:修改用户的UID号
    • -c 用户说明:修改用户的说明
    • -G 组名:修改用户的附加组
    • -L:临时锁定用户(Lock)
    • -U:解锁用户锁定(Unlock)

2> chage [选项] 用户名

  • 选项:
    • -l:列出用户的详细密码状态
    • -d 日期:修改密码最后一次更改日期(shadow3字段)
    • -m 天数:两次密码修改间隔(4字段)
    • -M 天数:密码有效期(5字段)
    • -W 天数:密码过期前警告天数(6字段)
    • -I 天数:密码过后宽限天数(7字段)
    • -E 日期:账号失效时间(8字段)

chage -d 0 用户名:该用户一登录就要改密码

4)删除用户userdel/用户切换命令su

1> userdel [-r] 用户名

  • 选项:
    • -r:删除用户的同时删除用户的家目录(一般情况下都要加)
  • 手工删除用户,需要删除/var/spool/mail/指定用户、/home/指定用户/,并修改/etc/passwd, /etc/shadow, /etc/group, /etc/gshadow文件
  • 查看用户ID:id 用户名(ugo id)

2> su [选项] 用户名

  • 选项:
    • - :选项只使用“-”代表连带用户的环境变量一起切换(env 用户名:查看当前用户的环境变量)
    • -c 命令:仅执行一次命令,而不切换用户身份

如果不加选项,那么环境变量不会切换,切换为超级用户需要密码

4、用户组管理命令

1)添加用户组

groupadd [选项] 组名

选项:

  • -g GID:指定组ID

2)修改用户组

groupmod [选项] 组名

选项:

  • -g GID:修改组ID
  • -n 新组名:修改组名

3)删除用户组

groupdel 组名

要想删除组不能有初始用户存在

4)把用户添加入组或从组中删除

gpasswd 选项 组名

选项:

  • -a 用户名:把用户加入组
  • -d 用户名:把用户从组中删除

Chapter 8 权限管理

1、ACL权限

1)ACL权限简介与开启
  • 为了解决所有者、所属组、其他人身份不同的情况,产生了ACL权限,用于更改单个用户的权限
  • 查看分区ACL权限是否开启:dumpe2fs -h /dev/sda3(是否可以应用ACL权限由该分区决定)
  • 了解,现行Linux系统默认都支持ACL权限

1> dumpe2fs–>查询指定分区详细文件系统信息的命令

选项:

  • -h:仅显示超级块中的信息,而不显示磁盘块组的详细信息

2> 临时开启分区ACL权限

mount -o remount,acl / # 重新挂载根分区,并挂载加入acl权限

3> 永久开启分区ACL权限

  • vi /etc/fstadb–>打开该文件,并在相应分区下增加acl,比如:

UUID=c2ca..... / ext4 defaults 1 1在defaults后加,acl

  • mount -o remount / # 重新挂载文件系统或重启动系统,使修改生效
2)查看与设定ACL权限
  • 查看ACL命令:getfacle 文件名 # 查看acl权限
  • 设定ACL权限的命令:setfacl 选项 文件名
    • 选项:
      • -m:设定ACL权限
      • -x:删除指定的ACL权限
      • -b:删除所有的ACL权限
      • -d:设定默认ACL权限
      • -k:删除默认ACL权限
      • -R:递归设定ACL权限
    • ex: setfacl -m u:st:rx /project/ # 给用户st赋予r-x权限,使用“u:用户名:权限”格式(ll命令下会多一个+,如rwxr-xr–+)
  • 给用户组设定ACL权限:setfacl -m g:tgroup2:rwx project/ # 为组tgroup2分配ACL权限,使用“g:组名:权限”格式
3)最大有效权限与删除ACL权限

1> 最大有效权限mask

  • mask是用来指定最大有效权限的。如果我给用户赋予了ACL权限,是需要和mask权限“相与”才能得到用户的真正权限
A B and
r r r
r - -
- r -
- - -
  • 修改最大有效权限:setfacl -m m:rx 文件名 # 设定mask权限为r-x,使用“m:权限”格式(这么做会影响除了所有者意外的其他用户/组,无论如何改,都不会超过最大有效权限)

2> 删除ACL权限

  • setfacl -x u:用户名(g:组名) 文件名 # 删除指定用户/组的ACL权限

  • setfacl -b 文件名 # 删除文件的所有ACL权限

4)默认ACL权限和递归ACL权限

1> 递归ACL权限

  • 递归是父目录在设定ACL权限时,所有的子文件和子目录也会拥有相同的ACL权限
  • setfacl -m u:用户名:权限 -R 文件名(注意-R的位置,如果在此之后又在父目录下创建文件夹,则新建文件夹不具有ACL权限)

2> 默认ACL权限

  • 默认ACL权限的作用是如果给父目录设定了默认的ACL权限,那么父目录中所有新建的子文件都会继承父目录的ACL权限
  • setfacl -m d:u:用户名:权限 文件名(该命令对以前新建的文件没有作用)

2、文件特殊权限

1)SetUID

1> SetUID的功能

  • 只有可以执行的二进制程序才能设定SUID权限
  • 命令执行者要对该程序拥有x**(执行)权限**(如果没有执行权限,那么在权限位上为S报错,而非s)
  • 命令执行者在执行该程序时获得该程序文件属主的身份(在执行程序的过程中灵魂附体为文件的属主)
  • SetUID权限只在该程序执行过程中有效,也就是说身份改变只在程序执行过程中有效
  • 示例:
    • passwd命令拥有SetUID权限,所以普通用户可以修改自己的密码
    • cat命令没有SetUID权限,所以普通用户不能查看/etc/shadow文件内容

2> 设定SetUID的方法

4代表SUID

  • chmod 4755 文件名
  • chmod u+s 文件名

3> 取消SetUID的方法

  • chmod 755 文件名
  • chmod u-s 文件名

4> 危险的SetUID

  • 关键目录应严格控制写程序,比如“/”、“/usr”等
  • 用户的密码设置要严格遵循密码三原则
  • 对系统中默认应该具有SetUID权限的文件作一列表,定时检查有没有这之外的文件被设置了SetUID权限
2)SetGID

1> SetGID针对文件的作用

  • 只有可以执行的二进制程序才能设定SGID权限
  • 命令执行者要对该程序拥有x**(执行)权限**(如果没有执行权限,那么在权限位上为S报错,而非s)
  • 命令执行者在执行该程序时,组身份升级为该程序文件爱你的属组
  • SetGID权限只在该程序执行过程中有效,也就是说组身份改变只在程序执行过程中有效
  • 示例:给locate命令赋予SetGID权限
    • /usr/bin/locate是可执行二进制程序,可以赋予SGID
    • 执行用户lamp对/usr/bin/locate命令拥有执行权限
    • 执行/usr/bin/locate命令时,组身份会升级为slocate组,而slocate组对/var/lib/mlocate/mlocate.db数据库拥有r权限,所以普通用户可以使用locate命令查询mlocate.db数据库
    • 命令结束,lamp用户的组身份返回为lamp组

2> SetGID针对目录的作用

  • 普通用户必须对此目录拥有rx权限,才能进入此目录
  • 普通用户在此目录中的有效组会变成此目录的属组
  • 若普通用户对此目录拥有w权限时,新建的文件的默认属组是这个目录的属组

3> 设定SetGID

2代表SGID

  • chmod 2755 文件名
  • chmod g+s 文件名

4> 取消SetGID的方法

  • chmod 755 文件名
  • chmod g-s 文件名
3)Sticky BIT

一般不会对文件的文件特殊权限赋予7,因为这样没有意义,因此常见4,2,1

1> Sticky粘着位作用

  • 粘着位目前只对目录有效(权限其他位多个t)
  • 普通用户对该目录拥有wx权限,即普通用户可以在此目录拥有写入权限
  • 如果没有粘着位,因为普通用户拥有w权限,所以可以删除此目录下所有文件,包括其他用户建立的文件。一旦赋予了粘着位,除了root可以删除所有文件,普通用户就算拥有w权限,也只能删除自己建立的文件,但是不能删除其他用户建立的文件

2> 设置和取消粘着位

  • 设置粘着位

    • chmod 1755 文件名

    • chmod o+t 文件名

  • 取消粘着位

    • chmod 777 文件名

    • chmod o-t 文件名

4> 危险的SetUID

  • 关键目录应严格控制写程序,比如“/”、“/usr”等
  • 用户的密码设置要严格遵循密码三原则
  • 对系统中默认应该具有SetUID权限的文件作一列表,定时检查有没有这之外的文件被设置了SetUID权限

3、文件系统属性chattr权限

1)chattr命令格式

chattr [±=] [选项] 文件或目录名

  • +:增加权限
  • -:删除权限
  • =:等于某权限

选项:

  • i:如果对文件设置i属性,那么不允许对文件进行删除、改名,也不能添加和修改数据;如果对目录设置i属性,那么只能修改目录下文件的数据,但不允许建立和删除文件(对root用户也有用,相当于锁文件,可以有效防止误操作)
  • a:如果对文件设置a属性,那么只能在文件中增加数据,但是不能删除也不能修改数据;如果对目录设置a属性,那么只允许在目录中建立和修改文件,但是不允许删除(只能追加)

2)查看文件系统属性

lsattr 选项 文件名

选项:

  • -a:显示所有文件和目录
  • -d:若目标是目录,仅列出目录本身的属性,而不是子文件的

4、系统命令sudo权限

1)sudo权限
  • root把本来只能超级用户执行的命令赋予普通用户执行
  • sudo的操作对象是系统命令
2)sudo使用

visudo # 实际修改的是/etc/sudoers文件

root  ALL=(ALL)  ALL
# 用户名 被管理主机的地址(IP地址为用户IP)=(可使用的身份) 授权命令(绝对路径)
# %wheel ALL=(ALL) ALL
# %组名 被管理主机的地址=(可使用的身份) 授权命令(绝对路径)
  • 示例:授权sc用户可以重启服务器
visudo
sc ALL=/sbin/shutdown -r now
# 不建议给普通用户提供vim权限,这样做会使普通用户变成root用户对系统文件进行更改
su - sc
sudo -l # 查看可用的sudo命令
sudo /sbin/shutdown -r now # 普通用户执行sudo赋予的命令

Chapter 9 文件系统管理

1、回顾分区和文件系统

1)分区类型
  • 主分区:总共最多只能分4个
  • 扩展分区:只能有一个,也算主分区的一种,也就是说主分区加扩展分区最多有4个,但是扩展分区不能存储数据和格式化,必须再划分成逻辑分区才能使用。
  • 逻辑分区:在扩展分区中划分,对于IDE硬盘,Linux最多支持59个逻辑分区;对于SCSI硬盘Linux最多支持11个逻辑分区

分区表示方法:

  • { 主 分 区 1 主 分 区 2 主 分 区 3 扩 展 分 区 { 逻 辑 分 区 1 逻 辑 分 区 2 逻 辑 分 区 3 \left\{\begin{aligned}\begin{array}{rcl}&&主分区1\\&&主分区2\\&&主分区3\\&&扩展分区\left\{\begin{array}{rcl}逻辑分区1\\逻辑分区2\\逻辑分区3\end{array}\right. \end{array}\end{aligned}\right. 123
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值