column -t 对齐
补充、权限如何让系统安全
文件名存放在文件所在目录的block
※一、权限如何让系统安全
1.单台服务器
1.网站运行的时候使用www(虚拟用户)
2.网站站点目录/app/blog
文件
644 root root
目录
755 root root
3.用户上传的目录 如/uploads
文件
644 www www
目录
755 www www
4.程序代码限制 指定类型(图片或压缩包)
5.上传禁止运行(NFS)
2.、如何让系统安全
1.最小化
安装系统的时候
操作最小化
rm -f 尽量别加r
开启服务
2.保护root
禁止root远程登录系统
修改远程连接(sshd)默认端口号
制作指纹认证md5sum※
※md5sum指纹认证
1.大家拿到的东西是否一致
2.对比文件是否发生变化
[16:48 root@oldboy ~]# find /oldboy/ -type f -name '*.txt'|xargs md5sum
d41d8cd98f00b204e9800998ecf8427e /oldboy/old.txt
d41d8cd98f00b204e9800998ecf8427e /oldboy/old1.txt
d41d8cd98f00b204e9800998ecf8427e /oldboy/lidao/lidao01.txt
d41d8cd98f00b204e9800998ecf8427e /oldboy/lidao/lidao02.txt
d41d8cd98f00b204e9800998ecf8427e /oldboy/lidao/lidao03.txt
d41d8cd98f00b204e9800998ecf8427e /oldboy/lidao/lidao04.txt
d41d8cd98f00b204e9800998ecf8427e /oldboy/lidao/lidao05.txt
d41d8cd98f00b204e9800998ecf8427e /oldboy/lidao01.txt
d41d8cd98f00b204e9800998ecf8427e /oldboy/lidao02.txt
d41d8cd98f00b204e9800998ecf8427e /oldboy/lidao03.txt
d41d8cd98f00b204e9800998ecf8427e /oldboy/lidao04.txt
d41d8cd98f00b204e9800998ecf8427e /oldboy/lidao05.txt
[16:49 root@oldboy ~]# find /oldboy/ -type f -name '*.txt'|xargs md5sum >/tmp/oldboy.md5
[16:49 root@oldboy ~]# md5sum -c /tmp/oldboy.md5
/oldboy/old.txt: OK
/oldboy/old1.txt: OK
/oldboy/lidao/lidao01.txt: OK
/oldboy/lidao/lidao02.txt: OK
/oldboy/lidao/lidao03.txt: OK
/oldboy/lidao/lidao04.txt: OK
/oldboy/lidao/lidao05.txt: OK
/oldboy/lidao01.txt: OK
/oldboy/lidao02.txt: OK
/oldboy/lidao03.txt: OK
/oldboy/lidao04.txt: OK
/oldboy/lidao05.txt: OK
1.找出/oldboy目录下面 以.txt结尾的文件 制作md5 存放在/tmp/oldboy.md5
2.对比 md5sum -c
※二、文件系统权限(属性)
chattr --->修改隐藏属性
chattr -i oldboy.txt
-----i---------- oldboy.txt
参数:
a append 让文件或目录只能追加用途
i immutable 无敌的 不得任意更动文件或目录 只能查看
lsattr 查看文件隐藏属性
lsattr oldboy.txt
----i----------- oldboy.txt
三、Linux特殊权限
suid (setuid) ---->s
某个文件在所有者上有s,suid
拥有suid的命令,任何用户执行的时候都相当于root (文件所有者的权限)
※#chmod u+s /bin/ls或者chmod 4755 /bin/ls来添加特殊权限,除了/tmp/和/passwd是共享的
特殊权限-没有添加s权限
切换用户下使用 ls查看
用chmod u+s给添加 s 权限后变红
去oldboy用户下ls就可以查看目录了
在oldboy下删除 rm -f /root/oldboy.txt 也就可以执行了
在添加特殊权限后,查看是否添加成功suid ll -d 看权限中是否有s
chmod u+s /bin/ls
chmod 4755 /bin/ls ----> stat /bin/passwd
chmod u-s /bin/ls
passwd
粘滞位 sticky
每个人都可以在这个目录下面创建文件或删除 /tmp
每个人只能管理自己的文件
/tmp权限: 1777/tmp/
※四、用户管理
UID: 用户 id 号
用户分类
UID
root
普通用户
虚拟用户(1-999)---->保证各种进程/服务正常运行
1.核心文件和目录
文件
查看以下的文件
[17:43 oldboy@oldboy ~]$ ll /etc/passwd /etc/shadow /etc/group /etc/shadow
-rw-r--r-- 1 root root 689 Apr 24 13:53 /etc/group
-rw-r--r-- 1 root root 1176 Apr 24 13:53 /etc/passwd
---------- 1 root root 851 Apr 24 13:53 /etc/shadow
---------- 1 root root 851 Apr 24 13:53 /etc/shadow
核心文件
/etc/passwd 用户信息 ※※※※
/etc/shadow 存放密码信息
/etc/group 用户组信息
/etc/gshadow 用户组密码信息
※常用的命令解释器:
/bin/bash
※/sbin/nologin #虚拟用户的命令解释器
[18:09 oldboy@oldboy ~]$ cat /etc/shells
/bin/sh \\只是bash的软链接
/bin/bash
/usr/bin/sh
/usr/bin/bash
找出/etc/passwd中的虚拟用户,显示这个用户名的名字和uid
awk -F:'/nologin/{print 3,$NF}'/etc/passwd|column -t
column -t是用来对齐的#
目录
/etc/skel/的作用
解释:
.bash_prifile 和/etc/profile类似(PS1字体颜色 LANG字符集 PATH命令的位置)
.bash_logout
.bashrc /etc/bashrc
我们尝试还原一个故障模拟:
【企业故障案例】:命令行提示符-bash-4.1
1.修改/etc/profile 给PS1加上注释(测试完后记得改回来~)
[root@oldboyedu59 ~]# tail -1 /etc/profile
export PS1="[[\e[34;1m]\u@[\e[0m][\e[32;1m]\H[\e[0m] [\e[31;1m]\w[\e[0m]]$ "
source /etc/profile 让它生效
2.添加的用户useradd alex
3.切换用户
[root@oldboyedu59 ~]# useradd alex
useradd: user 'alex' already exists
[root@oldboyedu59 ~]# su - alex
[alex@oldboyedu59 ~]$
4.检查是否有suid
ls -l /bin/rm (如果有chmod u-s /bin/rm)
5.尝试下删根~
rm -fr /
6.重新登录alex
原因:
当前用户的环境变量的配置文件.bash_profile .bashrc 被删除
恢复办法
2.用户管理命令
操作用户:
①useradd 创建用户
※ -u 指定uid
※ -s 知道用户使用的命令解释器,创建虚拟用户 配合使用
※ -M 创建用户的 不创建家目录 配合使用
-c 指定用户的说明信息
-g 指定用户组
主要组
-G 指定多个用户组
附加组
例:添加用户oldboy888 指定uid为888 不可登录系统 不创建家目录
useradd oldboy888 -u 888 -s/sbin/nologin -M
②※su 和-su的区别
switch user
-
切换用户的时候更新用户的环境变量
-c
只能root用户可以使用,切换到某个用户执行命令,执行命令后自动退出这个用户
③passwd 修改密码
--stdin---->只能root用户使用
echo 123456|passwd --stdin oldboy 从前面获取到密码
从管道获取密码
非交互式设置密码
别人用history可以查看到历史,容易泄露,
所以 用history -c 用来清除历史命令记录
④userdel 删除用户
删除用户 默认不会删除家目录,目的是为了保护一些文件,安全一些。
删除用户替代方法:
在/etc/passwd中给用户签名加上# 井号把它注释掉
-r 删除用户和用户家目录(少用)
⑤usermod 修改用户信息(uid 命令解释器 组)
和useradd基本一样(可以命令干什么的就可以了)
-g 添加到其他组
-G 设置主要组
-u 修改uid
-s 修改命令解释器