zoukankan      html  css  js  c++  java
  • linux【第六篇】用户和用户管理及定时任务复习

    定时任务复习

    1.什么是定时任务?

    2.如何编辑查看定时任务(配置文件位置?),语法的特殊字符意义是什么?
    - * , /

    3.书写定时任务有哪些要领?

    4.生产如何调试定时任务

    5.生产场景配置定时任务需要注意的问题?

    用户和用户管理

    linux UID GID
    管理员:root oldboy
    用户和组的关系:

    用户分类:

    超级用户:UID = 0 root
    普通用户: UID 500起 由超级用户或者具有超级用户权限的用户创造
    虚拟用户:UID 1-499 存在满足文件或者服务启动的需要。一般 都不能登录,只是傀儡。

    用户关联文件

    /etc/passwd/, /etc/shadow, /etc/group , /etc/gshasow

    用户管理的命令:

    • useradd 添加用户 -u uid,-g指定所属组,-s 登录shell -M -e 指定用户过期时间
    • userdel 删除用户
    • passwd 改密码
    • usermod 修改用户信息, -u uid ,-g 指定所属组,-s 登录shell -e 指定用户过期时间
    • chage 查看及修改用户密码相关信息 -l 查看 -E 修改账户
    • id 查看用户UID ,GID 及所归属的用户组
    • lsattr 查看特殊属性
    • chattr 设置特殊属性,例如:+i 不可变
    • who 查看谁登录了
    • whoami 查看当前用户
    • users 只看有谁登录
    • su 命令 切换用户角色
    • 指定用户执行命令
    1 [root@VM_141_154_centos ~]# su - oldboy -c "touch a.txt"
    2 [root@VM_141_154_centos ~]# ls -l /home/oldboy/a.txt
    3 -rw-rw-r-- 1 oldboy oldboy 0 Apr 9 15:46 /home/oldboy/a.txt
    • su 用户角色切换工具,有可能功高盖主
    • sudo 提升用户权限

     /etc/skel 目录

    1. 用来存放新用户配置文件的目录,当我们添加新用户时,这个目录下的所有文件会自动被复制到新添加的用户的家目录下
    2. 默认情况下,/etc/skel 目录下的所有文件都是隐藏文件(以.开头的文件)
    3. 通过修改,添加,删除/etc/skel 目录下的文件,我们可为新创建的用户提供统一的,标准的,初始化用户环境。
    • useradd oldboy 系统会自动执行 cp -a /etc/skel/* /home/oldboy

    • 企业案例:
      1 当出现-bash-4.1$
      2 cp -a /etc/skel/.bash*  /home/oldboy

     修改[root@VM_141_154_centos ~]

    [root@VM_141_154_centos ~]由set|grep -i ps1控制
    如下:想永久生效,放profile下面
    [root@VM_141_154_centos ~]# set|grep -i ps1
    PS1='[u@h W]$ '
    

    useradd配置 行为控制

    • /etc/default/useradd
    • /etc/login.defs
    [root@VM_141_154_centos ~]# cat /etc/default/useradd
    # useradd defaults file
    GROUP=100
    HOME=/home
    INACTIVE=-1
    EXPIRE=
    SHELL=/bin/bash
    SKEL=/etc/skel
    CREATE_MAIL_SPOOL=yes
    

    关于useradd的目录:

    • /etc/passwd/
    • /etc/shadow
    • /etc/group
    • /etc/gshasow

    useradd 参数实战 -c -u -G -s -d 多个参数组合的例子

    实例:自定义的家目录,shell类型,所属的用户组等:添加用户oldboy6,

    并设置其用户注释信息为Handsomeboy,UID指定为806,归属组为用户组 root,oldboy,sa成员,

    其shell类型为/bin/sh,设置家目录为/oldboy6

    实际操作结果:
    useradd -c "Handsomeboy" -u 806 -G root,oldboy,sa -s /bin/sh -d /oldboy6 oldboy6
    查看结果
    grep "oldboy6" /etc/passwd/
    id oldboy6
    

    groupadd:用户组

    重要参数:-g
    group sa2 -g 888
    查看 grep sa2 /etc/group
    

    passwd修改密码 

    echo 123456|passwd --stdin oldboy
    passwd --stdin oldboy <p.log
    [root@VM_141_154_centos ~]# echo 123456|passwd --stdin oldboy
    Changing password for user oldboy.
    passwd: all authentication tokens updated successfully.
    

    实例:下面要求oldboy用户7天内不能更改密码,60天以后
    必须修改密码,过期前10通知,过期后30天后禁止登陆

    • 第一种
    passwd -n 7 -x 60 -w 10 -i 30 oldboy
    查看
    change -l oldboy
    
    • 第二种
    [root@VM_141_154_centos ~]# chage -m7 -M60 -W10 -I30 oldboy
    [root@VM_141_154_centos ~]# chage -l oldboy
    Last password change					: Apr 09, 2017
    Password expires					: Jun 08, 2017
    Password inactive					: Jul 08, 2017
    Account expires						: never
    Minimum number of days between password change		: 7
    Maximum number of days between password change		: 60
    Number of days of warning before password expires	: 10
    

      

    passwd 特殊权限说明 

    [root@VM_141_154_centos ~]# which passwd
    /bin/passwd
    [root@VM_141_154_centos ~]# ls -l /usr/bin/passwd
    -rwsr-xr-x. 1 root root 27832 Jun 10  2014 /usr/bin/passwd
    [root@VM_141_154_centos ~]# ls -l /etc/passwd
    -rw-r--r-- 1 root root 1592 Apr  5 22:11 /etc/passwd
    

     userdel:删除用户 groupdel:删除用户组

    重要参数 -r,一般不用,会把家目录全删掉
    [root@VM_141_154_centos ~]# useradd oldboy1
    [root@VM_141_154_centos ~]# userdel -r oldboy1
    
    删除用户组相关命令groupdel
    [root@VM_141_154_centos ~]# groupadd sa
    [root@VM_141_154_centos ~]# groupdel sa
    

    查看当前账户状态chage -l oldboy

    [root@VM_141_154_centos ~]# chage -l oldboy
    Last password change					: Apr 09, 2017
    Password expires					: never
    Password inactive					: never
    Account expires						: never
    Minimum number of days between password change		: 0
    Maximum number of days between password change		: 99999
    Number of days of warning before password expires	: 7
    

    visudo 

    98 gg 切换到98行
    root    ALL=(ALL)       ALL在这行下边编辑
    oldboy  ALL=(ALL)       /bin/rm
    还可以
    [root@VM_141_154_centos ~]# echo "oldboy  ALL=(ALL)       /bin/rm">>/etc/sudoers
    [root@VM_141_154_centos ~]# tail -l /etc/sudoers
    ## Allows members of the users group to mount and unmount the 
    ## cdrom as root
    # %users  ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom
    
    ## Allows members of the users group to shutdown this system
    # %users  localhost=/sbin/shutdown -h now
    
    ## Read drop-in files from /etc/sudoers.d (the # here does not mean a comment)
    #includedir /etc/sudoers.d
    oldboy  ALL=(ALL)       /bin/rm
    

    visudo检查语法错误

    [root@VM_141_154_centos ~]# visudo -c
    /etc/sudoers: parsed OK
    

    visudo别名

    机器别名
    Host_Alias     FILESERVERS = fs1, fs2
    Host_Alias     MAILSERVERS = smtp, smtp2
    
    用户别名
    User_Alias ADMINS = jsmith, mikem, %sa sa为一个用户组
    
    命令别名
    Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/p    ing, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/r    fcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool
    

    服务器用户权限管理改造方案与实施项目(root泛滥)

    1.问题现状

    • 开发,运维,架构,DBA,产品,市场
    • 经常导致文件莫名其妙的丢失
    • 现提出针对linux服务器用户权限集中管理的解决方案

    2.项目要求

    • 最小化:安装软件最小化,权限最小化,(目录文件,用户权限,程序运行)
    • 需要sudo管理来代替或结合su命令来完成

    3.具体实现

    • 分等级,分层次的实现对linux服务器管理的权限最小化,规范化。
    • 这样既减少了运维管理或成本,又提高了工作效率,还方便日常系统维护

    4.实施方案

    • 说明:实施方案一般是有积极主动发现问题的运维人员提出问题,然后写好方案,再召集大家讨论可行性,最后确定方案,实施部署,最后后期总结维护。
    • 思想:提问题,要有解决方案
    • 到此为止:应该已经写完了权限规划文档。

      4.1信息采集

    • 各个部门人员名单,职位,及负责的业务及权限
    • 张三    开发经理   blog业务  要求all,但是不能切入到root

      4.2规范化

    • 所有员工必须通过《员工Linux服务器管理权限申请表》
    • 来申请对应的权限,确定审批流程,规范化管理。

      4.3 写操作申明,对各部门人进行操作讲解。

    • sudo执行命令,涉及到path变量问题,运维提前处理好。

    5.模拟创建用户角色

    建立3个初级运维,一个高级运维,一个网络工程师,一个运维经理,密码统一111111
    [root@VM_141_154_centos ~]# for user in chuji001 chuji002 chuji003 net001 senior001 manager001
    > do
    > useradd $user
    > echo "111111"|passwd --stdin $user
    > done
    Changing password for user chuji001.
    passwd: all authentication tokens updated successfully.
    Changing password for user chuji002.
    passwd: all authentication tokens updated successfully.
    Changing password for user chuji003.
    passwd: all authentication tokens updated successfully.
    Changing password for user net001.
    passwd: all authentication tokens updated successfully.
    Changing password for user senior001.
    passwd: all authentication tokens updated successfully.
    Changing password for user manager001.
    passwd: all authentication tokens updated successfully.
    

      

    建立5个开发人员,属于phpers组
    [root@VM_141_154_centos ~]# groupadd -g 1000 phpers
    [root@VM_141_154_centos ~]# for n in `seq 5`
    > do
    > useradd -g phpers php00$n
    > echo "111111"|passwd --stdin php00$n
    > done
    Changing password for user php001.
    passwd: all authentication tokens updated successfully.
    Changing password for user php002.
    passwd: all authentication tokens updated successfully.
    Changing password for user php003.
    passwd: all authentication tokens updated successfully.
    Changing password for user php004.
    passwd: all authentication tokens updated successfully.
    Changing password for user php005.
    passwd: all authentication tokens updated successfully.
    
    [root@VM_141_154_centos ~]# for user in kaifamanager001 seniorphpers
    > do
    > useradd $user
    > echo "111111"|passwd --stdin $user
    > done
    Changing password for user kaifamanager001.
    passwd: all authentication tokens updated successfully.
    Changing password for user seniorphpers.
    passwd: all authentication tokens updated successfully.
    

    sudo配置注意事项

    提示:授权ALL在进行排除是会让我们防不胜防,这种先开后关的策略斌不是好的策略。

    • 1.命令别名下的成员必须是文件或目录的绝对路径
    • 2.别名名称是包含大写字母,数字,下划线,如果是字母都要大写
    • 3.一个别名下有多个成员,成员与成员之间,通过半角","号分隔,成员必须是有效实际存在的。
    • 4.别名成员受别名类型 Host_Alias,User_Alias,Runas_Alias,Cmnd_Alias制约定义什么类型的别名,就要有什么类型的成员相配 
    • 5.别名规则是每行算一个规则,如果一个别名规则一行容不下时,可以通过""来续行
    • 6.指定切换的用户要用()括起来,如果省略括号,则默认为root用户如果括号里是(ALL),则代表能切换到所有用户
    • 7.如果不需要密码直接运行命令的,应该加NOPASSWD:参数
    • 8.禁止某类程序或命令执行,要在命令动作前面加上"!"号,并且放在允许执行命令的后面。
    • 9.用户组前面必须加%号

    服务器日志审计项目

    • 1.权限控制后进一步实施对所有用户日志记录方案
    • 2.通过sudo和syslog配合实现对所有用户进行日志审计并将记录集中管理
    • 3.实施后让所有运维和开发的所有执行的命令都有记录可查,杜绝了内部人员的操作安全隐患。

     

    配置sudo命令用户行为日志审计

    说明:所谓sudo命令日志审计,并不记录普通用户的普通操作。而是记录,那些执行sudo命令的用户操作。

    生产场景日志审计 sudo配合syslog
    安装 sudo syslog
    [root@VM_141_154_centos ~]# yum install sudo syslog -y
    查看安装了没
    [root@VM_141_154_centos ~]# rpm -aq|egrep "sudo|rsyslog"
    rsyslog-7.4.7-16.el7.x86_64
    sudo-1.8.6p7-21.el7_3.x86_64
    
    配置sudoser 
    [root@VM_141_154_centos ~]# echo "Defaults        logfile=/var/log/sudo.log">>/etc/sudoers
    查看配置
    [root@VM_141_154_centos ~]# tail -l /etc/sudoers
    检查语法
    [root@VM_141_154_centos ~]# visudo -c
    /etc/sudoers: parsed OK
    配置系统日志/etc/syslog.conf
    增加配置 local2.debug到/etc/syslog.conf中
    [root@VM_141_154_centos ~]# echo "local2.debug        /var/log/sudo.log">>/etc/rsyslog.conf
    重启rsyslog服务
    [root@VM_141_154_centos ~]# systemctl restart rsyslog
    
    执行sudo操作后
    [oldboy@VM_141_154_centos ~]$ sudo - root 
    [sudo] password for oldboy: 
    oldboy is not in the sudoers file.  This incident will be reported.
    将sudo操作记录到sudo.log中
    [root@VM_141_154_centos log]# ll  /var/log/sudo.log
    -rw------- 1 root oldboy 111 Apr 10 16:49 /var/log/sudo.log
    

      

  • 相关阅读:
    python实战===用python调用jar包
    Django连接数据库写入数据报错
    Niginx主配置文件参数详解
    uwsgi参数详解
    JSON序列化和反序列化
    ServiceBroker创建流程
    WCF和WebService中获取当前请求报文的方法
    python 关于文件的操作
    关于函数对象的理解
    python,关于用户登录与注册问题
  • 原文地址:https://www.cnblogs.com/perl2py/p/6685447.html
Copyright © 2011-2022 走看看