代理做减肥网站,如何建小企业网站,潍坊响应式网站建设要多久,比利时网站的后缀at是一次性的任务#xff0c;crond是循环的定时任务
如果 cron.allow 文件存在#xff0c;只有在文件中出现其登录名称的用户可以使用 crontab 命令。root 用户的登录名必须出现在 cron.allow 文件中#xff0c;如果这个文件存在的话。系统管理员可以明确的停止一个用户crond是循环的定时任务
如果 cron.allow 文件存在只有在文件中出现其登录名称的用户可以使用 crontab 命令。root 用户的登录名必须出现在 cron.allow 文件中如果这个文件存在的话。系统管理员可以明确的停止一个用户通过使用 crontab 命令同时在 cron.deny 文件中列出用户的登录名。如果只有 cron.deny 文件存在任一名称没有出现在这个文件中的用户可以使用 crontab 命令。
如果以下一个条件成立用户将不能使用 crontab 命令
cron.allow 文件和 cron.deny 文件不存在只允许 root 用户。 cron.allow 文件存在但用户的登录名并不列在其中。 cron.deny 文件存在并且用户的登录名列在其中。
如果 cron.allow 和 cron.deny 文件都不存在只有被 root 用户授权的人可以用 crontab 命令提交一个作业。 1、定时任务crond介绍
1定时任务软件种类
at 适合仅执行一次就结束的调度命令需要启动一个后端的atd服务。
crontab 需要启动一个服务crond才行crond服务通过crontab命令实现。
anacron 无法周期性执行只能以天为周期但有个特点在关机状态下未执行的任务下次开机时可以补上执行
注crontab为最常用的定时任务。 2crontab工作
运行linux后开机自启动crond任务系统会每分钟检查是否有要执行的任务工作循环检测
默认系统中可以登陆的用户都可以使用crontab定义计划任务。不过可以通过/etc/cron.allow文件限制权限。 3crontab支持两种状态
a.直接编写计划任务
b.使用目录的方式放在目录里面的都会定时执行定时目录可在/etc/crontab中设定。 2、crond定时任务限权
可对各用户使用定时任务进行管理 1拒绝用户使用crontab任务
在/etc/cron.deny中添加要拒绝的用户名格式如下
listen
nobody
noaccess
username1
username2
username3
. 2允许用户访问crontab任务
在/etc/cron.allow中添加要允许的用户名格式如下
root
username1
username2
. 3定期执行一个目录下的文件
在/etc/crontab中添加目录格式如下
01 * * * * root run-parts 目录
注使用run-parts可定义定期执行的目录 4限权测试
1添加用户
[roottest ~]# useradd test
[roottest ~]# echo 123456 |passwd test--stdin #非交互模式创建密码
Changing password for user test.
passwd: all authentication tokensupdated successfully. 2拒绝测试
[roottest ~]# cat /etc/cron.deny
test
[roottest ~]#
[roottest ~]# su - test
[testtest ~]$ crontab -e
You (test)are not allowed to use this program (crontab)
See crontab(1) for more information
在cron.deny中加入用户后该用户没有权限编辑定时任务 3允许测试
[roottest ~]# cat /etc/cron.allow
test
[roottest ~]# su - test
[testtest ~]$ crontab -e #test用户编辑成功
*/1 * * * * echo successful /tmp/a.log
[testtest ~]$ crontab -l
*/1 * * * * echo successful /tmp/a.log
在cron.allow中加入用户后该用户能编辑定时任务 4清空允许用户
[testtest ~]$ su - root
Password:
[roottest ~]# echo /etc/cron.allow
[roottest ~]# su - test
[testtest ~]$ crontab -l #test用户连查看的权限都没有
You (test)are not allowed to use this program (crontab)
See crontab(1) for more information
[testtest ~]$ cat /etc/cron.deny
test
清空cron.allow允许用户后该用户又被cron.deny拒绝
得出结论/etc/cron.allow优先于/etc/cron.deny配置 3、Crontab用法 [rootyang1 data]# crontab --help #注crontab –l –e都是直接操作/var/spool/cron/下当前用户名的文件
usage: crontab [-u user] file #指定某用户如crontab –u yang2 –e编辑yang2家目录下的crontab crontab [-u user] [ -e | -l | -r ] (default operation is replace,per 1003.2) -e (edit users crontab) #编辑当前用户的定时任务 -l (list users crontab) #查看当前用户的定时任务 -r (delete users crontab) #删除定时任务 -i (prompt before deletingusers crontab) #删除crontab文件内容删前会有提示 -s (selinux context)
注crontab –e 编辑定时任务退出时可以检查语法直接编辑/var/spool/cron/root不能。如果大批量添加任务则使用echo追加。
cron执行的每一项工作都会被纪录到/var/log/cron这个日志文件中可以从这个文件查看命令执行的状态。 4、Crontab命令的书写格式 * * * * * /bin/sh /scripts/yy.sh 分 时 日 月 周 命令和文件路径 (00-59) (0-23) (1-31) (1-12) (0-6) 所用符号表示意思 * 星号每的意思 - 减号连续一段时间如:00 17-19 * * * cmd 每天下午17点18点19点执行一次命令 , 逗号多个时间段如:00 10-11,17-19 * * * cmd 每天的上午10,11点整下午的17,18,19点整执行一次命令 /n n代表数字指每隔n时间执行一次如: */2 * * * * cmd 每隔2分钟执行一次命令 1举例
30 12-16/2 * ** cmd
每天的中午12点到下午4点间每隔2小时执行一次
* 23-7/1 * * 25pxd
注这是一个错误的命令
日和周不能同时用若要以月为间隔则日或周必有一个有值
其它如小时上有值则分钟上也要有值
*/1 * * ** echo yangrong /var/log/yy /dev/null 21
每隔一分钟把yangrong打印到yangrong1文件中但该命令无法执行因为与/dev/null不可同时使用 2/dev/null 21解释 0是标准输入 使用或 1是标准输出 使用或 2是标准错误输出 使用2或2 /dev/null 21 即错误输出与标准输出全部重定向到空,可以写成1/dev/null 2/dev/null 3关于重定向的作用
重定向到空可以避免碎片文件占用inode资源
重定向到一个指定log里可以看任务是否执行 4关于导致磁盘inode满情况分析
定时任务执行成功or失败时程序会向上层发送mail由于平时工作中不打开sendmail功能所以邮件会存储在临时目录/var/spool/clientmqueue随着执行的任务次数多文件也会越来越多直到某一天添加文件时提示No space left on device主要问题原因不在于垃圾文件会占很大空间而在于每个文件会占用inode节点。centos6.4默认不装sendmail,可能不会导致这个问题发生。
所以crontab规则后需加 /dev/null 21。
注 与 /dev/null 21不可同时存在不然无法执行 5重启crond服务
/etc/init.d/crond status #查看当前运行状态
/etc/init.d/crond restart #重启
/etc/init.d/crond reload #平滑重启 5、定时服务器时间同步 1手动同步
[rootyang1 data]# which ntpdate
/sbin/ntpdate
[rootyang1 data]# /sbin/ntpdate time.windows.com 2自动同步使用定时任务
#sync systime by yangrong at 2013-9-4
*/5 * * * * /sbin/ntpdate time.windows.com/dev/null 21
注当局域网内的服务器足够多时500则需自己在局域网搭建ntp server 用下面的命令可以进行时钟同步一下用timedatectl核查 ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
6、写定时任务注意点
掌握了下面7点写定时任务就不在犯错。 序号 注意点 1 每个任务添加注释谁写的什么时间写的完成什么需求? 2 执行脚本使用/bin/sh防止脚本无执行权限要执行的文件路径是从根开始的绝对路径防止找不到文件 3 尽量把要执行的命令放在脚本里然后把脚本放在定时任务里。对于调用脚本的定时任务可以把标准输出错误输出重定向到空。 4 定时任务中带%无法执行需要加\转义 5 如果时上有值分钟上必须有值 6 日和周不要同时使用会冲突 7 与/dev/null 21不要同时存在
书写举例
#backup mysql byyangrong at 2013-9-4
30 4 * * * /bin/shtar_mysql.sh /dev/null 21 7、cron和anacron的区别及anacron配置
Linux 中怎么设置计划任务cron 与 anacron
作为系统管理员为了系统的安全我们希望服务器定期自动执行一些操作比如每天自动备份系统文件定期备份数据库以及在未来某天让系统自动关机…………Linux就该这么学linux下有很多命令能帮我们在未来某个特定时间让系统实现上述的操作以及让系统定期执行某些操作。
在本篇中我们会解释 cron 和 anacron并向你展示如何在 Linux 中设置 anacron。我们也会比较这两个工具。 cron 在 Linux 设置时间任务
第一 cron 介绍
1、cron - 是一个用于运行计划任务如系统备份、更新等的守护进程。它适合在那些 24X7 不间断运行的机器如服务器上运行的计划任务。
2、命令/脚本被写在 cron 任务脚本中它是在crontab 文件中被安排的。系统默认的 cromtab 文件是/etc/crontab 但是每个用户也可以创建自己的 cromtab 文件来在特定时间运行用户定义的命令。 第二 cron 如何设置
1、命令合使用方法 #crontab -u -l, -r, -e -u指定一个用户 -l列出某个用户的任务计划 -r删除某个用户的任务 -e编辑某个用户的任务
2、创建一个定时任务
要创建一份个人crontab 文件只要输入 # crontab -e 30 3 * * * /bin/tar -jcf /tmp/backup.tar.gz /etc // 每天早上3点备份/etc目录 # crontab -l
END 在 Linux 中设置 anacron
第一 anacron介绍
1、anacron 用于以天为单位的频率运行命令。它的工作与 cron 稍有不同它假设机器不会一直开机。
2、cron 也适合在那些不会 24X7 运行如笔记本以及桌面电脑的机器上运行每日、每周以及每月的计划任务LCTT 译注不适合按小时、分钟执行任务。
3、假设你有一个计划任务比如备份脚本要使用 cron 在每天半夜运行也许你以及睡着那时你的桌面/笔记本电脑已经关机。你的备份脚本就不会被运行。
4、如果你使用 anacron你可以确保在你下次开启桌面/笔记本电脑的时候备份脚本会被执行。
第二 anacron 如何在 Linux 设置 1、anacron命令方法
anacron 任务被列在 /etc/anacrontab 中任务可以使用下面的格式anacron 文件中的注释必须以 # 号开始安排。
#period delay job-identifier command *************************************************
1.1 period - 这是任务的频率以天来指定或者是 daily 、weekly、monthly 代表每天、每周、每月一次。 你也可以使用数字1 - 每天、7 - 每周、30- 每月或者N - 几天。
1.2 delay - 这是在执行一个任务前等待的分钟数。
1.3 job-id - 这是写在日志文件中任务的独特名字。
1.4 command - 这是要执行的命令或 shell 脚本。
2 、如何看示列文件
要浏览示例文件输入
$ ls -l /var/spool/anacron/
total 12
-rw------- 1 root root 9 Jun 1 10:25 cron.daily
-rw------- 1 root root 9 May 27 11:01 cron.monthly
-rw------- 1 root root 9 May 30 10:28 cron.weekly
anacron 会检查任务是否已经在 period 字段指定的时间被被执行了。如果没有则在等待 delay 字段中指定的分钟数后执行 command字段中指定的命令。
一旦任务被执行了它会使用 job-id 时间戳文件名字段中指定的名称将日期记录在 /var/spool/anacron 目录中的时间戳文件中。
3、 现在让我们看一个例子。
这个会每天运行 /home/aaronkilik/bin/backup.sh 脚本
daily 10 example.daily /bin/bash /home/aaronkilik/bin/backup.sh
当机器在 backup.sh 期望被运行时是关机的anacron 会在机器开机十分钟之后运行它而不用再等待 7 天。
第三 anacrontab 文件的重要变量
START_HOURS_RANGE
- 这个设置任务开始运行的时间范围也就是任务只在这几个小时内运行。
RANDOM_DELAY
- 这定义添加到用户定义的任务延迟的最大随机延迟默认为 45。
这是你的 anacrontab 文件可能看上去的样子。
Anacron – /etc/anacrontab END cron 以及 anacron 的比较
cron 和 anacron 主要的区别在于 cron 能在那些持续运行的机器上有效地运行而 anacron 是针对那些会在一天内或者一周内会关机的机器。 详解anacron调用 anacron命令开机唤醒计划任务 通常对于一台24小时不停歇的Linux服务器来说正常的计划任务都是通过crontab或at命令来执行的。但是当某天因维护等原因需要对服务器进行关机升级的时候原本该段时间关机时间段内需要执行的计划任务就会在开机后被推迟到第二天的运行时间点再执行那么相当于当天的计划任务就被推迟了这种情况在某些场景内是不可接受的。这时候就可以使用anacron命令来使得在系统重新开机后把关机时间内的计划任务执行一次。anacron命令实际是依赖于crond服务实现的。
anacron命令的使用
1、命令格式
anacron [options] [job]
2、常用选项
-s开始所有的jobs并根据时间戳判断是否开始相应的工作job -f强制进行忽略时间戳的对比 -n立即进行未进行的任务忽略延迟等待时间 -u仅升级相应的执行时间戳实际不进行任何工作 job/etc/anacrontab文件中定义的各项工作名称
3、anacron任务的配置
与anacron任务运行的相关配置文件包括 /etc/anacrontab、/var/spool/anacron/cron.daily、/etc/cron.hourly/0anacron及/etc/cron.d/0hourly。
其中/etc/anacrontab文件为anacron任务的配置文件其内容如下
SHELL/bin/sh
PATH/sbin:/bin:/usr/sbin:/usr/bin
MAILTOroot
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY45
# the jobs will be started during the following hours only
START_HOURS_RANGE3-22 #period in days delay in minutes job-identifier command
1 5 cron.daily nice run-parts /etc/cron.daily
7 25 cron.weekly nice run-parts /etc/cron.weekly
monthly 45 cron.monthly nice run-parts /etc/cron.monthly
1 0 test.daily /bin/bash /tmp/anacron.sh
前三行为定义anacron任务的基本环境一般变动不大其后两行表示RANDOM_DELAY45设置为anacron任务添加的随机延迟的最大值单位为分钟一个anacron任务的运行的总延迟时间为RANDOM_DELAYBase_delaySTART_HOURS_RANGE3-22设置anacron任务执行的时间范围此处表示anacron任务只能在3am-22pm的时间范围内执行
在下面为anacron任务的配置行每一行对应一个anacron任务对应每列含义为period in days周期天数指任务在多少天内执行一次7表示七天内执行一次可以使用daily、weekly、monthly来表示周期delay in minutes延迟时间单位为分钟job-identifier任务标识这个与/var/spool/anacron/ 目录下的时间戳文件名相一致anacron任务通过此标识来获取对应的时间戳判断是否执行该任务COMMANDanacron任务执行的内容
4、anacron任务的工作流程
下面梳理下anacron工程的流程以便更好理解anacron任务的工作。这里以Centos 6.8为系统背景对相关的anacron任务流程进行描述。
首先当系统启动时系统调度服务crond会执行/etc/cron.d/0hourly中的设置
[rootlocalhost ~]# cat /etc/cron.d/0hourly
SHELL/bin/bash
PATH/sbin:/bin:/usr/sbin:/usr/bin
MAILTOroot
HOME/
01 * * * * root run-parts /etc/cron.hourly #每小时的第1分钟执行一次/etc/cron.hourly目录中的脚本文件
而在/etc/cron.hourly目录下包含0anacron脚本文件其内容为
[rootlocalhost ~]# ll /etc/cron.hourly/
total 4
-rwxr-xr-x. 1 root root 409 Aug 24 2016 0anacron [rootlocalhost ~]# cat /etc/cron.hourly/0anacron
#!/bin/bash
# Skip excecution unless the date has changed from the previous run
if test -r /var/spool/anacron/cron.daily; then #判断对应的时间戳文件是否可读 daycat /var/spool/anacron/cron.daily #随后读取对应的时间戳并赋值给day
fi
if [ date %Y%m%d $day ]; then #判断当前时间戳是否与读取的时间戳相一致如果相同则退出脚本 exit 0;
fi # Skip excecution unless AC powered #在电池模式不执行anacron任务
if test -x /usr/bin/on_ac_power; then /usr/bin/on_ac_power /dev/null if test $? -eq 1; then exit 0 fi
fi
/usr/sbin/anacron -s #执行anacron任务
上述脚本的最后一行/usr/sbin/anacron -s即表明了开始执行/etc/anacrontab里面的anacron任务了此时便会读取/etc/anacrontab文件的内容
SHELL/bin/sh
PATH/sbin:/bin:/usr/sbin:/usr/bin
MAILTOroot
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY5
# the jobs will be started during the following hours only
START_HOURS_RANGE3-22 #period in days delay in minutes job-identifier command
1 5 cron.daily nice run-parts /etc/cron.daily
7 25 cron.weekly nice run-parts /etc/cron.weekly
monthly 45 cron.monthly nice run-parts /etc/cron.monthly
1 0 test.daily /bin/bash /tmp/anacron.sh
该文件最后一行表示该anacron任务在每天3am-22pm范围内执行1次并且其delay时间为RANDOM_DELAYdelay in minutes即50该anacron任务对应的执行时间戳文件为test.daily可自定义在执行前会将执行时间戳文件的日期与当前日期作比较如果超过1天含1天的话就执行anacron任务。
所以根据上述描述anacron任务的工作流程可以总结为 1、系统启动后crond服务执行每小时调度任务/etc/cron.d/0hourly来执行/etc/cron.hourly/0anacron 任务。 2、/etc/cron.hourly/0anacron 首先判断今天是否已经运行过anacron任务随后判断系统是否运行在电池模式如果结果都为否则执行/usr/sbin/anacron -s命令。 3、随后anacron命令由/etc/anacrontab文件分析到test.daily这个任务的工作间隔为1天 4、从anacron命令从/var/spool/anacron/test.daily文件中取出此anacron任务最近一次运行时间戳 5、对比当前时间戳与上一个步骤读取的时间戳如差异天数为1天或以上则准备运行命令 6、在延迟时间过后开始运行相关的命令即/bin/bash /tmp/anacron.sh。 7、运行完毕后修改对应的时间戳文件为当前时间anacron程序结束。 核查的顺序
crond服务是否启动systemctl status crond在/etc的下面是否有cron.allow和cron.deny核查权限使用crontab –l核查任务配置注意命令行的命令能够正确执行特别是还行权限、目录及大小写正确核查定时任务的相应的服务是否有日志等信息显示定时启动过、日志正常等特别是针对安全服务等。
16、X11的配置
屏保的设置检查。
Application—System Tools—Setting—Hardware—Power Saving—Blank screen—never 用termset可以进行设定。
17、进程、服务、多余的程序
1、用ps –aux 命令核查各种进程用|grep mysql等进行过滤
2、用setup进行服务核查。
3、用systemctl | grep running核查用|grep sshd核查某个服务
4、用systemctl status 服务名核查其状态
[rootlocalhost vm]# systemctl status sshd
● sshd.service - OpenSSH server daemon Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2021-11-14 03:45:10 PST; 3h 11min left Docs: man:sshd(8) man:sshd_config(5) Main PID: 926 (sshd) CGroup: /system.slice/sshd.service └─926 /usr/sbin/sshd -D Nov 14 03:45:10 localhost.localdomain systemd[1]: Starting OpenSSH server daemon...
Nov 14 03:45:10 localhost.localdomain sshd[926]: Server listening on 0.0.0.0 port 22.
Nov 14 03:45:10 localhost.localdomain sshd[926]: Server listening on :: port 22.
Nov 14 03:45:10 localhost.localdomain systemd[1]: Started OpenSSH server daemon.
Nov 14 03:53:16 localhost.localdomain sshd[2855]: Accepted password for root from 192.168.5.226 port 59573 ssh2
5、常用的服务:sshd、firewalld、vsftpd、crond、mysqld、httpd、rsyslogd、auditd、ntpd、ntpdate、chronyd、network、NetworkManager、java等多余的服务如sendmail、ftp、telnet、dns server明确说明了不需要、finger等
6、核查多余的程序可以使用yum list installed,也可以使用rpm –qa、-ql。如果给定的条件查询哪个是多余的使用grep进行过滤。
18、一些强调的实用配置核查
1、确保配置了失败密码尝试的锁定
在n次不成功的连续登录尝试后锁定用户ID可减轻暴力对系统的密码攻击 查看 ’/etc/pam.d/password-auth‘ 和 ’/etc/pam.d/system-auth‘文件
并确认 pam_faillock.so 周围有 pam_unix.so pam_unix.so 是 [success1 defaultbad]
auth required pam_faillock.so preauth audit silent deny5 unlock_time900
auth [success1 defaultbad] pam_unix.so
auth [defaultdie] pam_faillock.so authfail audit deny5 unlock_time900
auth sufficient pam_faillock.so authsucc audit deny5 unlock_time900 2、限制密码重用次数
编辑/etc/pam.d/password-auth 和 /etc/pam.d/system-auth
password required pam_pwhistory.so remember5
3、确定密码的加密算法 SHA-512
编辑/etc/pam.d/password-auth 和 /etc/pam.d/system-auth
password sufficient pam_unix.so sha512 4、确保对su命令的访问受到限制
编辑/etc/pam.d/su
auth required pam_wheel.so use_uid
编辑/etc/group
将允许的用户加入wheel组这里以root和redhat用户为例
wheel:x:10:root,redhat 19、日志及日志保护的核查 1、日志文件说明
日志的功能 用于记录系统、程序运行中发生的各种事件 通过阅读日志有助于诊断和解决系统故障
日志文件的分类 内核及系统日志 由系统服务syslog统一进行管理日志格式基本相似 用户日志 记录系统用户登录及退出系统的相关信息 程序日志 由各种应用程序独立管理的日志文件记录格式不统一 /var/log/messages — 包括整体系统信息其中也包含系统启动期间的日志。此外mailcrondaemonkern和auth等内容也记录在var/log/messages日志中。/var/log/dmesg — 包含内核缓冲信息kernel ring buffer。在系统启动时会在屏幕上显示许多与硬件有关的信息。可以用dmesg查看它们。/var/log/auth.log — 包含系统授权信息包括用户登录和使用的权限机制等。/var/log/boot.log — 包含系统启动时的日志。/var/log/daemon.log — 包含各种系统后台守护进程日志信息。/var/log/dpkg.log – 包括安装或dpkg命令清除软件包的日志。/var/log/kern.log – 包含内核产生的日志有助于在定制内核时解决问题。/var/log/lastlog — 记录所有用户的最近信息。这不是一个ASCII文件因此需要用lastlog命令查看内容。/var/log/maillog /var/log/mail.log — 包含来着系统运行电子邮件服务器的日志信息。例如sendmail日志信息就全部送到这个文件中。/var/log/user.log — 记录所有等级用户信息的日志。/var/log/Xorg.x.log — 来自X的日志信息。/var/log/alternatives.log – 更新替代信息都记录在这个文件中。/var/log/btmp – 记录所有失败登录信息。使用last命令可以查看btmp文件。例如”last -f /var/log/btmp | more“。/var/log/cups — 涉及所有打印信息的日志。/var/log/anaconda.log — 在安装Linux时所有安装信息都储存在这个文件中。/var/log/yum.log — 包含使用yum安装的软件包信息。/var/log/cron — 每当cron进程开始一个工作时就会将相关信息记录在这个文件中。/var/log/secure — 包含验证和授权方面信息。例如sshd会将所有信息记录其中包括失败登录在这里。/var/log/wtmp或/var/log/utmp — 包含登录信息。使用wtmp可以找出谁正在登陆进入系统谁使用命令显示这个文件或信息等。/var/log/faillog – 包含用户登录失败信息。此外错误登录命令也会记录在本文件中。除了上述Log文件以外 /var/log还基于系统的具体应用包含以下一些子目录/var/log/httpd/或/var/log/apache2 — 包含服务器access_log和error_log信息。/var/log/lighttpd/ — 包含light HTTPD的access_log和error_log。/var/log/mail/ – 这个子目录包含邮件服务器的额外日志。/var/log/prelink/ — 包含.so文件被prelink修改的信息。/var/log/audit/ audit.log — 包含被 Linux audit daemon储存的信息。/var/log/samba/ – 包含由samba存储的信息。/var/log/sa/ — 包含每日由sysstat软件包收集的sar文件。/var/log/sssd/ – 用于守护进程安全服务。 登录记录:/var/log/wtmp 记录登录者讯录二进制文件须用last来读取内容 who -u /var/log/wtmp 查看信息
(命令last有两个可选参数last -u 用户名 显示用户上次登录的情况。last -t 天数 显示指定天数之前的用户登录情况。
用who –a核查w命令、users命令)引导日志:/var/log/boot.log 记录开机启动讯息dmesg | more 2、内核及系统日志 由系统服务 rsyslogd 统一管理 软件包rsyslog-7.4.7-16.el7.x86_64 主要程序/sbin/rsyslogd 配置文件/etc/rsyslog.conf 日志消息的级别 0 EMERG紧急会导致主机系统不可用的情况 1 ALERT警告必须马上采取措施解决的问题 2 CRIT严重比较严重的情况 3 ERR错误运行出现错误 4 WARNING提醒可能会影响系统功能的事件 5 NOTICE注意不会影响系统但值得注意 6 INFO信息一般信息 7 DEBUG调试程序或系统调试信息等 安全日志 保存了用户登录、退出系统等相关信息 /var/log/lastlog最近的用户登录事件 /var/log/wtmp用户登录、注销及系统开、关机事件 /var/run/utmp当前登录的每个用户的详细信息 /var/log/secure与用户验证相关的安全性事件 分析工具部分命令 users 、who、w、last、lastb 由相应的应用程序独立进行管理 Web服务/var/log/httpd/ access_log、error_log 代理服务/var/log/squid/ access.log、cache.log、 FTP服务/var/log/xferlog 查看工具部分命令 文本查看、grep过滤检索、Webmin管理套件中查看 awk、sed等文本过滤、格式化编辑工具 Webalizer、Awstats等专用日志分析工具
日志文件管理方案: 及时作好备份和归档 延长日志保存期限 控制日志访问权限 日志中可能会包含各类敏感信息如账户、口令等 集中管理日志将服务器的日志文件发到统一的日志文件服务器便于日志信息的统一收集、整理和分析、杜绝日志信息的意外丢失、恶意篡改或删除
3、日志管理配置 记录日志服务的主配置文件/etc/rsyslog.conf
第一块Modules模块加载
第二块Global Directory全局文件夹配置
第三块rules规则 服务.级别 记录的文件及路径 //级别包括8个级别
四、建立日志服务器 如何建立日志同步服务器 1.说明 日志发送机日志服务器日志发送机就是传统的服务器需要外发自己的日志
2.本地存日志同步远程存日志
2.确定日志发送机3件事情1发什么日志 2怎么发3发给谁 登录用户操作 日志协议514 目标服务器信息
确定日志服务器3件事情1确保日志服务开启 2收谁的 3怎么收 配置接收日志选项 来源IP 建立指定路径
-日志发送机vi /etc/rsyslog.conf 81行
日志接收服务器操作
-日志服务器接收 配置文件修改 vi /etc/rsyslog.conf
15-16行UDP去掉# 19-20行TCP去掉# //注意注释是有讲究的空格 查看开启以下象如下内容示例 ##Provides UDP syslog reception $ModLoad imudp $UDPServerRun 514
##Provides TCP syslog reception $ModLoad imtcp $InputTCPServerRun 514
确定全局日志配置文件的文件夹状态 第36行确认状态不要注释 $IncludeConfig /etc/rsyslog.d/*.conf
内容如下 格式 :属性, 比较操作符, 值 日志文件路径
属性包括fromhostfromhost-ipmsghostname 操作符包括containsisequalstartswith
例如
:fromhost-ip, isequal, “172.18.11.67” /var/log/receive/sec67denglu.log
注子文件夹及文件不需要手动建立重启服务后会自动生成。
重启服务并观察端口 systemctl restart rsyslog 并检查是否生成receive文件夹及log文件(发送机操作触发一下)
日志发送机操作 vi /etc/rsyslog.conf,找到81行添加authpriv.* 172.18.11.76:514
重启服务systemctl restart rsyslog
远程登录查看日志变化是否同步
作业 1、两台LINUX建立日志实时同步。 2、是
建立LAMP架构WEB服务器 [rootA ~]# yum -y install httpd* [rootA ~]# yum -y install mariadb* [rootA ~]# yum -y install php php-gd php-xml php-mysqlnd rsyslog-mysql [rootA ~]# yum -y install libcurl-devel net-snmp-devel
[rootA ~]# systemctl enable mariadb.service [rootA ~]# systemctl start mariadb.service [rootA ~]# mysqladmin -u root password 9865321
[rootA ~]# systemctl enable httpd.service [rootA ~]# systemctl start httpd.service [rootA ~]# cd /var/www/html/ [rootA html]# vim test.php ?php phpinfo(); ? 针对日志服务器的设置
cat /etc/syslog.conf查看是否有对应配置
检查方法配置了远程日志服务器为符合
配置方法1、参考配置操作 修改配置文件vi /etc/syslog.conf 加上这一行 *.* 192.168.0.1 可以将*.*替换为你实际需要的日志信息。比如kern.* / mail.* 等等可以将此处192.168.0.1替换为实际的IP或域名。 重新启动syslog服务执行下列命令 services syslogd restart 2、补充操作说明 注意*.*和之间为一个Tab 4.audit日志的管理
通过auditd系统审核允许系统管理员监视其系统这样他们就可以检测到未经授权的数据访问或修改。
默认情况下auditd将审核SELinux AVC拒绝、系统登录、帐户修改和身份验证事件。事件将记录到 /var/log/audit/audit.log 需要通过核查auditctl –e核查audit是否是使能状态
配置文件
/etc/audit/auditd.conf/etc/audit/rules.d/audit.rules/etc/audit/audit.rules # 根据/etc/audit/rules.d/audit.rules自动生成
配置开机启动
systemctl enable auditd 配置规则 man auditctl
规则类型可分为
控制规则控制audit系统的规则
文件系统规则也可以认为是文件监控可以监控一个特定文件或者一个路径。
系统调用规则可以记录特定程序的系统调用。
1. 控制规则
-b 设置在内核中audit缓冲空间的最大值。
-f 这个选项来决定内核如何处理critical erros0silent 1printk 2panic.默认值为1。
-e 设置使能标志设置为0为关闭了audit设置为1则开启audit当设置为2时表示锁定一般在设置完其他规则后最后设置防止其他人修改规则任何修改规则的行为都会被拒绝并且记录审计日志只有当重启系统后这个使能标志才可以被修改。 2. 文件系统规则
auditctl -w path -p permissions -k key_name
-w : 目录或者文件路径-p 描述文件系统监视将触发的权限访问类型r读取w写入x执行a属性更改。-k: 设置审核规则的筛选关键字 3. 系统调用规则
auditctl -a [list,action|action,list] -S [Syscall name or number|all] -F fieldvalue -k key_name
-a: action和list 明确一个事件被记录。action可以为always或者neverlist明确出对应的匹配过滤list可以为task,exit,user,exclude,filesystem。-S: system_call 明确出系统调用的名字几个系统调用可以写在一个规则里如-S xxx -S xxx。系统调用的名字可以在/usr/include/asm/unistd_64.h文件中找到。-F: fieldvalue 作为附加选项修改规则以匹配特定架构、GroupIDProcessID等的事件。具体有哪些字段可以参考man linux https://linux.die.net/man/8/auditctl usage: auditctl [options] -a l,a Append rule to end of list with action -A l,a Add rule at beginning of list with action -b backlog Set max number of outstanding audit buffers allowed Default64 -c Continue through errors in rules -C ff Compare collected fields if available: Field name, operator(,!), field name -d l,a Delete rule from list with action ltask,exit,user,exclude anever,always -D Delete all rules and watches -e [0..2] Set enabled flag -f [0..2] Set failure flag 0silent 1printk 2panic -F fv Build rule: field name, operator(,!,,,, ,,) value -h Help -i Ignore errors when reading rules from file -k key Set filter key on audit rule -l List rules -m text Send a user-space message -p [r|w|x|a] Set permissions filter on watch rread, wwrite, xexecute, aattribute -q mount,subtree make subtree part of mount points dir watches -r rate Set limit in messages/sec (0none) -R file read rules from file -s Report status -S syscall Build rule: syscall name or number -t Trim directory watches -v Version -w path Insert watch at path -W path Remove watch at path --loginuid-immutable Make loginuids unchangeable once set --reset-lost Reset the lost record counter 配置实例
记录系统的日期和时间的修改 vim /etc/audit/rules.d/audit.rules
-a always,exit -F archb64 -S adjtimex -S settimeofday -k time-change
-a always,exit -F archb32 -S adjtimex -S settimeofday -S stime -k timechange
-a always,exit -F archb64 -S clock_settime -k time-change
-a always,exit -F archb32 -S clock_settime -k time-change
-w /etc/localtime -p wa -k time-change 记录用户和组的修改的事件
-w /etc/group -p wa -k identity
-w /etc/passwd -p wa -k identity
-w /etc/gshadow -p wa -k identity
-w /etc/shadow -p wa -k identity
-w /etc/security/opasswd -p wa -k identity 记录网络环境修改时间
-a always,exit -F archb32 -S sethostname -S setdomainname -k system-locale
-w /etc/issue -p wa -k system-locale
-w /etc/issue.net -p wa -k system-locale
-w /etc/hosts -p wa -k system-locale
-w /etc/sysconfig/network -p wa -k system-locale
-w /etc/sysconfig/network-scripts/ -p wa -k system-locale 记录登录和登出事件
-w /var/log/lastlog -p wa -k logins
-w /var/run/faillock/ -p wa -k logins 记录会话启动事件
-w /var/run/utmp -p wa -k session
-w /var/log/wtmp -p wa -k logins
-w /var/log/btmp -p wa -k logins
文件/var/run/utmp跟踪当前登录的所有用户。所有审计记录都将用标识符“session”标记 可以用who命令读取
/var/log/wtmp文件跟踪登录、注销、关机和重新启动事件。
文件/var/log/btmp跟踪失败的登录尝试可以通过输入命令 ‘/usr/bin/last-f /var/log/btmp’ 读取。所有审核记录都将被标记为标识符“logins” 监视对文件权限、属性、所有权和组的更改
-a always,exit -F archb64 -S chmod -S fchmod -S fchmodat -F auid1000 -F auid!4294967295 -k perm_mod
-a always,exit -F archb32 -S chmod -S fchmod -S fchmodat -F auid1000 -F auid!4294967295 -k perm_mod
-a always,exit -F archb64 -S chown -S fchown -S fchownat -S lchown -F auid1000 -F auid!4294967295 -k perm_mod
-a always,exit -F archb32 -S chown -S fchown -S fchownat -S lchown -F auid1000 -F auid!4294967295 -k perm_mod
-a always,exit -F archb64 -S setxattr -S lsetxattr -S fsetxattr -S removexattr -S lremovexattr -S fremovexattr -F auid1000 -F auid!4294967295 -k perm_mod
-a always,exit -F archb32 -S setxattr -S lsetxattr -S fsetxattr -S removexattr -S lremovexattr -S fremovexattr -F auid1000 -F auid!4294967295 -k perm_mod
在所有情况下审核记录将只为非系统用户idauid1000并将忽略守护进程事件auid4294967295。
所有审计记录用标识符“perm_mod”标记 记录未授权文件访问尝试
-a always,exit -F archb64 -S creat -S open -S openat -S truncate -S ftruncate -F exit-EACCES -F auid1000 -F auid!4294967295 -k access
-a always,exit -F archb32 -S creat -S open -S openat -S truncate -S ftruncate -F exit-EACCES -F auid1000 -F auid!4294967295 -k access
-a always,exit -F archb64 -S creat -S open -S openat -S truncate -S ftruncate -F exit-EPERM -F auid1000 -F auid!4294967295 -k access
-a always,exit -F archb32 -S creat -S open -S openat -S truncate -S ftruncate -F exit-EPERM -F auid1000 -F auid!4294967295 -k access 确保收集使用特权命令
监视特权程序那些在执行时设置了setuid和/或setgid位的程序以确定没有权限的用户是否正在运行这些命令。
通过下面命令 find / -xdev \( -perm -4000 -o -perm -2000 \) -type f | awk
{print \
-a always,exit -F path $1 -F permx -F auid1000 -F auid!4294967295 \
-k privileged }
得到记录
-a always,exit -F path/usr/bin/chfn -F permx -F auid1000 -F auid!4294967295 -k privileged
-a always,exit -F path/usr/bin/chsh -F permx -F auid1000 -F auid!4294967295 -k privileged
-a always,exit -F path/usr/bin/chage -F permx -F auid1000 -F auid!4294967295 -k privileged
-a always,exit -F path/usr/bin/gpasswd -F permx -F auid1000 -F auid!4294967295 -k privileged
-a always,exit -F path/usr/bin/newgrp -F permx -F auid1000 -F auid!4294967295 -k privileged
-a always,exit -F path/usr/bin/mount -F permx -F auid1000 -F auid!4294967295 -k privileged
-a always,exit -F path/usr/bin/su -F permx -F auid1000 -F auid!4294967295 -k privileged
-a always,exit -F path/usr/bin/umount -F permx -F auid1000 -F auid!4294967295 -k privileged
-a always,exit -F path/usr/bin/sudo -F permx -F auid1000 -F auid!4294967295 -k privileged
-a always,exit -F path/usr/bin/write -F permx -F auid1000 -F auid!4294967295 -k privileged
-a always,exit -F path/usr/bin/crontab -F permx -F auid1000 -F auid!4294967295 -k privileged
-a always,exit -F path/usr/bin/ssh-agent -F permx -F auid1000 -F auid!4294967295 -k privileged
-a always,exit -F path/usr/bin/pkexec -F permx -F auid1000 -F auid!4294967295 -k privileged
-a always,exit -F path/usr/bin/passwd -F permx -F auid1000 -F auid!4294967295 -k privileged
-a always,exit -F path/usr/sbin/unix_chkpwd -F permx -F auid1000 -F auid!4294967295 -k privileged
-a always,exit -F path/usr/sbin/pam_timestamp_check -F permx -F auid1000 -F auid!4294967295 -k privileged
-a always,exit -F path/usr/sbin/netreport -F permx -F auid1000 -F auid!4294967295 -k privileged
-a always,exit -F path/usr/sbin/usernetctl -F permx -F auid1000 -F auid!4294967295 -k privileged
-a always,exit -F path/usr/sbin/postdrop -F permx -F auid1000 -F auid!4294967295 -k privileged
-a always,exit -F path/usr/sbin/postqueue -F permx -F auid1000 -F auid!4294967295 -k privileged
-a always,exit -F path/usr/lib/polkit-1/polkit-agent-helper-1 -F permx -F auid1000 -F auid!4294967295 -k privileged
-a always,exit -F path/usr/libexec/utempter/utempter -F permx -F auid1000 -F auid!4294967295 -k privileged
-a always,exit -F path/usr/libexec/dbus-1/dbus-daemon-launch-helper -F permx -F auid1000 -F auid!4294967295 -k privileged
-a always,exit -F path/usr/libexec/openssh/ssh-keysign -F permx -F auid1000 -F auid!4294967295 -k privileged 收集成功挂载磁盘事件
-a always,exit -F archb64 -S mount -F auid1000 -F auid!4294967295 -k mounts
-a always,exit -F archb32 -S mount -F auid1000 -F auid!4294967295 -k mount 确保收集用户的文件删除事件
-a always,exit -F archb64 -S unlink -S unlinkat -S rename -S renameat -F auid1000 -F auid!4294967295 -k delete
-a always,exit -F archb32 -S unlink -S unlinkat -S rename -S renameat -F auid1000 -F auid!4294967295 -k delete 确保收集对系统管理范围sudoers的更改
-w /etc/sudoers -p wa -k scope
-w /etc/sudoers.d/ -p wa -k scope 监视sudo日志文件
如果系统已正确配置为禁用su命令并强制所有管理员必须先登录然后使用sudo执行特权命令
然后所有管理员命令将被记录到/var/log/sudo.log文件.
每当执行命令时审核事件将被触发为/var/log/sudo.log文件将打开文件进行写入并执行管理命令将写入日志。
-w /var/log/sudo.log -p wa -k actions 确保收集内核模块加载和卸载
-w /sbin/insmod -p x -k modules
-w /sbin/rmmod -p x -k modules
-w /sbin/modprobe -p x -k modules
-a always,exit -F archb64 -S init_module -S delete_module -k modules 确保审核配置是不可变的
审核规则不能使用auditctl修改。设置标志“-e2“强制将审核置于不可变模式。进行审核更改只能对系统重新启动。
-e 2 5、日志轮转logrotate
/etc/logrotate.conf (决定每个日志文件如何轮转)
/etc/logrotate.d/* (子配置文件 自定义 方便管理) /etc/logrotate.conf # 通用配置
weekly # 按周轮转
rotate 4 # 保留4份日志文件
create # 轮转后创建新文件
dateext # 使用日期作为后缀
#compress # 是否压缩
include /etc/logrotate.d # 包含该目录下的子配置文件 启动轮转时 也去该目录读一下配置文件 # 专有配置
/var/log/wtmp { # 对某日志文件设置轮转的方法 monthly # 每月一次 create 0664 root utmp # 轮转后创建新文件并设置权限 minsize 1M # 最小达到1M才轮转 monthly and minsize rotate 1 # 保留一份
}
/var/log/btmp { missingok # 丢失不提示 monthly create 0600 root utmp rotate 1
} 日志轮转的命令
/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf
20、文件权限管理的核查
一般等保的文件权限管理要求特别是针对审计上的要求
/etc/passwd 644
/etc/shadow 000
/etc/log/* 600、644且基本上都属于root:root
/etc/log/audit 600 rootroot 1、关于S位的设定
一. 前提
本篇主要讲解SUID, SGID, Sticky三个权限的基本原理和应用. 为什么要使用特殊权限?
比如系统中假如有超过四类人然而每一类人都需要一种独特权限.只有三种独特权限的基础权限系统就会明显不够用.
特殊权限可以扩展系统基础权限的功能,使得linux权限更加强大灵活. 在理解特殊权限之前,需要先具备几个关于安全上下文的认知: 前提进程有属主和属组文件有属主和属组
(1) 任何一个可执行程序文件能不能启动为进程取决于发起者对程序文件是否拥有执行权限
(2) 启动为进程之后其进程的属主为发起者进程的属组为发起者所属的组
(3) 进程访问文件时的权限取决于进程的发起者
(a) 进程的发起者同文件的属主则应用文件属主权限
(b) 进程的发起者属于文件的属组则应用文件属组权限
(c) 应用文件“其它”权限
二. SUID
权限设定方法
字母表示法:
chmod us FILE...
chmod u-s FILE... 数字表示法:
chmod 4755 FILE 添加SUID权限到二进制程序文件(添加到DIR无意义) 在普通三位数字权限位之前,用4代表添加的SUID位 chmod 0xxx .... 可以删除文件的SUID(无法删除目录的SUID)
文件权限表示:
# ll f1
-rwsr-xr-x. 1 root root 0 Nov 17 20:18 f1
文件属主的x权限,用s代替.表示被设置了SUID
如果属主位没有x权限,会显示为大写S,表示有故障(权限无效)
SUID相关说明:
启动为进程之后其进程的属主为原程序文件的属主
只能作用在二进制程序上,不能作用在脚本上,且设置在目录上无意义 ;
执行suid权限的程序时,此用户将继承此程序的所有者权限;
SUID工作原理 环境前提:
linux中有一个二进制程序cat,属主属组均为root
linux中有一个系统文件/etc/shadow,属主属组均为root
我们创建一个普通用户叫user1
user1具有对cat的执行权限可以拷贝道home目录下但还是rootroot
user1 不具有对/etc/shadow的任何权限 默认情况下
user1执行cat,系统创建一个cat进程,进程的属主属组取程序发起者,也就是user1:user1
cat进程访问/etc/shadow,由于进程属主属组是user1:user1,与/etc/shadow的属组属主都不匹配,所以被拒绝访问. 给cat设置SUID之后
user1执行cat.系统创建一个cat进程,进程的属主取cat的属主,属组取程序发起者,就是root:user1
cat进程访问/etc/shadow,由于进程属主是root,与/etc/shadow的属主匹配,所以被允许访问.
举例说明:
passwd命令是linux系统中用来修改密码的命令.系统中所有用户都可以使用.
而passwd命令改密码的行为是通过修改/etc/shadow文件来实现. 看一下/etc/shadow的文件权限:
# ll /etc/shadow
----------. 1 root root 1771 Nov 16 17:06 /etc/shadow 可见/etc/shadow对普通用户没有任何权限.
所以普通用户默认无法使用文本编辑器打开或者编辑这个文件. 那为什么通过passwd这个命令就可以编辑呢? 用ls命令查看passwd命令的源文件信息:
# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 30768 2月 22 2012 /usr/bin/passwd 我们发现passwd这个程序的属主位的执行位不是x而是s,说明passwd被设置了特殊权限SUID. 于是普通用户运行passwd命令,系统创建的passwd进程的属主由默认为程序发起者变为了passwd的属主
而passwd的属主是root,所以普通用户其实是在用root的权限修改/etc/shadow文件.最后passwd命令执行结束,passwd进程被关闭. 做个实验:
给命令vim添加SUID,可以让普通用户自己把自己变为超级用户. 看一下vim的原权限
#ll /usr/bin/vim
-rwxr-xr-x. 1 root root 2289640 Aug 2 08:45 /usr/bin/vim 给vim加个SUID
# chmod us /usr/bin/vim 权限变为
-rwsr-xr-x. 1 root root 2289640 Aug 2 08:45 /usr/bin/vim 现在用普通用户登录
# su quintin 尝试使用vim编辑系统账户文件/etc/passwd
$ vim /etc/passwd 找到自己的用户名一行 修改第三列自己的uid为0
root的uid不用改. 然后保存,提示只读文件,使用w!强制保存,成功! 我们知道普通用户quintin对vim是有执行权限的,而对/etc/passwd则没有编辑权限. 通常情况下quintin启动vim后,系统会创建一个以当前用户quintin为属主属组的vim进程,
此时vim进程的属主属组为quintin:quintin,由于无论是属主还是属组都不具有对/etc/passwd的编辑权限,
所以这个vim进程无权编辑/etc/passwd. 而给/usr/bin/vim设置了SUID之后,quintin或任何用户启动vim程序时,
系统创建的vim进程的属主则是取了/usr/bin/vim这个程序文件自身的属主root,
所以此时vim进程的属主属组为root:quintin. 系统检查发现正好匹配了/etc/passwd的属主,于是放行vim进程. 其他文本编辑器同理. 退出vim并重新登陆quintin帐户 这时发现命令提示符已完全变为root,而且系统认为我就是root 因为linux只通过uid判断超级管理员,而quintin帐户把自己的uid变成了超级管理员一样的0,
所以重新登陆之后,quintin具有了root的身份. 测试:
找一个属主属组都为root且other位无w的文件
# ll /app/f11
-rw-r--r--. 1 root root 0 Nov 17 20:18 f11 改个名字
# mv f11 f1 成功. 三. SGID
权限设定方法
字母表示法
chmod gs DIR/FILE...
chmod g-s DIR/FILE... 数字表示法 :
chmod 2755 DIR/FILE 添加SGID到目录或文件
在普通数字权限位前,用2代表添加SGID位
chmod 0755 DIR/FILE 删除文件的SGID,(目录不受影响)
chmod 755 DIR/FILE 同上
文件权限表示:
# ll /app/f1
-rwxr-sr-x. 1 root root 0 Nov 17 20:18 /app/f1
文件属组的x权限,用s代替.表示被设置了SGID
如果属组位没有x权限,会显示为大写S,表示有故障(权限无效) SGID相关说明:
作用在二进制程序上时:
执行sgid权限的程序时,此用户将继承此程序的所属组权限
作用于目录上时:
此文件夹下所有用户新建文件都自动继承此目录的用户组.
SGID实例:
作用在二进制程序上时,原理同SUID,只是由user位变为group位.
作用于目录上时演示: 普通帐户quintin在/tmp中创建一个目录叫quintindir,添加SGID.权限777 $ chmod 2777 quintindir/
$ ll -d quintindir/
drwxrwsrwx. 2 quintin quintin 6 Nov 18 14:42 quintindir/ 切换到普通用户user1,在quintindir目录中创建一个文件和一个目录
$ touch user1file
$ mkdir user1dir
$ ll
-rw-rw-r--. 1 user1 quintin 0 Nov 18 14:47 user1file
drwxrwsr-x. 2 user1 quintin 6 Nov 18 14:47 user1dir 结果显示,user1在quintindir目录下创建的文件和目录都自动继承了quintindir的属组
而且新目录的权限也继承了SGID.
所以设定了SGID的目录中的所有新建文件和目录都会自动属于quintin组. 四. Sticky粘滞位
权限设定方法
字母表示法:
chmod ot DIR...
chmod o-t DIR...
chmod t DIR...
数字表示法:
chmod 1755 DIR
在普通数字权限位前,用1代表添加Sticky位
文件权限表示: # ll -d tmp drwxrwxrwt. 2 root root 19 Nov 17 20:02 tmp 文件other位的x权限,用t代替.表示被设置了Sticky 如果other位没有x权限,会显示为大写T,表示有故障(权限无效)
Sticky相关说明:
对于一个多人可写的目录如果设置了sticky则每个用户仅能删除和改名自己的文件或目录
只能作用在目录上.普通文件设置无意义,且会被linux内核忽略
用户在设置Sticky权限的目录下新建的目录不会自动继承Sticky权限
Sticky实例:
目的:
我希望在系统中创建一个很多用户可以共同使用的目录,但是要求用户之间不能互相删除改变对方的文件.
实现:
root用户先创建一个777权限目录/app/tmp
普通用户quintin和wang分别在其中创建几个文件和目录 这时候有个问题,就是目录中的任何用户都可以随意删除其他人的文件.
所以root要给/tmp这个文件夹设定一个Sticky位.
# chmod 1777 tmp
# ll -d tmp
drwxrwxrwt. 5 root root 97 Nov 20 00:49 tmp 设定完毕可见目录tmp的other权限中的x位已经显示为t.说明已设定成功.
测试
切换到quintin用户,进入/app/tmp目录
尝试删除或改名用户wang的文件或目录 改名文件
[quintincentos7 /app/tmp]$ mv wangf1 aaa
mv: cannot move ‘wangf1’ to ‘aaa’: Operation not permitted 改名目录
[quintincentos7 /app/tmp]$ mv wangd1 bbb
mv: cannot move ‘wangd1’ to ‘bbb’: Operation not permitted 移动文件
[quintincentos7 /app/tmp]$ mv wangf1 qdir1/
mv: cannot move ‘wangf1’ to ‘qdir1/wangf1’: Operation not permitted 删除文件
[quintincentos7 /app/tmp]$ rm -f wangf1
rm: cannot remove ‘wangf1’: Operation not permitted 删除目录
[quintincentos7 /app/tmp]$ rm -f wangf1
rm: cannot remove ‘wangf1’: Operation not permitted 以上所有操作均提示Operation not permitted,表明Sticky权限已发挥作用.
提示:
普通用户在设定了Sticky位的目录下创建的子目录不会继承这个Sticky权限,所以要注意设定好自己目录的权限. 五. 总结:
作用范围及功能:
SUID:作用于文件(二进制程序)
此用户将继承此程序的所有者权限 SGID:作用于文件(二进制程序)和目录
对于文件:
此用户将继承此程序的所属组权限.
对于目录:
此文件夹下所有用户新建文件都自动继承此目录的用户组. Sticky:作用于目录
设定后,目录中的用户只能删除、移动或改名自己的文件或目录 二进制文件 目录 SUID 此用户将继承此程序的所有者权限 无意义 SGID 此用户将继承此程序的所属组权限 此目录下所有用户新建文件都自动继承此目录的用户组 Sticky 无意义 目录中每个用户仅能删除、移动或改名自己的文件或目录 文章转载自: http://www.morning.bpmfz.cn.gov.cn.bpmfz.cn http://www.morning.lbpqk.cn.gov.cn.lbpqk.cn http://www.morning.zbkwj.cn.gov.cn.zbkwj.cn http://www.morning.qxlxs.cn.gov.cn.qxlxs.cn http://www.morning.qdbcd.cn.gov.cn.qdbcd.cn http://www.morning.dtgjt.cn.gov.cn.dtgjt.cn http://www.morning.tsqpd.cn.gov.cn.tsqpd.cn http://www.morning.lxhny.cn.gov.cn.lxhny.cn http://www.morning.yfmwg.cn.gov.cn.yfmwg.cn http://www.morning.xgjhy.cn.gov.cn.xgjhy.cn http://www.morning.plqkz.cn.gov.cn.plqkz.cn http://www.morning.lsgsn.cn.gov.cn.lsgsn.cn http://www.morning.qphcq.cn.gov.cn.qphcq.cn http://www.morning.kfyjh.cn.gov.cn.kfyjh.cn http://www.morning.zdwjg.cn.gov.cn.zdwjg.cn http://www.morning.qyxwy.cn.gov.cn.qyxwy.cn http://www.morning.hqgxz.cn.gov.cn.hqgxz.cn http://www.morning.pfmsh.cn.gov.cn.pfmsh.cn http://www.morning.srrzb.cn.gov.cn.srrzb.cn http://www.morning.lptjt.cn.gov.cn.lptjt.cn http://www.morning.ydrml.cn.gov.cn.ydrml.cn http://www.morning.plqqn.cn.gov.cn.plqqn.cn http://www.morning.wfyzs.cn.gov.cn.wfyzs.cn http://www.morning.jwefry.cn.gov.cn.jwefry.cn http://www.morning.qbtkg.cn.gov.cn.qbtkg.cn http://www.morning.ktbjk.cn.gov.cn.ktbjk.cn http://www.morning.bpmtx.cn.gov.cn.bpmtx.cn http://www.morning.hhxkl.cn.gov.cn.hhxkl.cn http://www.morning.rqqmd.cn.gov.cn.rqqmd.cn http://www.morning.cbvlus.cn.gov.cn.cbvlus.cn http://www.morning.zhnyj.cn.gov.cn.zhnyj.cn http://www.morning.fphbz.cn.gov.cn.fphbz.cn http://www.morning.mrfgy.cn.gov.cn.mrfgy.cn http://www.morning.nypsz.cn.gov.cn.nypsz.cn http://www.morning.rtbx.cn.gov.cn.rtbx.cn http://www.morning.qzdxy.cn.gov.cn.qzdxy.cn http://www.morning.kmrgl.cn.gov.cn.kmrgl.cn http://www.morning.jbtzx.cn.gov.cn.jbtzx.cn http://www.morning.sfrw.cn.gov.cn.sfrw.cn http://www.morning.fgxws.cn.gov.cn.fgxws.cn http://www.morning.zbnts.cn.gov.cn.zbnts.cn http://www.morning.kksjr.cn.gov.cn.kksjr.cn http://www.morning.tpps.cn.gov.cn.tpps.cn http://www.morning.trjp.cn.gov.cn.trjp.cn http://www.morning.wrdlf.cn.gov.cn.wrdlf.cn http://www.morning.bpmnx.cn.gov.cn.bpmnx.cn http://www.morning.dfrenti.com.gov.cn.dfrenti.com http://www.morning.mxptg.cn.gov.cn.mxptg.cn http://www.morning.ktfnj.cn.gov.cn.ktfnj.cn http://www.morning.rjyd.cn.gov.cn.rjyd.cn http://www.morning.qqbjt.cn.gov.cn.qqbjt.cn http://www.morning.jfxth.cn.gov.cn.jfxth.cn http://www.morning.srbfz.cn.gov.cn.srbfz.cn http://www.morning.bchfp.cn.gov.cn.bchfp.cn http://www.morning.cnvlog.cn.gov.cn.cnvlog.cn http://www.morning.ptwrz.cn.gov.cn.ptwrz.cn http://www.morning.npfrj.cn.gov.cn.npfrj.cn http://www.morning.rlqml.cn.gov.cn.rlqml.cn http://www.morning.bqwsz.cn.gov.cn.bqwsz.cn http://www.morning.kghhl.cn.gov.cn.kghhl.cn http://www.morning.xcyhy.cn.gov.cn.xcyhy.cn http://www.morning.fbdkb.cn.gov.cn.fbdkb.cn http://www.morning.krkwp.cn.gov.cn.krkwp.cn http://www.morning.cgbgc.cn.gov.cn.cgbgc.cn http://www.morning.rcfwr.cn.gov.cn.rcfwr.cn http://www.morning.fbccx.cn.gov.cn.fbccx.cn http://www.morning.bxch.cn.gov.cn.bxch.cn http://www.morning.sglcg.cn.gov.cn.sglcg.cn http://www.morning.wrlcy.cn.gov.cn.wrlcy.cn http://www.morning.ftrpvh.cn.gov.cn.ftrpvh.cn http://www.morning.qgjwx.cn.gov.cn.qgjwx.cn http://www.morning.pxmyw.cn.gov.cn.pxmyw.cn http://www.morning.fbxdp.cn.gov.cn.fbxdp.cn http://www.morning.lnfkd.cn.gov.cn.lnfkd.cn http://www.morning.hdrsr.cn.gov.cn.hdrsr.cn http://www.morning.phlrp.cn.gov.cn.phlrp.cn http://www.morning.yrnyz.cn.gov.cn.yrnyz.cn http://www.morning.knryp.cn.gov.cn.knryp.cn http://www.morning.hqllx.cn.gov.cn.hqllx.cn http://www.morning.tnjff.cn.gov.cn.tnjff.cn