linux打怪升级之旅-03

服务的运行时需要用户角色的,可以不用登陆,因此,工作中我们需要运行如mysql数据库,可以创建如下用户:
groupadd mysqld -g 49
useradd mysql -u 49 -s /sbin/nologin -g mysql
######################################################################################
linux系统文件权限体系手把手详解
总结测试结论:linux普通文件的读,写,执行权限说明:
可读r:表示具有读取阅读文件内容的权限;
可写w:表示具有新增,修改文件内容的权限;
(特别提示:删除文件(修改文件名等)的权限是受父目录的权限控制,和文件权限无关)
可执行x:表示具有执行文件的权限(文件本身要能够执行,普通用户同时还需要r的权限,
root用户不用r的权限也能执行,当然文件本身也需要能够执行)
对于文件来讲
r 读取文件内容
w 修改文件内容,删除文件和文件的w无关
x 执行权限。文件本身就要可以执行,需要r配合


对于目录来讲
r 浏览目录里内容的权限,需要x配合
w 创建删除目录内文件的权限,和文件本身无关
x 进入目录的权限
####
Permission denied 权限不足 
 #######################################################################################
setuid小结
1)用户对应的前三位的x位上如果有s就表示,suid。当x位上没有x的时候,suid就是S
2)setuid位是让普通用户可以以root(或其他)用户的角色运行只有root(或其他)账号才能
运行的程序或命令,或程序命令对应本来没有权限操作的文件等。(注意和su及sudo的区别)
suid修改的执行的命令,而不是处理的目标文件。
3)仅对二进制命令或程序有效,不能用在shell等类似脚本文件上(因为shell脚本仅仅是
调用二进制命令程序而已,因此,具体权限还需要看二进制命令本身)。
4)二进制命令或程序需要有可执行权限x。
5)suid权限仅在程序执行过程中有效。
6)执行程序的任意用户可以获得该命令程序执行期间拥有着的权限
7)suid双刃剑,是一个比较危险的功能,对系统安全有一定的威胁。系统suid的无用的功能取消
suid权利(安全优化)
setgid知识小结
与suid不同的是,sgid既可以针对文件也可以针对目录设置!sgid是针对用户组权限修改的。
对于文件,sgid的功能如下:
1)sgid仅对二进制命令程序有效
2)二进制命令或程序需要有可执行权限x。
3)执行程序的任意用户可以获得该命令程序执行期间所属组的权限。
对于目录:sgid的功能如下:
1)用户在此目录下创建的文件和目录,具有和此目录相同的用户组。
setgid位主要用在目录中,当为某个目录设置了setgid位以后,在该目录中新创建的文件具有该目录
的所有者权限,而不是创建该文件的用户的默认所有者。这样,使得在多个用户之间共享一个目录中的
文件变得简单。提示:用八进制2000表示setgid权限位。
 
sudo是基于用户的,这是工作中最常用的。
########################################################################################
setuid和setgid 设置说明:
setuid位的设置用八进制的4000(4),setgid占用的是八进制的2000(2)
同时设置setuid和setgid,就是把setuid和setgid两个八进制的值相加(4000+2000=6000),
然后加上文件或目录的权限位的三位数值(上面的例子是755),然后通过chmod运行就行了。
所以上面的例子中用了6755。
SUID的优先级比SGID高,当一个可执行程序设置了SUID,则SGID会自动编程相应的egid。
针对suid以及sgid,工作中尽量不用,多用sudo管理,如果有可能查找系统无用suid位的命令等,进行撤除
sS都是suid(用户位),sgid(用户组位)的标识,和x重合的时候就显示的是s。
粘滞位sticky Bit(sbit)及设置方法
[root@lk ~]# ll -d /tmp/
drwxrwxrwt. 12 root root 4096 3月  27 09:14 /tmp/
粘滞位的功能现在很少用了,不过对于像/tmp目录这样的,是整个系统临时文件存放地,还是有点意思。
一个目录既使它的所有权限都开放rwxrwxrwx,如果使设置了粘滞位,除非目录的输主和root用户有权限
删除它,除此之外其它用户不能删除这个目录。用途一般是吧一个文件夹的权限都打开,然后来共享文件,
像/tmp目录一样。方便带来的安全隐患,生产环境我们一般不这样使用!

stichy:比SGID的更安全措施,让多个用户都具有写权限的目录,每个与用户只能删自己的文件。
表现在other位!用t表示,如果没有执行权限,那么就是T;如果有执行权限,那么就是t表示。

特殊权限对应的数字:
suid 4000 s
sgid 2000 s
粘滞位 1000 t   chmod o+t test
给test目录同时设置:chmod 7755 test
tmp经典的粘滞位目录,特点:谁都有写权限,因此安全成问题。常常是木马第一手跳板地点。

文件特殊属性更改chattr及lsattr
chattr +-i a 
lsattr
getfacl
setfacl
########################################################################################
程序概念:
程序是为解决一个信息处理任务而预先编制的工作执行方案,是由一串CPU能够执行的基本指令组成的序列,每一条指令规定了
计算机应进行什么操作(如加,减,乘,判断等)及操作需要的有关数据。例如,从存储器读一个数送到运算器就是一条指令,
从存储读出一个数并和运算器中原有的数相加也是一条指令。
简答的说:我们使用的命令就是程序,qq程序,听歌MP3, MP4软件,linux系统也是程序。
基本特征:一推代码,一个文件,一个命令。程序静态的,放在电脑还没有被运行
程序:磁盘里。
####################################################################################

进程概念:
简单地说,把系统中的程序运行起来就是进程。进程放在内存中。
所谓进程(Processes)就是指现在系统正在执行的程序,每当输入一个命令时,Shell也会同时启动一个进程
每个进程启动时,系统会指定一个唯一的数字给每个进程,这个数字称为进程(ID)或者PID进程号。
每个进程都可能以两种方式存在:一个前台和一个后台
一般的系统的服务都是以后台方式存在,且都会常驻在系统中,直到关机时才结束,例如远程连接服务SSHD,我们常w


########################################################################################
linux的定时任务服务crond(crontab)服务
1.crond是什么?
Crond是Linux系统中用来定期执行命令或者指定程序任务的一种服务或者软件。
一般在我们安装完C5/C6系统的时候,crond就会默认存在了
我们优化开机自启动服务的时候,第一个就是crond
Crond服务默认情况(每分钟),会检查系统中是否有需要执行的定时任务,如果有,
就会根据事先定义好的规则来执行这个定时任务。
秒级任务:
1)crond自身无能为力可以通过方法实现
2)自己写守护进程shell循环。
[root@lk ~]# vim /server/scripts/miao.sh 
#!/bin/bash
while true
do
 echo oldboy >>/tmp/a.log
 sleep 1
done
3)Quartz也可以实现秒级任务

为什么需要定时任务?
服务器:7*24小时开机提供服务是网站的基本特征。
有重要数据:1天备一次,5份以上。
服务器上的数据一般最低1天备一次,每分钟(实时备份)再增量备份
自学windows的定时任务功能用法
linux定时任务分类:
1.系统自身的定期执行的任务
[root@lk ~]# vim /etc/logrotate.d/syslog 
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{
    sharedscripts
    postrotate
        /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null |
| true
    endscript
}
~    
2.用户执行的定时任务
[root@lk ~]# crontab -l
我们主要学习的是用户的定时任务
1)at 适合执行一次就结束的调度任务。突发性的任务。了解就可以
[root@lk ~]# chkconfig --list atd
2)anacron适合非7*24小时开机的服务器准备的。开机执行的,
检测停机期间没有执行的任务,在开机后一次性执行一遍
3)crond
crond依赖的服务,crond
提示:我们说的crond是一个定时任务守护进程,而crontab是用户用来设置定时任务
规则的命令
定时任务总结
1.为定时任务规则加必要的注释
2.执行shell脚本任务前加/bin/sh
3.定时任务命令或脚本的结尾加>/dev/null 2>&1
4.定时任务命令或程序最好写到脚本里执行
5.在指定用户下执行相关定时任务
6.生产任务程序不要随意打印1输出信息 tar zcf echo 123 >a.log
7.定时任务执行的脚本要规范路径
8.配置定时任务规范操作过程

工作中调试定时任务的方法
1.增加执行任务频率调试任务(某些任务不能用于生产环境)
2.调整系统时间调试任务(不能用于生产环境)
3.通过脚本日志输出调试定时任务
4.注意一些任务命令带来的问题(*/1 * * * * echo "==" >> /tmp/oldboy.log > /dev/null 2>&1)
5.注意环境变量导致的定时任务故障
6.通过crond定时任务服务日志调试定时任务
7.其他稀奇古怪的问题调试的方法
再总结
1.系统环境变量问题
2.定时任务要用绝对路径
3.脚本权限问题/bin/sh
4.时间变量问题用反斜线\%
5.>/dev/null 2>&1问题<1> /dev/null 2>/dev/null)
6.定时任务规则之前加注释
7.使用脚本程序替代命令行定时任务
8.避免不必要的程序及命令输出。
########################################################################################
linux用户
[root@lk ~]# ls -al /etc/skel/
总用量 36
drwxr-xr-x.   4 root root  4096 3月  26 21:35 .
drwxr-xr-x. 116 root root 12288 3月  27 08:53 ..
-rw-r--r--.   1 root root    18 7月  24 2015 .bash_logout
-rw-r--r--.   1 root root   176 7月  24 2015 .bash_profile
-rw-r--r--.   1 root root   124 7月  24 2015 .bashrc
drwxr-xr-x.   2 root root  4096 11月 12 2010 .gnome2
drwxr-xr-x.   4 root root  4096 3月  26 21:31 .mozilla
/etc/skel目录是用来存放新用户配置文件的目录,当我们添加新用户时,这个目录下的
所有文件会自动被复制到新添加的用户的家目录下;默认情况下,/etc/skel目录下的所有
文件都是隐藏文件(以“.”点开头的文件);通过修改,添加,删除/etc/skel目录下的文件,
我们可为新创建的用户提供统一,标准的,初始化用户环境。

[root@lk ~]# ll /etc/login.defs 
-rw-r--r--. 1 root root 1816 3月  27 2015 /etc/login.defs
用户密码设置有关
[root@lk ~]# 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 -u -g -M -s G -D(修改/etc/login.defs)   -e
groupadd  g
userdel -r

C5测试结果:账号有效期为2012-01-24,但是时间系统时间为2012-01-25 00:00:00时依然可以登陆
到了2012-01-26 00:00:00时才无法登陆
C6.5:到时间就无法登陆了。但是可以切换。
[root@lk ~]# chage -l linkun
Last password change : Mar 26, 2018
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

多组合例子:
添加用户oldboy6,并设置其用户注释信息为HandsomeBoy,UID指定为806,
归属为用户组root,oldboy,sa成员,其shell类型为/bin/sh,设置家目录为/oldboy6。实操结果为:
[root@lk ~]# useradd -c HandsomeBoy -u 806 -G root,oldboy,sa -s /bin/sh -d /oldboy6 oldboy6
useradd: group 'oldboy' does not exist
useradd: group 'sa' does not exist
[root@lk ~]# groupadd oldboy
[root@lk ~]# groupadd sa
[root@lk ~]# useradd -c HandsomeBoy -u 806 -G root,oldboy,sa -s /bin/sh -d /oldboy6 oldboy6
[root@lk ~]# id oldboy6
uid=806(oldboy6) gid=806(oldboy6) 组=806(oldboy6),0(root),505(oldboy),506(sa
要求oldboy用户7天内不能更改密码,60天以后必须修改密码,过期前10天通知
oldboy用户,过期后30天后禁止用户登陆。
1.[root@lk ~]# chage -m 7 -M 60 -W 10 -I 30 oldboy


2.[root@lk ~]# passwd -n 7 -x 60 -w 10 -i 30 oldboy6
调整用户密码老化数据oldboy6。
passwd: 操作成功
[root@lk ~]# chage -l oldboy6
Last password change : Mar 27, 2018
Password expires : May 26, 2018
Password inactive : Jun 25, 2018
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


总结:在众多命令种,usermod是一个不经常使用,但是是一个功能强大的命令,
我们应该掌握相关命令常见用法。
用户查询相关命令id finger users w who last lastlog groups
如何让系统再每一次开机时也要自动以普通用户启动指定的服务脚本呢?
########################################################################################
sudo命令的原理
/var/db/sudo文件了解
[root@lk ~]# visudo -c
/etc/sudoers:解析正确
/visudo
[root@lk ~]# visudo
root    ALL=(ALL)       ALL
当授权配置好后,可以切换到被授权的用户下,通过sudo -l来查看哪些超级权限命令是
可以执行或禁止的。/etc/sudoers配置文件中的每一行就是一个规则,前面带有#号的为注释说明的内容
当规则超过一行的长度时,可以用“\”号来续行。
/etc/sudoers的规则大致可分为两类:一类是别名定义,另一类是授权规则;别名定义并不是必须的,
只是再授权规则多的时候更方面授权,但授权规则是必须的。
设置别名  理解
设置主机别名
## Host Aliases
## Groups of machines. You may prefer to use hostnames (perhaps using
## wildcards for entire domains) or IP addresses instead.
# Host_Alias     FILESERVERS = fs1, fs2
# Host_Alias     MAILSERVERS = smtp, smtp2
     
89 ## which machines (the sudoers file can be shared between multiple
90 ## systems).
91 ## Syntax:
92 ##
93 ##      user    MACHINE=COMMANDS
设置用户别名
16 ## User Aliases
17 ## These aren't often necessary, as you can use regular groups
18 ## (ie, from files, LDAP, NIS, etc) in this file - just use %groupname
19 ## rather than USERALIAS
20 # User_Alias ADMINS = jsmith, mikem
93 ##      user    MACHINE=COMMANDS
94 ##
95 ## The COMMANDS section may have other options added to it.
96 ##
97 ## Allow root to run any commands anywhere
98 root    ALL=(ALL)       ALL

什么情况下使用上述别名?
工作中一般有多个系统用户,需要分类,分层次管理用户的时候。
企业生产环境用户权限集中管理项目方案案例
sudo日志管理方案  企业用 rsync+inotify

########################################################################################


linux打怪升级之旅-04













































猜你喜欢

转载自blog.csdn.net/zisefeizhu/article/details/80663944