定时任务复习
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 目录
- 用来存放新用户配置文件的目录,当我们添加新用户时,这个目录下的所有文件会自动被复制到新添加的用户的家目录下
- 默认情况下,/etc/skel 目录下的所有文件都是隐藏文件(以.开头的文件)
- 通过修改,添加,删除/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