zoukankan      html  css  js  c++  java
  • Linux 账号管理及ACL权限设置,PAM模块简介

    有效群组与初始群组:
      groups:有效与支持群组的观察

      newgrp:有效群组的切换,后面接群组名称

      在passwd文件中记录的GID就是默认的GID,就是初始群组


    /etc/passwd文件结构
      

    zabbix:x:500:500::/home/zabbix:/bin/bash

      第一段:账号名称
      第二段:密码:该密码数据保存在/etc/shadow中,这里显示x
      第三段:UID
      第四段:GID
      第五段:使用者信息说明栏
      第六段:家目录
      第七段:Shell

    /etc/shadow文件结构
      

    root:$1$EQ2hnCMP$sQtLTSYZSXCzHx9XHOsm61:17541:0:99999:7:::

      第一段:账号名称

      第二段:密码
      第三段:最近修改密码的日期
      第四段:密码不可被修改的天数
      第五段:密码需要重新变更的天数
      第六段:密码需要变更期限前的警告天数
      第七段:密码过期后的账号宽限时间
      第八段:密码失效日期
      第九段:保留

      authconfig --test |grep hashing
      password hashing algorithm is sha512 #当前的密码加密机制


    /etc/group文件结构
      root:x:0:
      第一段:群组名称
      第二段:群组密码
      第三段:GID
      第四段:次群组支持的账号名称

    /etc/gshadow
      root:::
      第一段:群组名称
      第二段:密码栏
      第三段:群组管理员的账号
      第四段:与加入该群组支持的所属账号


    账号管理常用命令:

    useradd:添加账号
      -u:UID
      -g:GID
      -G:群组名称,还可以加入的群组
      -M:强制!不创建家目录
      -m:强制!创建家目录
      -c:/etc/passwd第五栏说明信息
      -d:指定一个目录作为家目录
      -r:创建一个系统账号,UID有限制
      -s:指定shell,默认/bin/bash
      -e:失效日期日
      -f:0表示立即失效,-1表示永不失效
    
      -D:列出创建时的默认值信息
    
    
    passwd:修改密码
      --stdin: 可以通过管道数据作为密码输入
      -l: 加锁,是密码失效
      -u: 解锁
      -S: 列出密码相关参数,
      -n: 后面接天数, 多久不可修改密码天数
      -x: 后面接天数, 多久内必须要修改密码
      -w: 后面接天数, 密码过期前的警告天数
      -i: 后面接日期, 密码失效日期
    
      echo "abcd123" | passwd --stdin wios
    
    chage:显示更详细的密码参数信息
      -l:列出该账号的详细参数信息
      -d:
      -E:
      -I:
      -m:
      -M:
      -W:
    
    usermod:修改账号信息
      -c:修改说明
      -d:
      -e:
      -f:
      -g:修改初始群组
      -G:修改支持的群组
      -a:与-G何用,可增加支持的群组,而不是设置
      -l:修改账号名称,重命名
      -s:
      -u:接UID
      -L:加锁
      -U:解锁
    
    userdel:删除账号
      -r: 连同家目录一起删除
    
    id:查询用户的相关UID/GID等信息
    
    chsh:change shell 切换shell的意思
      -l: 列出目前系统上可以用的shell
      -s: 设置修改自己的shell
    
    
    
    
    groupadd:添加群组
      -g:GID,指定ID号
      -r:创建系统群组
    
    
    groupmod:修改group群组的相关参数
      -g: 修改既有的GID数字
      -n: 修改既有的群组名称
    
    groupmod -g 201 -n mygroup group1
      groupdel:删除群组
    
      gpasswd:群组管理员功能(不常用)
      群组管理员密码,作为该群组的管理员,操作账号加入/移除组
    
    
    su:使用者身份切换
      为什么身份切换:
      使用一般账号:系统平时操作的习惯
      使用较低权限启动系统服务
      软件本身限制
    
      -: 如果后面没有用户名,表示切换到root
      -m: -m与-p一样,使用当前的环境设置,而不读取新使用者的配置文件
      -c:仅执行一次命令
    
      su - -c "head -n 3 /etc/shadow" 输入root的密码,执行一次命令
    
    sudo:
      -b: 将后续的命令放到背景中自动执行,不与当前的shell产生影响
      -u: 后面可以接想要切换的使用者,如果无此项,表示切换身份为root
    
      sudo默认仅可以切换为root,
    
      执行流程:
      1.当使用sudo时,在/etc/sudoers中搜索是否有执行权限
      2.具有执行权限后,让使用者输入自己的密码来确认
      3.密码成功,执行后面的命令
      4.如果身份相同,不需要输入密码
    
      设置sudo: visudo
      root ALL=(ALL) ALL
      wios ALL=(ALL) /usr/bin/ls,/usr/bin/more 可以用!反向限制
      使用者账号
      登陆这来源主机名
      可切换的身份
      可执行的命令
    
    
      默认操作超过5分钟时,需要再次输入密码
    
    
    
    w,who,last,lastlog 可以查看当前登陆的用户和每个账号最近登陆的时间
    
    
    write,mesg,wall
    
    mail:
      mail -s "主题" 账号
      最后一行单独一个.表示输入结束
    
      直接输入mail查看邮箱
      操作指令:
      h:列出信件表头,如果需要查询40份邮件左右可以输入h40
      d:删除后续的信件,单独删除d10,批量d20-40
      s:将信件保存城文件
      x:输入exit一样,表示退出
      q:执行刚才的操作,例如删除
    
    
    pwck:
      检查账号信息是否正常(例如密码等不一致)
    
    pwconv:检查群组信息是否正常
    
    chpasswd:更新密码
      echo "wios:wios" | chpasswd
      在passwd 支持--stdin后基本无用,但是其他linux版本可能会使用


    批量创建账号操作:

    #!/bin/bash
    #
    #
    
    export PATH=/bin:/sbin:/usr/bin:/usr/sbin
    
    usergroup=""
    pwmech="openssl"
    homeperm="no"
    
    
    action="${1}"
    if [ ! -f accountadd.txt ];then
        echo "There is no accountadd.txt file, stop here."
        exit 1
    fi
    
    [ "${usergroup}" != "" ] && groupadd -r ${usergroup}
    rm -rf outputpw.txt
    usernames=$(cat accountadd.txt)
    
    for username in ${usernames}
    do
        case ${action} in
            "create")
                [ "${usergroup}" != "" ] && usegrp=" -G ${usergroup}" || usegrp=""
                useradd ${usegrp} ${username}
                [ "${pwmech}" == "openssl" ] && usepw=$(openssl rand -base64 6) || usepw=${username}
                echo ${usepw} | passwd --stdin ${username}
                chage -d 0 ${username}
                [ "${homeperm}" == "yes" ] && chmod 711 /home/${username}
                echo "username=${username}, passwd=${usepw}" >> outputpw.tx
                ;;
             "delete")
                echo "delete ${username}"
                userdel -r ${username}
                ;;
             *)
                echo "Usage: $0 [create|delete]"
                ;;
        esac
    done



    ACL的使用:
    传统的权限管理只能针对拥有者,群组,其他的方式管理,无法针对某个人来实施管理,而ACL解决了该问题

    查看是否支持ACL(默认大部分Linux系统都是支持的)

    [root@bogon ~]# dmesg | grep -i acl
    [ 1.436514] systemd[1]: systemd 219 running in system mode. (+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN)
    [ 3.868425] SGI XFS with ACLs, security attributes, no debug enabled
    getfacl:获得某个文件/目录的ACL设置项目
    setfacl:设置某个文件/目录的ACL规范
    
    setfacl:
      -m:设置后续的acl参数给文件时,不可与-x合用
      -x:删除后续的acl参数,不可与-m合用
      -b:移除所有的acl设置参数
      -k:移除默认的ACL参数
      -R:递归设置ACL
      -d:设置默认acl参数,只对目录有效
    
      touch acl_test1
      setfacl -m u:wios:rx acl_test1
    
      setfacl -m u::rwx acl_test1 ::中间没有使用者,表示该文件的拥有者
    
      利用 u:使用者:权限 的方式来设置
    
    
    getfacl:
      参数与setfacl一样
      [root@bogon wios]# getfacl a
      # file: a
      # owner: root
      # group: root
      user::rw-
      user:wios:rw- #这里是区别,就是acl加上的
      group::r--
      mask::rw-
      other::r--
    
      [root@bogon wios]# touch b
      [root@bogon wios]# getfacl b
      # file: b
      # owner: root
      # group: root
      user::rw-
      group::r--
      other::r--
    
    针对单一群组的权限设置:g:群组名:权限
    针对有效权限设置: m:权限 有效权限,只有在该权限范围内的权限才会生效,超出的部分不生效
    
    setfacl -m mask::rxw a 修改mask的值,列出的属性可以当作一般用来操作即可
    
    使用默认权限设置目录中未来文件的ACL权限继承 d:[u|g]:[user|group]:权限
    setfacl -m d:u:wios:rx 目录名




    PAM模块:
      PAM时一套应用程序接口,提供了一连串的验证机制,只要使用者将验证阶段的需求告知PAM后,
      PAM就能够汇报使用者验证的结果(成功或者失败)

    PAM被调用的流程:
      1.使用者执行/usr/bin/passwd时,并输入密码
      2.passwd调用PAM模块进行验证
      3.PAM模块会到/etc/pam.d/中找与程序passwd同名的配置文件
      4.依据/etc/pam.d/passwd内的设置,引用相关的PAM模块逐步进行验证分析
      5.将验证结果回传给passwd这只程序
      6.passwd会根据PAM回传的结果决定下一步操作


    常用模块介绍:
    /etc/pam.d/login 登陆
    /etc/pam.d/system-auth


    /etc/pam.d/*:每个程序个别的 PAM 配置文件;
    /lib64/security/*:PAM 模块文件的实际放置目录;
    /etc/security/*:其他 PAM 环境的配置文件;
    /usr/share/doc/pam-*/:详细的 PAM 说明文档



    limits.conf:

    * soft nofile 655350
    * hard nofile 655350


    设置限制
      ulimit -a: 查看所有限制信息
      ulimit -n: 设置最大可以打开的文件数量


    /var/log/secure
    /var/log/messages
    如果发生登陆错误或者无法预期的错误时,PAM会把信息记录在文件中,可以查看日志

  • 相关阅读:
    Spark官方文档——本地编写并运行scala程序
    scala函数组合器
    scala数组
    scala实现kmeans算法
    Nginx 服务器安装及配置文件详解
    OpenVAS开源风险评估系统部署方案
    Elasticsearch和Head插件安装
    手把手教你在CentOS 7.4下搭建Zabbix监控(转)
    elasticsearch6.X 及head插件部署(完整版)
    Vim配置(python版)
  • 原文地址:https://www.cnblogs.com/djoker/p/9401986.html
Copyright © 2011-2022 走看看