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

  

原文地址:https://www.cnblogs.com/perl2py/p/6685447.html