zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    第三期 预测——7.思考基于模型的方法
    第三期 预测——6.轨迹聚类2在线预测
    第三期 预测——5.数据驱动示例 轨迹簇
    第三期 预测——4.哪个最好
    第三期 预测——2.输入和输出
    第三期 预测——3 模型和数据驱动方法
    第三期 预测——1.简介
    状态和面向对象编程——7.课程大纲
    状态和面向对象编程——7.状态定量
    状态和面向对象编程——6.运动学
  • 原文地址:https://www.cnblogs.com/gongcheng-/p/9641286.html
Copyright © 2011-2022 走看看