linux命令汇总

命令行入门基础

命令行基础

命令 条件/参数 对象

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
原文地址:https://www.cnblogs.com/gongcheng-/p/9641286.html