命令行入门基础
命令行基础
命令 条件/参数 对象
rm -f /tmp/test.txt
ctrl + 命令行快捷键
ctrl + c canncel 消除当前操作 ctrl + l (小写字母L) clear(命令)清空当前屏幕 ctr + d 退出当前用户 ctrl + r 查找历史命令 history|grep ctrl + a 把光标移动到行首 crtl + e 把光标移动到行尾 ctrl + u 把光标行首的内容删除/剪切 ctrl + y 粘贴 ctrl + k 把光标到行位的内容删除/剪切 ctrl + w 删除当前位置至上一个空格的符号
man 获取命令帮助信息
man +命令 manual (手动 手册 ) 如:man cp
help 获取命令帮助信息
命令 --help (查询命令 精简版的帮助) 如:shutdown --help
重启 关机和注销命令
# 重启 shutdown -r 10 #十分钟之后重启 shutdown -r now #立即重启 reboot # 立即重启 init 6 # 切换运行级别到6,6表示重启,因此此命令作用就是重启 # 关机 shutdown -h 10 #十分钟之后关机 shutdown -h now # 立即关机 poweroff # 立即停止系统,并关闭电源 init 0 # 切换运行级别到0,0表示关机,因此此命令作用就是关机 # 取消当前关机或重启 shutdown -c # 注销命令 logout # 注销退出当前用户窗口 exit # 注销退出当前用户窗口
ifconfig 查看IP
ifconfig #显示所有网卡IP地址 ifconfig eth0 #显示某块网卡IP地址
ip 查看IP地址
ip address (简写ip a) #显示所有网卡IP地址 ip address show eth0 (简写ip a s eth0 ) #显示某一块网卡IP地址
lsof 查看端口占用
# Centos查看端口占用情况命令,比如查看80端口占用情况使用如下命令: lsof -i tcp:80 # 列出所有端口 netstat -ntlp 1、开启端口(以80端口为例) 方法一: /sbin/iptables -I INPUT -p tcp –dport 80 -j ACCEPT 写入修改 /etc/init.d/iptables save 保存修改 service iptables restart 重启防火墙,修改生效 方法二: vi /etc/sysconfig/iptables 打开配置文件加入如下语句: -A INPUT -p tcp -m state –state NEW -m tcp –dport 80 -j ACCEPT 重启防火墙,修改完成 2、关闭端口 方法一: /sbin/iptables -I INPUT -p tcp –dport 80 -j DROP 写入修改 /etc/init.d/iptables save 保存修改 service iptables restart 重启防火墙,修改生效 方法二: vi /etc/sysconfig/iptables 打开配置文件加入如下语句: -A INPUT -p tcp -m state –state NEW -m tcp –dport 80 -j DROP 重启防火墙,修改完成 3、查看端口状态 /etc/init.d/iptables status
文件及目录管理命令
pwd 显示当前哪个区所在位置
pwd #查看当前所在目录(此命令一般直接使用)
cd 切换目录
cd 命令语法: cd 【选项】 目录 cd 的常用选项: cd ~ /cd #切换到当前用户的家目录 cd . #保持当前目录不变 cd .. #切换到上级目录 cd - #切换到上一次所在位置的目录下 cd / #直接切换到 / 目录
tree 以树形结构显示目录下内容
tree 命令语法: tree 【选项】 目录 tree 常用选项: -d #只显示目录 -L #遍历目录的最大层数,-L后加大于0的正整数 -F #在条目后加上文件类型的指示符号(* , /, = , @ , | ,其中的一个) 安装tree的命令:yum install tree -y 范例1:使用tree命令区分目录和文件的方法 tree -L 1 -F /boot/ 使用-F 参数会在目录后添加“/”方便区分目录
mkdir 创建目录
mkdir 【选项】 目录 mkdir 常用选项: -p #递归创建目录 可以连续创建多个目录 -m #设置新目录默认对应的权限 -v #创建目录之后给出提示 创建目录: 创建连续的目录,加花括号创建连续的目录,用..隔开 花括号内可以是连续的数字、连续的字母 mkdir data{1..3} 注:适用于创建大量的连续目录 创建不连续的目录时,用逗号隔开 mkdir {dir,yy,uu} 注:这种用法,只适用于创建比较少的目录
touch 创建文件或更改文件时间戳
touch 命令语法: touch 【选项】 文件名 touch #创建文件是可以用绝对路径,也可以用相对路径 创建多个连续的文件 {} 生成序列 {1..10} {01..10} {a..z}
ls 显示目录下内容及属性的命令
ls 命令语法: ls 【选项】 目录/文件 ls 常用选项: -a 显示指定目录下所有子目录与文件,包括隐藏文件 -l 以列表方式显示文件的详细信息 备注: ls -l =ll -h 配合-l 以人性化方式显示文件大小,以K M G 为单位 -t 根据最后修改时间排序,默认是以文件名排序,通常与-l 连用 -F 在条目后加上文件类型的指示符号(* , /, = , @ , | ,其中的一个)注:可以标识文件类型 -d 显示目录本身的信息 而不是显示目录的内容 -r 逆序,倒序排序 ls -lt 按照时间进行排序 ls -lrt 找出最新的文件 -i 显示索引节点信息(索引节点相当于身份证号)
cp 复制文件或目录
cp 命令语法: cp 【选项 】 源文件 目标文件 cp 常用选项: -r 递归式复制目录,即复制目录下的所有层级的子目录及文件 -p 复制的时候 保持属性不变 -d 复制的时候保持软连接(快捷方式) -a == -pdr -t 将所有源参数复制到目录中
mv 移动文件或重命名文件跟目录
mv 命令语法: mv 源地址 目标地址 #移动文件或目录 mv 源文件名 新文件名 #将文件重命名
rm 删除文件或目录
rm 命令语法: rm 【选项 】 目录或文件 使用rm #文件或目录删除后不能恢复 rm 常用选项 -f 强制删除,没有提示 (即使文件不存在) -r 删除目录 删除目录时必须加-r , 一次性可删除多个目录 -i 在删除前需要确认 -i 与-f 联合使用不生效
文件过滤及内容处理编辑处理
vi/vim 纯文本编辑详解及其快捷键
基础用法
- vi test.txt #打开文件
- 打开后无法直接编辑,需要按i进入编辑模式
- 修改这个文件内容
- 修改完成后,按esc退出编辑模式
- :wq 保存退出 #注意: ":"必须是英文符号
补充:
:q! 强制退出不保存
:wq! 强制退出保存
命令模式
把光标移动到文件的第1行 gg 把光标移动到文件的最后一行 G 把光标移动到文件的第100行 100gg 将光标移动到行首 ^(shift+6) 将光标移动到行尾 $(shift+4) 删除光标所在位置到行尾的内容 D(大写字母) 快速保存并退出 ZZ 复制光标所在行 yy 复制多行,光标所在行往下下 nyy(n是数字) 粘贴 p 多次粘贴 np(n是数字) 删除/剪切一整行 dd 删除/剪切多行(光标所在行往下) ndd(n是数字) 删除当前行到文件的结尾 dG 撤销 u 替换光标所在字符 r 删除光标所在字符 x(delete) 查找快捷键 /”要查找内容” 查找下一个 n 查找上一个 N 批量操作快捷键: 批量删除:进入批量编辑模式(可视块)ctrl+v 选择 上下左右(方向键) 删除 d 批量增加:进入批量编辑模式(可视块)ctrl+v 选择区域 上下左右(方向键) 输入大写的shift+i进入编辑模式 编辑 按下ESC键 删除多行:进入批量编辑模式(可视行)shift+v 选择区域 上下左右(方向键) 删除 d
编辑模式
在光标之后开始插入数据 a 在光标之前开始插入数据 i 在光标所在行末尾开始插入数据 A 在光标所在行行首开始插入数据 I 在当前行下面插入一行并进入编辑模式 o(小写字母) 在当前行上面插入一行并进入编辑模式 O(大写字母) 删除光标所在位置到行尾的内容并进入编辑模式 C(大写字母)
底行模式
:wq 保存退出 :x 保存退出 :q 退出 :q! 强制退出不保存 ! 强制 :set nu number显示行号 :set nonu 取消显示行号 :set list 给每行的最后一个字符加上标记 :set nolist 取消标记 :noh 取消高亮显示 :%s###g 替换内容
echo 显示输出文本内容
echo 内容 > 文件名 表示把内容覆盖原先的文件内容
echo 内容 > 文件名 表示把内容追加到文件原先内容后 -e 开启转义 转义 a 发出警告声; 删除前一个字符; c 最后不加上换行符号; f 换行但光标仍旧停留在原来的位置; 换行且光标移至行首; 光标移至行首,但不换行; 插入tab; v 与f相同; \ 插入字符; nn 插入nnn(八进制)所代表的ASCII字符;
cat 合并文件或查看文件内容
cat 常用选项 -b 显示行编号(忽略空行) -n 显示所有行编号(包括空格) -A 在每行的最后一个字符加上$字符 > 文件名 清空文件内容 cat > 文件 << EOF 以EOF 开头 以EOF 结尾 EOF 可以是任何字母或数字 cat >> 文件 << EOF > 表示写入新内容 即使之前有内容也会覆盖 >> 表示在文件的末尾追加新内容 之前的内容不覆盖 例: cat >>oldboy.txt<<EOF oldboy 123 Lidao EOF
more 分页显示文件内容
一页一页显示文件的内容 (查看文件/日志内容) more看到文件最后一行直接退出 空格/f 下一页 forward b 上一页 q 退出 quit
less 分页显示文件内容
一页一页显示文件的内容 (查看文件/日志内容) less 看到文件最后一行不会直接退出 空格/f 下一页 forward b 上一页 back q 退出 quit -N 显示行号
head 显示文件头部内容
head 显示文件的前几行(默认显示十行) -n5 == -5 前5行
tail 显示文件内容底部
tail 显示文件的最后几行(默认显示十行) -n5 == -5 显示文件最后5行 -f --follow 显示文件实时更新 -F --follow --retry 如果文件不存在会不断进行重试
grep 文件过滤工具(三剑客之一)
-v 排除 取反 -n 给grep过滤出来的内容加上行号 -o 只显示过滤出来的字符,如有多个分开显示 -E 配合扩展正则使用 CentOS-7系统会自动给过滤出来的字符加上颜色 CentOS-6需要设置别名
tr 替换或者删除字符
tr 替换 1对1的替换 tr 与 < 连用 -d 删除字符 tr "a-z" "A-Z" < 文件名
> >> 重定向符号的核心知识
重定向的意思是将“数据传到其他地方”。 标准输入(stdin): 代码为0,使用<或<<。 标准输出(stdout): 代码为1,使用>或>>。 标准错误输出(stderr): 代码为2,使用2>或2>>。 >> 追加重定向,把内容追加到文件的结尾 > 重定向,先把文件内容清空,把内容追加到文件的结尾 2>> 错误追加重定向,把错误内容追加到文件的结尾 2> 错误重定向,先把文件内容清空,再把错误内容追加到文件的结尾 2>&1 错误信息和正确信息放在一起#简写&>
文件类型及命令实践
[root@web01 ~]#ls -lhi -rw-------. 1 root root 4434 May 30 13:58 ks.cfg -rw-------. ①:文件类型与权限 1 ②:硬链接次数 root ③:所属用户 root ④:所属组 4434 ⑤:文件大小 May30 13:58 ⑥⑦⑧:最新修改的时间与日期 ks.cfg ⑨:文件或目录名称
文件类型与拓展名介绍
Linux下扩展名只是方便用户记忆,对文件类型不影响 .txt #文本文件 .log #日志文件 .conf .cfg .configure .xml #配置文件 .sh .bash #shell脚本 .py #python脚本
Linux 中的文件类型
ls -l 文件名 //看第一个字符 格式 说明 - 普通文件(文本, 二进制, 压缩, 图片, 日志等) d 目录文件 b 设备文件(块设备)存储设备硬盘 /dev/sda1, /dev/sda2 c 设备文件(字符设备)打印机,终端 /dev/tty1, /dev/zero s 套接字文件, 进程间通信(socket) p 管道文件 l 链接文件
file 显示文件的类型
file [文件] #查看普通文件类型 [root@oldboy ~]# file /bin/yum /bin/yum: Python script, ASCII text executable
which 显示命令的全路径
which [命令]
whereis 显示命令及其相关文件全路径
whereis [命令] #查看命令及其相关内容 [root@oldboyedu ~]# whereis ls ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz 注意:type -a 也是直接可以的。
locate 快速定位文件路径(不推荐)
快速定位文件路径 yum install mlocate -y #建立表格数据库,方便查找
find 查找目录下的文件
作用:查找目录下文件 find /oldboy –maxdepth 1 –type f –name “*.txt” -size +1M -maxdepth #最大查找多少层,一定放在最前面,1是该目录下一层 -type #类型 f d l -iname #名字 (忽略大小写) -name #名字 -size +1M(大于1M)-100k(小于100k ) #根据大小查找文件 -mtime +7(7天以前) -7(7天以内) #根据时间查找文件 示例: find /root/ -type f -iname "*.txt" |xargs cp -t /tmp/ cp $(find /root/ -type f -iname "*.txt") /tmp/ find /root/ -type f -iname "*.txt" -exec cp {} /tmp/ ; find /root/ -type f -iname "*.txt" | xargs -i cp {} /tmp/
xargs 将标准输入转换成命令行参数
seq 10 >ett.txt xargs -n5 <ett.txt -n 分组 主要配合find命令使用
tar 打包压缩命令
[root@oldboy ~]# tar zcvf /tmp/etc.tar.gz /etc/ 把/etc/打包压缩 压缩包放在/tmp/etc.tar.gz tar 参数 zcvf z 表示通过gzip软件进行压缩 c 表示创建压缩包 v 表示显示创建压缩包和解压的过程 f 表示指定压缩包(f一定要放在这几个参数的最后) t 查看压缩包内容 tar tf /tmp/etc.tar.gz x 表示解压 解压时进入到tmp 下 cd/tmp tar xf /tmp/etc.tar.gz /tmp/etc.tar.gz 解压到 /opt tar xf /tmp/etc.tar.gz -C /opt/ 排除 --exclude
zip 打包压缩命令
# 压缩文件 zip test.zip test.log # 压缩目录 zip -r test.zip test -q #静默模式 # 解压 unzip test.zip # 解压到指定目录 unzip -d /opt scripts.zip # 解压的其他参数 -l 只看一下zip压缩包中包含哪些文件,不进行解压缩 -v 查看显示的文件列表还包含压缩比率 -t 检查zip文件是否损坏
date 显示与设置系统文件
date 显示或设置系统时间 显示日期以2018-09-30 显示 [root@oldboyedu /etc]# date +%F 2018-09-30 [root@oldboyedu /etc]# date +%Y-%m-%d 2018-09-30 显示日期,不显示世纪 [root@oldboyedu /etc]# date +%y-%m-%d 18-09-30 显示时间以10:30:12 显示 [root@oldboyedu /etc]# date +%T 10:30:12 [root@oldboyedu /etc]# date +%H:%M:%S 10:31:23
date 以指定格式显示日期
date +格式 #%Y year #%m month 月 #%d day 日期 #%H hour 小时 #%M minute 分钟 #%S sec 秒 #+%F === %Y-%m-%d 2018-09-30 #+%T === %H:%M:%S #+%w 周几 (0周日) date 参数 -d 根据你的描述显示日期 [root@oldboyedu /etc]# date +%F 2018-09-30 [root@oldboyedu /etc]# date -d "-1 day" Sat Sep 29 10:45:09 CST 2018 [root@oldboyedu /etc]# date -d "1 day" +%F 2018-10-01 [root@oldboyedu /etc]# date -s "20180930 10:54:00" Sun Sep 30 10:54:00 CST 2018
ntpdate 自动同步网络时间
yum install ntpdate -y 常用的网络时间服务器 ntp1.aliyun.com [root@oldboyedu /etc]# ntpdate ntp1.aliyun.com 30 Sep 11:03:36 ntpdate[2989]: step time server 120.25.115.20 offset 346.461947 sec [root@oldboyedu /etc]# date Sun Sep 30 11:03:52 CST 2018 设置定时任务,每5分钟同步一次系统时间
文件更多核心属性命令
用户及用户组相关命令
useradd 添加用户 -u 给用户指定UID -s 指定用户的shell命令解释器 -M 表示不创建家目录,创建虚拟用户使用 -g 指定用户组 -c 添加说明信息 passwd 设置密码 --stdin 非交互式设置密码 echo 123456 | passwd --stdin 用户名 whoami 我是谁,显示当前用户 su 切换用户 su - 切换用户的时候更新环境变量 -c 切换到另一个用户,运行一个命令, su - oldboy -c "pwd" id 查看用户的uid,gid及归属的用户组 userdel 删除用户,默认不删除用户的家目录和邮箱 -r 删除与用户有关的所有信息 usermod 修改用户信息 -s 修改用户使用的shell -g 修改属于的用户组,主要组 -u 修改UID -c 修改用户说明 groupadd 创建用户组 -g 指定用户组并指定GID groupdel 删除用户组,不能删除还有用户归属的主用户组
文件的修改时间属性
mtime modify time 修改时间 (文件内容变化) ctime change time 属性改变的时间(文件属性;变化;大小;权限;inode;所有者用户硬链接数量) acime access time 访问时间(cat) 怎样查看: stat命令
ln 创建软连接
用法 ln –s [原文件] [目标文件] 定义 软链接也叫符号链接(symbolick link),是一个包含指向另一个文件的inode的信息的文本文件,然后通过inode访问数据block,原文件被删除则链接失效。 # 文件的软连接示范 touch oldboy_file ln -s oldboy_file oldboy_file_soft_link ls -l oldboy_file oldboy_file_soft_link # 目录的软连接示范 mkdir oldboy_dir ln -s oldboy_dir oldboy_dir_soft_link ls -l oldboy_dir oldboy_dir_soft_link
通配符与特殊符号知识
通配符
* 匹配任意(0个或多个)字符或字符串,包括空字符串 {} 生成序列 引用变量作为变量与普通字符分隔 ? 匹配任意1个字符,有且只有一个字符 [abcd] 匹配abcd中任何一个字符,abcd也可是其他任意不连续字符 [a-z] 匹配a到z之间的任意一个字符, a到z表示范围,字符前后要连续,-表示范围的意思,也可以用连续数字[1-9] [!abcd] 同[^abcd],表示不匹配括号里面的任何一个字符,也可为[!a-d]
与位置和位置相关的特殊符号
~ 用户的家目录,超级用户为/root,普通用户为/home - 代表上一次(相对于当前路径)用户所在的路径 . 代表当前目录(点号还有很多其它含义,暂且不表) .. 代表上一级目录
不同引号特殊符号
'' 单引号,所见即所得,即输出单引号内容时会将单引号内的所有内容都原样输出,或者描述为单引号里面看到的是什么就会输出什么,被称之为强引用。 "" 双引号,输出双引号内的所有内容时;如果内容中有命令(要反引下)、变量、特殊转义符等,会先把变量、命令、转义字符解析出结果,然后在输出最终内容来,推荐使用,被称为弱引用。 `` 反引号,一般用于引用命令,执行的时候命令会被执行,相当于$(),赋值和输出都要将命令用``引起来。 空 赋值时,如果变量内容有空格会赋值不完整。而在输出内容时,会将含有空格的字符串视为一个整体输出,如果内容中有命令(要反引下)、变量等,会先把变量、命令解析出结果,然后输出最终内容,如果字符串中带有空格等特殊字符,则有可能无法完整的输出,因此需要改加双引号,一般连续的字符串、数字、路径等可以不加任何引号赋值和输出,不过无引号的情况最好用双引号替代之,特别是变量赋值时。
重定向特殊符号
0 表示标准输入(stdin),配合<或<<使用,数据流从右向左 1 表示标准输出(stdout),配合>或>>使用,数据流从左向右 2 标准错误(stderr),配合>或>>使用,数据流从左向右 0<或< 标准输入重定向,清空已有内容,数据从文件流向处理的命令 0<<或<< 追加输入重定向,追加内容到底部,数据从文件流向处理命令 1>或> 标准输出重定向,正常输出重定向到文件,会清空已有内容 1>>或>> 标准输出追加重定向,将内容追加到文件底部,不清空已有内容 2> 错误输出重定向,将标准错误内容重定向到文件,如文件存在内容则清空 2>> 错误输出追加重定向,将标准错误内容追加到文件底部,不会清空已有内容
其他特殊符号
; 表示一个命令的结束,也是命令间的分隔符 # (1)表示是注释内容,给管理员看的注释部分,系统不会执行井号开头的内容;(2)root用户的命令提示符 | 表示管道,将一个命令处理后的内容输出给下一个命令继续处理 $ (1)字符串前加$符号,代表字符串变量内容;(2)普通用户命令提示符 逃脱符,即将有特殊含义的字符还原成字符本意,例如$仅代表美元符 & 将程序放入后台运行符,例如:/bin/sh /scripts/oldboy.sh &(后文会讲)
bash中逻辑操作符号
&& 与,and || 或,or ! 非,opppsite
系统12位权限体系
rwx 对应的数字及计算方法 rwxr-xr-x
rwx 权限位表示 r read 读 4 w write 写 2 x execute 执行 1 - 没有权限 0 权限位计算 -rwxr-xr-x 755 -r-x------ 500 -rw------- 600 -rw-r--r-- 644 -rwxrwxrwx 777 644 rw-r--r-- 755 rwxr-xr-x 400 r-------- 650 rw-r-x--- 404 r-----r-- 403 r------wx
rwx小结:
# 对于文件 r 是否能查看文件内容 w 是否能修改文件的内容,需要r权限配合 rw 只有w的时候vim强制修改文件内容,会导致源文件内容清空 x 是否能运行命令或脚本的权限,需要r权限配合 root 默认对文件rw权限,默认没有执行权限 # 对于目录 r 显示目录的内容 ls 只有r的时候目录中文件属性都是以?????显示 需要x配合 w 在目录中 创建 删除 重命名文件权限 需要x配合 x 是否能进入到目录权限 cd 是否能查看或修改目录中文件属性的权限
chmod 修改文件或目录权限
chmod: change mode , 修改权限,-R递归修改 # 用户的表示方法 u-user(文件的所有者-主人) g--group(用户属于的组-家人) o-others(其他人 隔壁老王-陌生人) # 授予权限 +添加权限 -去掉某一个权限 =先去掉原有的权限,然后在赋予新的权限 chmod u=rx test.sh 例: # 添加文件的属组(家庭)的写入与执行权限 [root@oldboyedu oldboy]# chmod g+wx oldgirl [root@oldboyedu oldboy]# ls -ld oldgirl -rw-rwxr--. 1 root root 0 Oct 18 15:54 oldgirl # 删除文件的属主(主人)的写入权限 [root@oldboyedu oldboy]# chmod u-w oldgirl [root@oldboyedu oldboy]# ls -ld oldgirl -r--rwxr--. 1 root root 0 Oct 18 15:54 oldgirl # 修改文件的权限为属主用户所有权限 [root@oldboyedu oldboy]# chmod =rwx oldgirl (默认修改的是属主用户) [root@oldboyedu oldboy]# ls -ld oldgirl -rwxr-xr-x. 1 root root 0 Oct 18 15:54 oldgirl
chmod [数字权限] {文件名} 数字类型表示权限
# 权限对应的数字 r--- 4 w---- 2 x----- 1 - ==== 0 # 使用数字授予权限 rwxr-xr-x 755 chmod 755 test.sh #例 [root@oldboyedu oldboy]# chmod 644 oldgirl [root@oldboyedu oldboy]# ls -ld oldgirl -rw-r--r--. 1 root root 0 Oct 18 15:54 oldgirl [root@oldboyedu oldboy]# chmod 777 oldgirl [root@oldboyedu oldboy]# ls -ld oldgirl -rwxrwxrwx. 1 root root 0 Oct 18 15:54 oldgirl [root@oldboyedu oldboy]# chmod 70 oldgirl [root@oldboyedu oldboy]# ls -ld oldgirl ----rwx---. 1 root root 0 Oct 18 15:54 oldgirl [root@oldboyedu oldboy]# chmod 7 oldgirl (默认从其他用户位开始修改) [root@oldboyedu oldboy]# ls -ld oldgirl -------rwx. 1 root root 0 Oct 18 15:54 oldgirl
hown修改文件从属关系
change own, 修改属主属组, -R 递归修改 [root@oldboyedu oldboy]# chown-R oldboy.oldboy /oldboy [root@oldboyedu oldboy]# ls-ld /oldboy drwxr-xr-x.3oldboy oldboy 0Oct 1815:54oldboy
umask系统默认权限
通过文件或目录的最大权限666 777减去umask 对于文件的默认权限-umask如果有奇数位 奇数位在减完后还要加1 # 修改umask umask 022#临时 /etc/profile文件 #永久
chattr授予隐藏属性
授予文件或目录隐藏的权限
a (append 只能追加) 如果设置了这个权限只能追加不能删除不能修改
i( immutable 无敌) 无法修改无法删除
chattr± a 增加文件a属性
a == append ( 增加) 给文件追加a属性,只能向文件追加内容与查看内容。不能修改文件内容,不能删除文件。(保护重要的配置文件) 重要配置文件加上a属性 [root@oldboyedu ~]# ls-ld/etc/passwd/etc/shadow /etc/group /etc/gshadow -rw-r--r--.1root root 462Oct 1909:25/etc/group ----------.1root root 364Oct 1909:25/etc/gshadow -rw-r--r--.1root root 878Oct 1909:25/etc/passwd ----------.1root root 618Oct 1909:25/etc/shadow [root@oldboyedu oldboy]# lsattroldboy.txt ---------------- oldboy.txt [root@oldboyedu oldboy]# chattr+a oldboy.txt [root@oldboyedu oldboy]# lsattroldboy.txt -----a---------- oldboy.txt [root@oldboyedu oldboy]# > oldboy.txt -bash: oldboy.txt: Operation not permitted [root@oldboyedu oldboy]# rm-fr oldboy.txt rm: cannot remove ‘oldboy.txt’: Operation not permitted
chattr ±i 增加文件i属性
i=== immutable (不可改变) 给文件追加i属性,只能查看内容。,不能删除文件,不能修改文件内容(保护重要的命令) [root@oldboyedu oldboy]# lsattroldboy.txt ---------------- oldboy.txt [root@oldboyedu oldboy]# chattr+i oldboy.txt [root@oldboyedu oldboy]# lsattroldboy.txt ----i----------- oldboy.txt [root@oldboyedu oldboy]# rm-fr oldboy.txt rm: cannot remove ‘oldboy.txt’: Operation not permitted [root@oldboyedu oldboy]# > oldboy.txt -bash: oldboy.txt: Permission denied [root@oldboyedu oldboy]# echo'linux'>> oldboy.txt -bash: oldboy.txt: Permission denied 注:可以改命令的名字,隐藏命令
lsattr查看隐藏属性
# 查看当前目录所有文件及目录的隐藏属性 [root@oldboyedu oldboy]# lsattrus/ ---------------- us/us # 查看指定文件的隐藏属性 [root@oldboyedu oldboy]# lsattroldboy.txt ---------------- oldboy.txt
suid setuid 特殊权限
作用:运行某一个命令的时候相当于这个命令的所有者(root) S s -rwsr-xr-x 设置方法:chmodu+s /bin/rm或chmod4755/bin/rm 危险:所有用户运行命令的时候都相当于是root,passwd命令 [root@oldboyedu ~]# ll -d /tmp/ /usr/bin/passwd /usr/bin/locate drwxrwxrwt.29root root 4096Oct 1910:42/tmp/ 1777 -rwx--s--x 1root slocate 40520Apr 11 2018/usr/bin/locate 2711 -rwsr-xr-x. 1root root 27832Jun 10 2014/usr/bin/passwd
sticky粘滞位1777/tmp目录
任何人都可以在这个目录里面创建文件(原来的权限是777) 每个人只能管理自己的文件,其他人的处理不了 /tmp/ 特殊目录 /tmp每个用户都可以创建文件,但是每个人只能管理自己的文件 /tmp t sticky 粘滞位 [root@oldboyedu /]# chmodo+t /tmp/ [root@oldboyedu /]# ll -d /tmp/ drwxrwxrwt.7root root 114Oct 2020:39/tmp/ [root@oldboyedu /]# touch/tmp/system.passwd
stat 查看文件属性
/tmp/
[root@oldboyedu ~]# stat/tmp/ File: ‘/tmp/’ Size: 114 Blocks: 0 IO Block: 4096 directory Device: 805h/2053d Inode: 16797768 Links: 7 Access: (1777/drwxrwxrwt) Uid: ( 0/ root) Gid: ( 0/ root) Context: system_u:object_r:tmp_t:s0 Access:2018-10-2020:54:57.799095651+0800 Modify:2018-10-2021:32:16.831163981+0800 Change:2018-10-2021:32:16.831163981+0800 Birth: -
/usr/bin/locate
[root@oldboyedu ~]# stat/usr/bin/locate File: ‘/usr/bin/locate’ Size: 40520 Blocks: 80 IO Block: 4096 regular file Device: 805h/2053d Inode: 595 Links: 1 Access: (2711/-rwx--s--x) Uid: ( 0/ root) Gid: ( 21/ slocate) Context: system_u:object_r:bin_t:s0 Access:2018-04-1111:46:47.000000000+0800 Modify:2018-04-1111:46:47.000000000+0800 Change:2018-10-2021:32:16.113163959+0800 Birth: -
/usr/bin/passwd
[root@oldboyedu ~]# stat /usr/bin/passwd File: ‘/usr/bin/passwd’ Size: 27832 Blocks: 56 IO Block: 4096 regular file Device: 805h/2053d Inode: 480050 Links: 1 Access: (4755/-rwsr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root) Context: system_u:object_r:passwd_exec_t:s0 Access:2014-06-1014:27:56.000000000+0800 Modify:2014-06-1014:27:56.000000000+0800 Change:2018-09-1108:14:28.067984563+0800