• Linux03__管理


    一、软件包管理

    1.1 Linux分为源码包和二进制包(rpm包)

      源码包:开源、可选择安装功能、需编译安装 更稳定、卸载方便,但安装步骤多,编译时间长,报错不易解决;

    /usr/local/软件名/ 源码包 默认安装路径(卸载的话直接将/usr/local/<包名>删除即可)
    源码包安装:将包解压 ./configure [--prefix=/usr/local/<>]

    定义需要的功能选项;

    检测系统环境是否符合要求;

    将前两项结果写入makefile文件;

    make 编译(make clear清空编译)
    make install 编译安装

         rpm包:安装快、简单,但看不到源码、依赖性更大。

    rpm默认安装路径
    /etc/ 配置文件 /usr/bin/ 可执行的命令
    /usr/share/doc 软件使用手册 /usr/share/man/ 帮助文件

    1.2 rpm命令管理

      rpm安装最大问题:依赖性

      (1)依赖分为树形依赖,环形依赖(同时安装所有包),模块依赖

    #模块依赖
    
    mount /dev/sr0 /mnt/cdrom/  #挂载系统镜像
    cd /mnt/cdrom/Packages
    #选择安装mysql为例
    rpm -ivh mysql-connector-odbc*
    #提示缺少依赖libobdcinst.so.2,so.2格式为安装库,只需找到对应的安装包即可安装,可通过http://www.rpmfind.net/这个网站查询对应的安装包
    

      (2) -i 安装, -v 显示详细信息, -h显示进度, -U升级, --nodeps 不检测依赖性, -e 卸载

          -q 查询,  -a 所有, -i 查询软件信息, -p 查询未安装包的信息

    rpm -ivh make-3.82-23.el7.x86_64.rpm
    rpm -Uvh make-3.85-20.el7.x86_64.rpm
    rpm -e make
    rpm -qa | grep make
    rpm -qi make
    rpm -qip zip-3.0-11.el7.x86_64.rpm
    rpm -qf <系统文件>   #查询系统文件属于哪个安装包
    rpm -qRp <包名>  #查询未安装包依赖

    1.3 yum在线管理

      (1)IP地址配置和yum源网络配置

    # 修改网络配置文件
    vi /etc/sysconfig/network-scripts/ifcfg-ens33
    service network restart
    ''''''
    TYPE=Ethernet
    PROXY_METHOD=none
    BROWSER_ONLY=no
    BOOTPROTO=dhcp
    DEFROUTE=yes
    IPV4_FAILURE_FATAL=no
    IPV6INIT=yes
    IPV6_AUTOCONF=yes
    IPV6_DEFROUTE=yes
    IPV6_FAILURE_FATAL=no
    IPV6_ADDR_GEN_MODE=stable-privacy
    NAME=ens33
    UUID=50ac09de-bd8f-42f4-99a0-bf6d5d244b9d
    DEVICE=ens33
    ONBOOT=yes
    HWADDR=00:0C:  :  :
    ''''''
    #配置网络YUM源
    vi /etc/yum.repos.d/CentOS-Base.repo
    '''''''
    [base]  容器名称
    mirrorlist  镜像站点
    baseurl  yum源服务器地址
    enabled  此容器是否生效
    gpgcheck  RPM的数字证书是否生效
    gpgkey  数字证书的公钥文件保存位置
    '''''''

      (2)yum命令

    yum list 
    yum search <包名>
    yum -y install <包名>
    rpm -q gcc  #查询安装结果
    yum -y update <包名>
    yum -y remove <包名>  #尽量不用yum卸载,会将依赖一起卸载,可能引入其他包的依赖问题
    
    yum grouplist
    yum groupinstall <软件组名>

      (3)光盘yum源搭建

    # 1 挂载光盘
    mount /dev/sr0 /mnt/cdrom/
    # 2 修改配置文件,本地YUM源配置文件为CentOS-Media.repo,让这个文件生效,其他.repo文件失效(可将其他全备份改名)。
    cd /etc/yum.repos.d/
    vim CentOS-Media.repo
    #改enabled=1,baseurl=file:///mnt/cdrom/

    二、用户管理

    2.1 用户信息文件 /etc/passwd

    man 5 passwd  #用man打开配置文件
    
    vi /etc/passwd  # 每一行代表一个用户
    #  root:x:0:0:root:/root:/bin/bash
    #  用户名:密码标识:UID:GID:用户说明:家目录:登录之后的shell
    UID: 0---超级用户,1-499---系统用户,500-65535---普通用户

    2.2 影子文件 /etc/shadow

    vi /etc/shadow  
    # zf:$6$P8QkrNzO$0dbklAZRWTqNgmneADWWlKoT70gRuZu.hu3A2jwExuxkOV.RZ4nGCAVkoyDHYrJk75RStR0ffZS0Y3UlzKXBp0:18299:0:99999:7:::
    
    #  用户名:加密密码:修改时间戳:密码修改时间间隔:有效期:警告天数

    2.3  组信息文件 /etc/group

      组密码文件 /etc/gshadow

    vim /etc/gshadow
    ''''''
    root:::
    zf:!::
    组名:组密码:组管理员用户名:组中附加用户
    ''''''
    
    vim /etc/group
    ''''''
    root:x:0:
    zf:x:1000:
    组名:组密码标志:GID:组中附加用户
    ''''''

    2.4 用户家目录

      普通用户:/home/用户名/,所有者和所属组都是此用户,权限是700;

      超级用户:/root/,所有者和所属组都是root,权限是550

    # 将普通用户改为超级用户
    vi /etc/passwd
    ''''''UID(第3列)改为0 zf:x:0:1000::/home/zoufan:/bin/bash 
    ''''''

    2.5 用户管理命令

    #1 用户添加 useradd 
    useradd test
    # 选项 -u UID,-c 用户说明,-G组名
    useradd -u 666 -G root,zf -c "test user" -d /zzff zzff
    #2 修改密码 passwd
    passwd test
    #选项 -S查询用户密码的状态 -l暂时锁定用户 -u解锁用户
    #3 修改用户信息 usermod / chage
    usermod -c "test user" -G root zzff
    chage -l zzff  # 修改用户密码状态
    #4 删除用户 userdel
    userdel -r zzff # -r删除用户的同时删除家目录
    #5 用户切换 su
    su - root  # -连带环境变量一起切换   
    su - root -c "useradd testuser" # -c仅执行一次命令,不切换用户身份

    2.6 用户组管理命令

    # 1添加用户组
    groupadd testg
    # 2修改用户组
    groupmod -n tg testg 
    # 3删除
    groupdel tg

    三、权限管理

    3.1 ACL权限(Access Control List)

      (1)定义:一个针对文件/目录的访问控制列表

      在普通权限中,用户对文件只有三种身份,就是属主、属组和其他人;每种用户拥有读、写、执行3种权限;ACL用于设定用户针对文件的权限。

      

       (2)应用场景:如图,/project为班级文件夹,属主为老师Teacher,属组为班级名Python,班级同学有Stu1、Stu2。project的权限为770,即老师和两位同学对project的权限为rwx,其他人为---。现有一位旁听人st,需设定他对project的权限为r-x,则此时需要设定ACL权限

    #1 查看分区ACL权限是否开启
    df -h  #找根分区对应的盘符,假设是/dev/sda3
    dumpe2fs -h /dev/sda3  #dumpe2fs查询指定分区文件系统信息
    
    #2 设置ACL权限命令 setfacl
    # 选项:-m设定ACL权限, -x删除指定的ACL权限, -b删除所有ACL权限,-d设定默认ACL权限, -k删除默认ACL权限, -R递归设定ACL权限
    mkdir /project
    chown root:Python /project/
    chmod 770 /project/
    
    useradd Stu1
    useradd Stu2
    groupadd Python
    gpasswd -a Stu1 Python  #将用户加入指定组中
    gpasswd -a Stu2 Python
    useradd st
    setfacl -m u:st:rx /project/  #用户st ACL权限
    setfacl -m g:gt:rx /project/  #组gt ACL权限
    getfacl /project
    

      (3)最大有效权限和删除ACL权限

    • 最大有效权限mask:mask值和设定值求“相与”值
    setfacl -m m:rx /project
    
    • 删除ACL权限
    setfacl -x u:st /project  #删除用户ACL
    setfacl -x g:gt /project  #删除用户组ACL
    setfacl -b /project  #删除所有ACL

      (4)默认ACL权限和递归ACL权限

    #1 递归
    setfacl -m u:st:rx -R /project/
    
    #2 设定默认ACL
    setfacl -m d:u:st:rx -R /project/

    3.2 文件特殊权限

      (1)SetUID

    # SetUID功能:对可执行的二进制程序,命令暂时可获得该文件属主身份
    # 设置SetUID:chmod 4755 <文件名>
    
    whereis vim 
    chmod 4755 /usr/bin/vim
    ll /usr/bin/vim
    #修改vim可执行程序的SetUID权限,使用普通用户即可用vim对任意w权限文件修改
    
    # SetUID危险性
    1、关键目录严格控制写权限,如“/”、“/usr”;
    2、定时检查除系统默认的SetUID权限

      (2)SetGID:和SetUID类似,获得的是属组身份,对象包括可执行文件和目录

      (3)Sticky BIT:和SetUID类似,获得的是其他人身份,对象为目录

    3.3 文件系统属性chattr权限

      chattr权限可限制root用户,但是主要是用来防止root误操作

    # chattr选项:
     i  对文件,相当于给文件加锁,不能改,不能删除;
        对目录,不能新建和删除文件,只能修改目录下的文件的数据
     a 对文件,只能在文件中追加数据,不能改,不能删除;
        对目录,不能删除文件,只能在目录中新建和修改文件
    
    chattr +i test.txt
    lsattr -a test.txt #查看chattr属性,-a显示所有文件和目录,-d列出目录属性
    chattr -i test.txt
    chattr +a test.txt

    3.4 系统命令sudo权限

      用途:将只能root用户拥有权限的命令赋予普通用户

    #1 需要root用户将命令权限赋予普通用户,操作对象是系统命令
    
    visudo   #实际是修改/etc/sudoers文件
    ''''''
    用户名  被管理主机IP=授权命令(绝对路径)
    root  ALL=ALL
    zf 10.10.10.1=/sbin/vim
    zf ALL=/sbin/shutdown -r now 
    ''''''
    su - zf  #切换zf用户
    sudo -l  #查看可用的sudo命令
    sudo /sbin/shutdown -r now  #使用绝对路径执行
    

      

  • 相关阅读:
    C#序列化效率对比
    将聚合记录集逆时针和顺时针旋转90度(行列互换)
    Sql的行列转换
    log4net配置
    input框添加阴影效果
    WCF自定义地址路由映射(不用svc文件)
    Jquery对当前日期的操作(格式化当前日期)
    用JQuery获取输入框中的光标位置
    sublime text3安装后html:5+Tab不能快速生成html头部信息的解决办法
    js获取url传递参数,js获取url?号后面的参数
  • 原文地址:https://www.cnblogs.com/koafan-zou/p/12275897.html
Copyright © 2020-2023  润新知