Linux学习笔记


Linux运维课程体系大纲:

    Linux入门:
    Linux系统管理:
    Linux服务及安全管理:
        httpd, lamp, lnmp
        Cache: memcached, varnish
        DB: Mysql(mariadb)
    Linux Cluster:
        LB Cluster: nginx, LVS
        A Cluster: Keepalived
    Linux Ops: ansible
    Monitoring: zabbix
    Shell脚本编程

    http:
        tomcat, lnmt, lamt, session replication cluster
                分布式存储系统:
                    MogileFS,GlusterFS
                    HA Cluster: Corosync+Pacemaker, pcs/crmsh,
                    MySQL: HA Cluster, MHA,备份和恢复,Mysql Replcation, Read-Write splitting
                    NoSQL: redis, mongodb,HBase
                运维工具:puppe  t[saltstack]
                虚拟化:
                    Linux操作系统原理:虚拟化技术原理
                    kvm虚拟化应用详解:xen虚拟化
                    虚拟化网络:SDN
                    OpenStack云栈
                Docker:容器云:
                ELK Stack:Elasticsearch, Logstash, Kibana
                大数据:Hadoop v2,并行处理及分析平台
                    HBASE,Hive
                    Storm,Spark
                系统优化:
                Python编程:

IT技术领域

研发:
    硬件:接口
        cpu(运算器和控制器),内存,输入,输出
            冯诺依曼
        机器语言,二进制指令,二进制数据
            写驱动

    软件:
        低级语言:汇编语言,汇编器
        高级语言:
            系统级:
                C,C++
            应用级:
                Java Python,Ruby
                    应用程序:ansible,puppet

应用:
    Linux运维:Linux生态圈中的各应用程序的应用:
        shell脚本编程:让某些应用工作自动完成
        Python:专业编程语言
            ansible,OpenStack

    DevOps:
        Development
        Operations

计算机与操作系统

Unix:
    SUN:Solaris
    IBM:AIX
    HP:HP-UX


OS的接口有两类:
    GUI:Graphic User Interface
        Gnome
        KDE
    CLI:Command Line Interface
        bash 
        sh
操作系统的功能:
    驱动程序
    进程管理
    安全
    网络功能
    内存管理
    文件系统

双线授权:
    Community:开源
    Enterprise:闭源收费

终端设备:
    多任务,多用户
    串行终端:tty
    伪终端:pts
    ssh:secure shell



[root@test ~]#
    root:用户名
    test:不完全主机名
    ~:当前目录 相对路径
    #:管理员模式root拥有最高权限
    $:普通用户非root
建议使用非管理员登录
    执行管理操作时切换至管理员,执行完后立即切换为普通用户
常用命令
    ip a 查看ip地址
    tty 查看当前终端设备
    w 查看当前登录状态
    Ctrl+C终止命令执行
    systemctl stop firewalld
    systemctl disable firewalld
    关机命令 init 0, halt, poweroff
    重启 init 6, reboot

linux哲学思想:
    一切皆文件
    文件系统:层级结构,有索引
        最左侧/表示根路径,其他/表示路径分隔符
    文件名使用法则:
        严格区分大小写,目录也是文件,支持使用/以外的任何字符,最长不能超过255个字符

用户有家目录/home
    用户的起始目录

工作目录:
    basename:文件名
    dirname:目录名
多数系统程序文件都存放在:/bin,/sbin, /usr/sbin. /usr/local/sbin
    普通命令/bin /usr/bin /usr/local/bin
    管理命令:/sbin. /usr/sbin /usr/local/sbin
共享库文件:
    /lib /lib64 /usr/lib

查看环境变量:echo $PATH

OPTIONS:选项
    指定命令的运行特性:
        短选项 -C -L ... 多数短选项可以合并
        长选项--word --help 长选项不能合并

ARGUMENTS:参数
    命令的作用对象,目录或文件
    [ ] 可选内容
    < >必选内容
    a|b 二选一内容

man命令
    翻屏:
        空格键:向文件尾部翻一页
        Ctrl+d:向文件尾部翻半页
        Ctrl+u:向文件首部翻半页
        回车键:向文件尾部翻一行
        k:向文件首部翻一行
        G:跳转至最后一行
        gg:跳转至第一行
        #G:跳转至指定行
文本搜索:
    /keyword:从文件首部向尾部依次查找:不区分字符大小写
    ?keyword:从文件尾部向首部查找
    n:与查找命令方向相同
    N:相反
    q:退出

Linux文件类型
    -:常规文件
    d:目录文件
    b:块设备文件
    c:字符设备文件
        major number:主设备号,标识设备类型,进而确定要加载的驱动程序
        minor number:次设备号,标识同一类型中的不同的设备。
    l:符号链接文件
    P:命名管道
    s:套接字文件

基本命令:
    命令类型:
        type COMMAND
        外部命令:
        内部命令:
        命令别名:
            alias NAME='COMMAND'
            撤销别名:
                unalias NAME
    which:查看命令完整路径
        --skip-alias:忽略别名
    whereis [options] name ...
        -b:搜索2进制程序路径
        -m:搜索使用手册路径
    who:
        -b:此次启动系统的时间
        -r:运行级别
    w:
        高级who
    历史命令:
        history:
            $HISTSIZE:shell进程可保留的历史命令的条数
            $HISTFILE:
            -d:offset 删除指定条数
            -c:清空历史列表
            -r:从文件中读取命令历史至历史列表中
            -w:把历史列表中的命令追加至历史文件中
            #:显示最近的命令条数
            !+ #历史命令的位置,再一次执行该命令
            !+string 历史命令的前几位,再一次执行该命令
        调用上一条命令的最后一个参数:

            ESC+.
            !$
        控制命令历史记录的方式:
            环境变量:HISTCONTROL
                ignoredups:忽略重复命令
                ignorespace:忽略以空白字符开头的命令
                ignoreboth:以上两者同时生效
        修改变量的值:
            NAME=‘VLUES’

tab补全:
     命令补全:
         根据PATH环境变量中设定的目录从左到右逐个搜索目录下的文件

    路径补全:
        在给定的起始路径下,以对应路径下的打头字符串来逐一匹配起始路径下的每个文件

目录管理类命令:
    mkdir:创建目录
        -p自动按需创建父目录
        -v:verbose显示详细过程
        -m:直接给定权限
        创建目录时,须确保dirname存在

    rmdir:仅用于删除空目录
        -p:删除目录后,其父目录为空,一并删除
        -v:显示过程

    命令行展开:
    ~:自动展开用户家目录
    {}:可承载一个以逗号分隔的路径列表,并能够将其展开为多个路径:
            ex:/tmp/{x,y} 相当于 /tmp/x /tmp/y

    tree:显示目录结构
        [options] directory
        -L #:指定要显示的层级

    命令执行的状态结果:
        0    成功
        1-255 失败
        命令执行完的状态保存在t特殊变量$?中
        命令引用:

            $(COMMAND)或\`COMMAND\`
        强引用:' '
        弱引用:" "    
        命令引用:$(COMMAND)

bash快捷键:
    ctrl+a:光标回到行首
    ctrl+e:光标回到行尾
    ctrl+k:删除光标至行尾的字符
    ctrl+u:删除光标至行首的字符
文件查看命令:
    cat
    tac
    more:文件翻至尾部自动退出
    less:
    head:查看指定文件的前n行
        -n #
    tail:
        -n #
        -#
        -f :实时查看文件尾部新增内容

    stat:
        显示文件的状态
        文件分为两类数据:
            元数据:metadata
            数据:data

    touch:
        -c:指定的文件不存在时,不予创建
        -a:仅修改access time
        -m:仅修改modify time
        -t STAMP
            [[CC]YY]MMDDhhmm[.ss]

    globbing:文件名通配(整体文件名匹配,而非部分)
        匹配模式:元字符
            *:匹配任意长度任意字符
            ?:匹配任意单个字符
            []:匹配指定范围内的任意单个字不区分大小写
                [a-z],[A-Z],[0-9],[a-z0-9]

                [[:upper:]]:所有大写字母
                [[:lower:]]:所有小写字母
                [[:alpha:]]:所有字母
                [[:digit:]]:所有数字
                [[:alnum:]]:所有字母和数字
                [[:space:]]:所有空白字符
                [[:punct:]]:所有标点符号
            [^]:匹配指定范围内的任意单个字符
                [^[:upper:]]:非大写字母的任意一个字符
                [^0-9]:非数字的任意一个字符
                [^[:alnum:]]:非数字和字母的任意一个字符

    IO重定向及管道:
        程序三种数据流:
            标准输入(stdin),键盘
            标准输出(stdout),显示器
            错误输出流(stderr),显示器

    fd:file descriptor 文件描述符
        标准输入:0
        标准输出:1
        错误输出:2            

    IO重定向:
        输出重定向:>
            特性,覆盖输出
        输出重定向:>>
            特性,追加输出
        set -C:仅对当前shell有效
            禁止覆盖输出重定向文件至已存在的文件
        set +C:
            关闭上述特性
        错误输出流重定向:
            2>
            2>>
        合并正常输出流和错误输出流:
            &>,&>>
            COMMAND > /tmp/testfile 2>&1

        输入重定向:
            <
            tr:
                把输入的数据中的字符,凡是在SET1定义范围内出现的,全部对位转换
                ex:tr SET1 SET2  < /tmp/testfile
                    tr -d SET1 < /tmp/testfile
                    不会修改原文件
            Here Document:<<
                cat << EOF
                cat > /tmp/testfile << EOF
            管道:连接程序,将前一个命令的输出直接定向为后一个程序的输入
                COMMAND1 | COMMAND2 | COMMAND3

                tee命令:
                    COMMAND | tee /tmp/testfile.tee

Linux用户管理

用户:    
    用户类别:
        管理员
        普通用户:
            系统用户
            登录用户
    用户标识:UserID ,UID
        管理员:0
        普通用户:1-65535
            系统用户:1-999 Centos7
            登录用户:1000-60000 Centos7
    名称解析:
        username<--> UID
        /etc/passwd:解析文件库
组:
    组类别:
        管理员组:
        普通组:
            系统组
            登录组
    组标识:GroupID GID
        管理组:0
        普通组:1-65535
组类别2:
    用户的基本组
    用户的附加组
组类别:
    私有组:组名与用户名同名且只有这一个用户
    共有组:组内包含多个用户

密码使用策略:
    1,随机密码
    2,最短长度不要低于8位
    3,大写字母,小写字母,数字和标点符号四类字符中至少三类
    4,定期更换
加密算法:
    对称加密:
    不对称加密:
        秘钥对:
            公钥:public key
            私钥:private key
    单向加密:只能加密,不能解密,提取数据特征码
        定长输出
        雪崩效应

    算法:
        md5:
        sha:
        sha224
        sha256:
        sha384:
        sha512:
    生成密码时加salt,在密码中添加随机数
    /etc/passwd:用户信息库
        格式:
            name:password:UID:GID:GECOS:directory:shell
            name:用户名
            password:可以是加密的密码,也可以是占位符
            UID
            GID:用户所属的主组iD
            GECOS:注释信息
            directory:用户的家目录:
            shell:用户的默认shell,登录时默认shell程序:
    /etc/shadow:用户密码
        用户名:加密密码:最近一次修改密码的时间:最短使用期限:最长使用期限:警告期限:过期期限:保留字段
    /etc/group:
        groupname:password:GID:user_list
            user_list:该组的用户成员:以此组为附加组的用户的用户列表:

相关命令:
    useradd:创建用户或更新默认用户信息
        -u    指定UID
        -g    指定基本组id,次组应事先存在
        -G    指定用户所属附加组,多个组之间用逗号分隔
        -c    指定注释信息
        -d    指定用户家目录,通过复制/etc/skel/此目录并重命名实现
        -s    指定用户默认shell
        -r    创建系统用户
        -D    显示创建用户的默认配置,配置文件存放路径/etc/login.defs
        -D    options 修改默认值    修改的文件保存在/etc/default/useradd

    userdel:
        -r:删除用户时,一并删除家目录

    usermod:修改一个用户
        -u    修改UID
        -g    修改基本组id,此组应事先存在
        -G    修改用户所属附加组,原来的附加组会被覆盖
        -a    与-G一同使用,用于为用户添加新的附加组
        -c    指定注释信息
        -d    修改用户家目录,通过复制/etc/skel/此目录并重命名实现
        -s    修改用户默认shell
        -m    只能与-d一起使用,将原来的家目录移动为新的家目录
        -l    修改用户名
        -L    锁定用户密码
        -U    解锁用户的密码



    passwd:修改密码
        passwd:修改用户自己的密码
        passwd username:修改指定用户密码
        -d:username    清除密码
        -e DATE:过期期限,日期格式
        -i DAYS:非活动期限
        -n DAYS:密码的最短使用期限
        -x DAYS:密码的最长使用期限
        -w DAYS:警告期限
        --stdin:
        echo "PASSWORD" | passwd --stdin username

    groupadd:创建一个新组
        -g    指定GID,默认是上一个GID+1
        -r    创建系统组:
    groupdel:删除组

    groupmod:修改组属性
        -g 修改GID
        -n 修改组名

    gpasswd:修改组密码
    -a username:向组中添加用户
    -d username:从组中移除用户

    newgrp:会模拟用户重新登录以实现初始化其工作环境

    chage:修改用户密码过期信息
        -d
        -E
        -W
        -m
        -M

    chsh:
    id :显示用户的真和有效ID
        -u    只显示uid
        -g    只显示用户基本组id
        -G    显示用户所属所有组id
        -n    显示名字而非ID
    su:switch user
        管理员可无密码切换至任何用户
        登录式切换:会重新读取用户的配置文件来初始化
            su - USERNAME
        非登录式切换:不会读取用户的配置文件来初始化
            su USERNAME
            -c 'COMMAND':以指定用户运行此命令
安全:
    进程以其发起者的身份运行:
        进程对文件的访问权限取决于发起此程序的用户的权限:
    系统用户:为了能够让后台进程或服务类进程以非管理员的身份运行,通常需要为此创建多个普通用户,这类用户不需要登录系统,指定bash:/sbin/nologin

Linux权限管理


文章作者: Xin
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Xin !
 本篇
Linux学习笔记 Linux学习笔记
Linux运维课程体系大纲: Linux入门: Linux系统管理: Linux服务及安全管理: httpd, lamp, lnmp Cache: memcached, varnish
2020-04-07 Xin
下一篇 
Hadoop配置Hive Hadoop配置Hive
安装先安装mysql开启root远程登录权限开启hadoop服务下载地址 http://archive.apache.org/dist/hive/ 解压软件,配置hive环境变量 HIVE_HOME=/usr/local/hive PATH
2020-04-03
  目录