一、显示/oldboy/test.sh文件详细过程(inode block)
注:权限拒接错误,可能与上级目录有关
二、权限如何让系统安全
2.1 单台服务器
1>网站运行的时候使用www(虚拟用户)
2>网站站点目录/app/blog
文件 644 root root
目录 755 root root
3>对于用户上传目录/uploads
文件 644 www www
目录 755 www www
4>通过程序控制只能上传图片或压缩包
5>取消上传上来的文件的执行权限(讲解到nfs的时候)
2.2 如何让系统安全
最小化
安装系统的时候
操作(rm -f)
开启服务(把正在使用的开开,其余关闭)
保护root
禁止root远程登录系统
修改远程连接(sshd)默认端口号
制作指纹认证
命令:md5sum-
参数:-c:相当于--check(检查)
md5作用:
验证大家拿到的东西是否一致
对比文件是否发生变化
权限管理(同上2.1)
md5sum练习:
1.找出/oldboy目录下面 以.txt结尾的文件 制作md5 存放在/tmp/oldboy.md5
2.对比 md5sum -c
[root@oldboyedu ~]# md5sum $(find /oldboy -type f -name '*.txt')>/tmp/oldboy.md5
[root@oldboyedu ~]# md5sum /tmp/oldboy.md5
cd271266d3b215739c027f34582cfc24 /tmp/oldboy.md5
[root@oldboyedu ~]# md5sum -c /tmp/oldboy.md5
/oldboy/oldboy01.txt: OK
/oldboy/oldboy02.txt: OK
/oldboy/oldboy03.txt: OK
/oldboy/oldboy04.txt: OK
三、文件系统权限(隐藏属性)
chattr:修改隐藏属性
a:append---只能追加(不能删除、不能修改,保护重要的配置文件)
如:chattr +/-a oldboy.txt
i:immutable---无敌的(只能查看内容,无法修改、无法删除,保护重要的命令)
如:chattr +/-i oldboy.txt
应用:
a 核心配置文件
i 系统命令
lsattr:查看隐藏属性
练习:
[root@oldboyedu ~]# lsattr oldboy.txt
---------------- oldboy.txt
[root@oldboyedu ~]# chattr +a oldboy.txt
[root@oldboyedu ~]# lsattr oldboy.txt
-----a---------- oldboy.txt
[root@oldboyedu ~]# \rm -f oldboy.txt
rm: cannot remove ‘oldboy.txt’: Operation not permitted
[root@oldboyedu ~]# >oldboy.txt
-bash: /tmp/oldboy.md5: Operation not permitted
[root@oldboyedu ~]# echo oldboy>> oldboy.txt
[root@oldboyedu ~]#
[root@oldboyedu ~]# chattr -a oldboy.txt
[root@oldboyedu ~]# lsattr oldboy.txt
四、Linux特殊权限
1>suid setuid
某个文件在所有者的位置上有s,suid
拥有suid的命令,任何用户执行的时候相当于root(文件的所有者)
有该权限的文件:/usr/bin/passwd
如何设置:
chmod u+s /bin/ls
chmod 4755 /bin/ls
ls命令没有s权限时,普通用户无法查看/root
[oldboy@oldboyedu ~]$ ll /root
ls: cannot open directory /root: Permission denied
在root账号下,给ls命令添加上s权限
[root@oldboyedu ~]# chmod u+s /bin/ls
ls命令添加上s权限,普通用户也可以查看/root
[oldboy@oldboyedu ~]$ ll /root
total 60276
-rw-r--r-- 1 root root 58112885 Mar 9 2018 access.log
-rw-r--r-- 1 root root 3580282 Apr 22 11:40 access.zip
2>粘滞位 sticky
每个人都可以在这个目录下面创建文件和删除
我们希望每个人只能管理自己的文件
有该权限的目录:/tmp/
对应的权限是 1777
五、用户管理
5.1 UID
user id身份证号码
5.2 用户分类
root用户
普通用户
虚拟用户
5.3 核心文件和目录
1>核心文件
/etc/passwd:存放的是用户的信息
/etc/shadow:存放的是密码的信息
/etc/group:存放用户组的信息
/etc/gshadow;用户组密码信息
找出/etc/passwd中的虚拟用户,显示这个用户的名字和uid
[root@oldboyedu ~]# awk -F: '/nologin$/{print $1,$3,$NF}' /etc/passwd |column -t
bin 1 /sbin/nologin
daemon 2 /sbin/nologin
adm 3 /sbin/nologin
lp 4 /sbin/nologin
mail 8 /sbin/nologin
operator 11 /sbin/nologin
column -t:显示的内容对齐
2>核心目录
/etc/skel
新用户家目录的样子
添加新用户过程
useradd alex
系统创建家目录
权限所有者修改
把/etc/skel下面的所有内容,复制到家目录下
.bash_profile /etc/profile PS1 LANG PATH
.bashrc /etc/bashrc
.bash_logout
常用的命令解释器
/bin/bash
/sbin/nologin #虚拟用户的命令解释器
/bin/dash #ubuntu
/bin/csh /bin/tcsh #unix
5.4 故障案例:命令行提示符-bash-4.1$或-bash-4.2$※
故障模拟:
1>root用户下修改/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\]]\\$ "
2>添加的用户
useradd alex
3>切换用户
[root@oldboyedu59 ~]# su - alex
[alex@oldboyedu59 ~]$
4>检查是否有suid
ls -l /bin/rm
5>在Alex用户下删根
rm -fr /*
6>重新登录alex ,出现故障
[root@oldboyedu59 ~]# su - alex
Last login: Wed Apr 24 11:42:51 CST 2019 on pts/0
-bash-4.2$
-bash-4.2$
-bash-4.2$
-bash-4.2$
原因:
当前用户的环境变量的配置文件.bash_profile .bashrc 被删除
如何解决?
方法1:从别人家复制 oldboy (提示权限拒绝)
-bash-4.2$ whoami
alex
-bash-4.2$ cp /home/oldboy/.bash* ~
cp: cannot stat ‘/home/oldboy/.bash*’: Permission denied
-bash-4.2$ ll -d /home/oldboy/
drwx------ 2 oldboy oldboy 99 Apr 23 12:01 /home/oldboy/
-bash-4.2$ ls /home/oldboy/
ls: cannot open directory /home/oldboy/: Permission denied
方法2:从/etc/skel复制 .bash开头的文件到当前目录下(推荐)
-bash-4.2$ cp /etc/skel/.bash* ~
-bash-4.2$
-bash-4.2$ logout
[root@oldboyedu59 ~]# su - alex
Last login: Wed Apr 24 11:44:23 CST 2019 on pts/0
[alex@oldboyedu59 ~]$
[alex@oldboyedu59 ~]$
[alex@oldboyedu59 ~]$
5.5 用户管理命令
操作用户
1>useradd:添加用户
参数:
-u:指定UID
-s:指定用户使用的命令解释器
-M:创建用户的时候不创建家目录
-g:指定用户组
-G:指定多个用户组
-c:指定用户的说明信息
[root@oldboyedu59 ~]# #添加用户oldboy888 指定uid为888 不可登录系统 不创建家目录
[root@oldboyedu59 ~]# useradd -u 888 -s /sbin/nologin -M oldboy888
[root@oldboyedu59 ~]# id oldboy888
uid=888(oldboy888) gid=1003(oldboy888) groups=1003(oldboy888)
[root@oldboyedu59 ~]# grep oldboy /etc/passwd
oldboy:x:1000:1000::/home/oldboy:/bin/bash
oldboy888:x:888:1003::/home/oldboy888:/sbin/nologin
[root@oldboyedu59 ~]# ls -l /home/oldboy888
ls: cannot access /home/oldboy888: No such file or directory
2>passwd:设置密码
--stdin
从管道获取密码
非交互设置密码
history -c:清除历史命令记录
3>userdel:删除用户,默认不会删除家目录
参数:-r(慎用)
删除用户和用户家目录
删除用户替代方法:在/etc/passwd中给用户前面加上
4>su:切换用户
参数:
- :切换用户的时候更新用户的环境变量
-c:切换到某个用户执行命令,执行命令后自动退出这个用户
5>usermod
-u:修改UID
-s:修改用户使用的命令解释器
-g:修改主要的用户组
-G:修改为多个用户组