兄弟连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学习
兄弟连-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 # 加密模式
- /etc/default/useradd
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. ⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧主分区1主分区2主分区3扩展分区