作业-第04周--课堂-Day16-Linux系统权限知识及应用

2019-03-23  本文已影响0人  MineG

Day16 课堂笔记

1. Linux文件及目录权限

1 普通文件对应读、写、执行权限的详细说明

1)可读r:表示具有可读、浏览文件内容(即读取文件实体block)的权限
2)可写w:表示具有新增、修改、删除文件内容的权限。
3)可执行x:表示具有执行文件的权限。
其中对于可读r,这里有两点需要说明:

对于可执行x,需要注意以下三点:

2 目录对应读、写、执行权限的详细说明

1)可读r:表示具有浏览目录下面文件及子目录内容的权限。
2)可写w:表示具有增加、删除或修改目录内文件的权限。但是,如果没有可执行x的配合,即使有w权限,也无法删除或创建文件。
3)可执行x:表示具有进入目录的权限。

3. Linux权限体系核心知识

3.1 权限实践环境准备

1 规划三种不同用户角色

2 创建对应的用户及用户组角色

如果用户之前已经创建了:

[root@oldboyedu ~]# groupadd incahome
[root@oldboyedu ~]# useradd oldboy
useradd: user 'oldboy' already exists
[root@oldboyedu ~]# usermod -g incahome oldboy
[root@oldboyedu ~]# id oldboy
uid=1000(oldboy) gid=1004(incahome) groups=1004(incahome),1000(oldboy)

如果此前没有创建oldboy,可以执行下面命令,而不需要usermod命令

[root@oldboyedu ~]# useradd oldboy -g incahome
[root@oldboyedu ~]# useradd oldgirl -g incahome
useradd: user 'oldgirl' already exists
[root@oldboyedu ~]# id oldgirl
uid=1001(oldgirl) gid=1001(oldgirl) groups=1001(oldgirl)
[root@oldboyedu ~]# usermod -g incahome oldgirl
[root@oldboyedu ~]# id oldgirl
uid=1001(oldgirl) gid=1004(incahome) groups=1004(incahome)
[root@oldboyedu ~]# useradd test

3 创建用于测试的目录及文件环境

[root@oldboyedu ~]# mkdir -p /oldboy
[root@oldboyedu ~]# echo "echo oldboyLinux" >/oldboy/test.sh
[root@oldboyedu ~]# chmod +x /oldboy/test.sh

4 打开远程登录窗口并登录

Xshell SSH 远程登录不同窗口用户角色说明

3.2 通过实践测试文件对应权限

1 测试默认情况下不同用户的对应权限

待测试文件及目录默认属性如下:

[root@oldboyedu  ~]# ls -ld /oldboy/
drwxr-xr-x 2 root root 21 Mar 21 01:15 /oldboy/
[root@oldboyedu  ~]# ls -l /oldboy/test.sh 
-rwxr-xr-x 1 root root 17 Mar 23 16:43 /oldboy/test.sh

下面是测试的命令集合:

测试可读 r的命令为:cat  /oldboy/test.sh 
测试可写w的命令为:echo "echo oldboy" >>  /oldboy/test.sh 
测试执行x 的命令为: /oldboy/test.sh 
测试可删除的命令为:rm -f  /oldboy/test.sh 

经过测试,你会发现三个用户的测试结果一致,以oldboy用户为例:

[oldboy@oldboyedu  ~]$ cat /oldboy/test.sh 
echo oldboyLinux
[oldboy@oldboyedu  ~]$ echo "echo oldboy" >>  /oldboy/test.sh 
-bash: /oldboy/test.sh: Permission denied
[oldboy@oldboyedu  ~]$ /oldboy/test.sh 
oldboyLinux
[oldboy@oldboyedu  ~]$ rm -f  /oldboy/test.sh
rm: cannot remove ‘/oldboy/test.sh’: Permission denied

2 在root窗口将文件对应的用户改为oldboy,用户组改为incahome

[root@oldboyedu  ~]# chown oldboy.incahome /oldboy/test.sh
[root@oldboyedu  ~]#  ls -l /oldboy/test.sh 
-rwxr-xr-x 1 oldboy incahome 17 Mar 23 16:43 /oldboy/test.sh

测试oldboy用户

[oldboy@oldboyedu  ~]$ whoami 
oldboy
[oldboy@oldboyedu  ~]$ cat /oldboy/test.sh 
echo oldboyLinux
[oldboy@oldboyedu  ~]$ echo "echo oldboy" >>  /oldboy/test.sh 
[oldboy@oldboyedu  ~]$ cat /oldboy/test.sh 
echo oldboyLinux
echo oldboy
[oldboy@oldboyedu  ~]$ /oldboy/test.sh 
oldboyLinux
oldboy

测试oldgril用户

[oldgirl@oldboyedu  ~]$ whoami 
oldgirl
[oldgirl@oldboyedu  ~]$ cat /oldboy/test.sh
echo oldboyLinux
echo oldboy
[oldgirl@oldboyedu  ~]$ echo "echo oldboy" >>  /oldboy/test.sh 
-bash: /oldboy/test.sh: Permission denied
[oldgirl@oldboyedu  ~]$ /oldboy/test.sh 
oldboyLinux
oldboy
[oldgirl@oldboyedu  ~]$ rm -f  /oldboy/test.sh
rm: cannot remove ‘/oldboy/test.sh’: Permission denied

3 重点测试oldboy用户对文件的w删除权限及test用户的执行权限

test.sh中的其他用户权限的r权限去掉,具体步骤如下:

[root@oldboyedu  ~]# whoami 
root
[root@oldboyedu  ~]# chmod 751 /oldboy/test.sh 
[root@oldboyedu  ~]# ls -l /oldboy/test.sh
-rwxr-x--x 1 oldboy incahome 29 Mar 23 16:50 /oldboy/test.sh

下面测试oldboy用户下是否有删除test.sh的权限

[oldboy@oldboyedu  ~]$ whoami 
oldboy
[oldboy@oldboyedu  ~]$ rm -f  /oldboy/test.sh
rm: cannot remove ‘/oldboy/test.sh’: Permission denied

测试test用户下是否有执行test.sh的权限

[test@oldboyedu  ~]$ whoami 
test
[test@oldboyedu  ~]$ /oldboy/test.sh 
bash: /oldboy/test.sh: Permission denied

4 修改/oldboy目录的权限,并测试oldboy用户对oldboy目录下test.sh的删除权限

具体步骤如下:

[root@oldboyedu  ~]# whoami 
root
[root@oldboyedu  ~]# chmod 000 /oldboy/test.sh 
[root@oldboyedu  ~]# ls -l /oldboy/test.sh
---------- 1 oldboy incahome 29 Mar 23 16:50 /oldboy/test.sh
[root@oldboyedu  ~]# chown -R oldboy /oldboy
[root@oldboyedu  ~]# ls -ld /oldboy
drwxr-xr-x 2 oldboy root 21 Mar 23 16:39 /oldboy

测试步骤如下:

[oldboy@oldboyedu  ~]$ whoami 
oldboy
[oldboy@oldboyedu  ~]$ cat /oldboy/test.sh 
cat: /oldboy/test.sh: Permission denied
[oldboy@oldboyedu  ~]$ echo "echo oldboy" >>  /oldboy/test.sh 
-bash: /oldboy/test.sh: Permission denied
[oldboy@oldboyedu  ~]$ /oldboy/test.sh 
-bash: /oldboy/test.sh: Permission denied
[oldboy@oldboyedu  ~]$ rm -f  /oldboy/test.sh
[oldboy@oldboyedu  ~]$ ls -l /oldboy/test.sh
ls: cannot access /oldboy/test.sh: No such file or directory

3.3 通过实践测试目录属性对应的权限

1 针对当下目录/oldboy属性测试权限

[root@oldboyedu  ~]# ls -ld /oldboy/
drwxr-xr-x 2 oldboy root 6 Mar 23 17:06 /oldboy/

测试oldboy用户:

[oldboy@oldboyedu  ~]$ whoami 
oldboy
[oldboy@oldboyedu  ~]$ ls -ld /oldboy/
drwxr-xr-x 2 oldboy root 6 Mar 23 17:06 /oldboy/
[oldboy@oldboyedu  ~]$ touch /oldboy/{1..3}.txt
[oldboy@oldboyedu  ~]$ ls /oldboy/
1.txt  2.txt  3.txt
[oldboy@oldboyedu  ~]$ ls -l /oldboy/
total 0
-rw-r--r-- 1 oldboy incahome 0 Mar 23 17:10 1.txt
-rw-r--r-- 1 oldboy incahome 0 Mar 23 17:10 2.txt
-rw-r--r-- 1 oldboy incahome 0 Mar 23 17:10 3.txt
[oldboy@oldboyedu  ~]$ cd /oldboy/
[oldboy@oldboyedu  /oldboy]$ pwd
/oldboy
[oldboy@oldboyedu  /oldboy]$ rm -f 1.txt 
[oldboy@oldboyedu  /oldboy]$ ls
2.txt  3.txt

测试oldgirl用户:

[oldgirl@oldboyedu  ~]$ 
[oldgirl@oldboyedu  ~]$ whoami 
oldgirl
[oldgirl@oldboyedu  ~]$ ls -ld /oldboy/
drwxr-xr-x 2 oldboy root 32 Mar 23 17:10 /oldboy/
[oldgirl@oldboyedu  ~]$ ls /oldboy/
2.txt  3.txt
[oldgirl@oldboyedu  ~]$ ls -l /oldboy/
total 0
-rw-r--r-- 1 oldboy incahome 0 Mar 23 17:10 2.txt
-rw-r--r-- 1 oldboy incahome 0 Mar 23 17:10 3.txt
[oldgirl@oldboyedu  ~]$ touch /oldboy/{a..c}.txt
touch: cannot touch ‘/oldboy/a.txt’: Permission denied
touch: cannot touch ‘/oldboy/b.txt’: Permission denied
touch: cannot touch ‘/oldboy/c.txt’: Permission denied
[oldgirl@oldboyedu  ~]$ cd /oldboy/
[oldgirl@oldboyedu  /oldboy]$ pwd
/oldboy
[oldgirl@oldboyedu  /oldboy]$ ls
2.txt  3.txt
[oldgirl@oldboyedu  /oldboy]$ rm -f 2.txt 
rm: cannot remove ‘2.txt’: Permission denied

2 测试oldboy目录权限中x和w与r的配合,以及r和w与x的配合

将文件的权限和用户及组调整为如下属性:

[root@oldboyedu  ~]# whoami 
root
[root@oldboyedu  ~]# chmod 736 /oldboy/
[root@oldboyedu  ~]# chown oldboy.incahome /oldboy/
[root@oldboyedu  ~]# ls -ld /oldboy/
drwx-wxrw- 2 oldboy incahome 32 Mar 23 17:10 /oldboy/

使用oldgir用户测试:

[oldgirl@oldboyedu  /oldboy]$ whoami
oldgirl
[oldgirl@oldboyedu  /oldboy]$ ls -ld /oldboy/
drwx-wxrw- 2 oldboy incahome 32 Mar 23 17:10 /oldboy/
[oldgirl@oldboyedu  /oldboy]$ ls /oldboy/
ls: cannot open directory /oldboy/: Permission denied
[oldgirl@oldboyedu  /oldboy]$ touch /oldboy/m.txt
[oldgirl@oldboyedu  /oldboy]$ cd /oldboy/
[oldgirl@oldboyedu  /oldboy]$ ls
ls: cannot open directory .: Permission denied
[oldgirl@oldboyedu  /oldboy]$ rm -f m.txt

使用test用户测试:

[test@oldboyedu  ~]$ whoami 
test
[test@oldboyedu  ~]$ ls -ld /oldboy/
drwx-wxrw- 2 oldboy incahome 32 Mar 23 17:21 /oldboy/
[test@oldboyedu  ~]$ ls /oldboy/
ls: cannot access /oldboy/2.txt: Permission denied
ls: cannot access /oldboy/3.txt: Permission denied
2.txt  3.txt
[test@oldboyedu  ~]$ ls -l /oldboy/
ls: cannot access /oldboy/2.txt: Permission denied
ls: cannot access /oldboy/3.txt: Permission denied
total 0
-????????? ? ? ? ?            ? 2.txt
-????????? ? ? ? ?            ? 3.txt
[test@oldboyedu  ~]$ touch /oldboy/n.txt
touch: cannot touch ‘/oldboy/n.txt’: Permission denied
[test@oldboyedu  ~]$ rm -f /oldboy/3.txt 
rm: cannot remove ‘/oldboy/3.txt’: Permission denied
[test@oldboyedu  ~]$ cd /oldboy/
-bash: cd: /oldboy/: Permission denied

4 设置及更改文件和目录权限的命令: chmod

参数

(1)用户或用户组的定义:

(2)权限定义字母

(3)权限增减字符定义

5 修改文件属性的用户和组:chown

chown 用户.用户组 文件  这里的点可以用:替换。
chown 用户 文件
chown .用户组 文件   ====chgrp 用户组 文件

6 企业环境下文件和目录的安全核心知识

安全权限临界点:
1 文件不想被修改被执行:644

[root@oldboyedu /oldboy]# touch oldboy.txt
[root@oldboyedu /oldboy]# ls -l
total 4
-rw-r--r-- 1 root    root  0 Oct  7 23:21 oldboy.txt

2 目录不想被修改(删除移动创建)被执行(进入):755

[root@oldboyedu  ~]# mkdir test
[root@oldboyedu  ~]# ls -ld test/
drwxr-xr-x 2 root root 6 Mar 23 17:43 test/

博客:写博客。。。服务器的博客目录和文件的权限,防止被恶意篡改。

企业真实案例:网站文件被恶意修改了。。。。打开网站后有弹窗广告(不是你网站的)

用户打开网站,报警。
原因:权限设置不到位。chmod -R 777 目录 开发人员习惯
解决方案:
1、备份

tar zcvf /opt/oldboy_$(date +%F).tar.gz ./oldboy/

2、找到被修改的文件

[root@oldboyedu /]# find /oldboy -type f |xargs grep 'ddddddddddddd'
/oldboy/oldboy.txt:<script>ddddddddddddd</scripts>
/oldboy/test.sh:<script>ddddddddddddd</scripts>

3、批量删除

[root@oldboyedu /]# find /oldboy -type f |xargs sed -i '/ddddddddddddd/d'
[root@oldboyedu /]# find /oldboy -type f |xargs grep 'ddddddddddddd'

4、找到文件被篡改来源,并优化调整。

亡羊补牢。

5、写总结 故障报告。

7 默认权限掩码及设置命令:umask

1 文件默认权限计算

1)假设umask值为022(所有位为偶数):

    6 6 6      #<-->文件的起始权限值
    0 2 2 —    #<-->umaskd 值
----------------------
    6 4 4

1)假设umask值为045(所有位为偶数):

    6 6 6      #<-->文件的起始权限值
    0 4 5 —    #<-->umaskd 值
----------------------
    6 2 1      #<-->计算出来的权限。由于umask的最后一位数字是奇数5,所以,在其他用户组位在加1
    0 0 1      #<-->umask对应的奇数位加1
----------------------
    6 2 2      #<-->真实文件权限

2 目录默认权限计算(umask没有奇偶之分)

    7 7 7      #<-->目录的起始权限值
    0 2 2 —    #<-->umaskd 值
----------------------
    7 5 5 

8 特殊权限位

Linux系统特殊权限位知识
9位基础权限

还有3位特殊权限位

1 suid相关
"4", "2", "1",加和放在基础权限数字的前面。

修改方法:

[root@oldboyedu /oldboy]# chmod 7755 abc

预测:-rwsr-sr-t

[root@oldboyedu /oldboy]# chmod 7755 abc
[root@oldboyedu /oldboy]# ls -l abc
-rwsr-sr-t 1 root root 0 Oct  7 23:42 abc

[root@oldboyedu /oldboy]# chmod 7644 abc
[root@oldboyedu /oldboy]# ls -l abc
-rwSr-Sr-T 1 root root 0 Oct  7 23:42 abc

工作中有啥用?

suid到底有什么作用
简单地说,suid的作用就是让普通用户可以在执行某个设置了suid位的命令或程序时,拥有和root管理员一样的身份和权限(默认情况)。

[oldgirl@oldboyedu /]$ ll -ld oldboy/
dr-x-wxrw-. 2 oldboy incahome 6 Oct  7 22:15 oldboy/

oldgirl属于incahome,增加一个用户属于incahome,是不是也和oldgirl有同样权限。

oldboy 给一个新用户设置suid,这个新用户的权限就和oldboy一样。

查看哪些命令默认被设置了suid

[root@oldboyedu  ~]# find /usr/bin -type f -perm 4755|xargs ls -l
-rwsr-xr-x. 1 root root 64328 Oct 31 00:33 /usr/bin/chage
-rwsr-xr-x. 1 root root 57664 Nov 20 22:22 /usr/bin/crontab
-rwsr-xr-x. 1 root root 32096 Oct 31 05:32 /usr/bin/fusermount
-rwsr-xr-x. 1 root root 78272 Oct 31 00:33 /usr/bin/gpasswd
-rwsr-xr-x. 1 root root 44320 Oct 31 06:48 /usr/bin/mount
-rwsr-xr-x. 1 root root 41872 Oct 31 00:33 /usr/bin/newgrp
-rwsr-xr-x. 1 root root 27832 Jun 10  2014 /usr/bin/passwd
-rwsr-xr-x. 1 root root 23656 Oct 31 06:26 /usr/bin/pkexec
-rwsr-xr-x. 1 root root 32208 Oct 31 06:48 /usr/bin/su
-rwsr-xr-x. 1 root root 32048 Oct 31 06:48 /usr/bin/umount

suid核心知识小结

1):suid功能是针对二进制命令或程序的,不能用在Shell等类似脚本文件上。
2):用户对应的前三位权限的x为上,如果有s(S)就表示具备suid权限。
3):suid的作用就是让普通用户可以在执行某个设置了suid的命令或程序时,拥有和属主(一般是root)一样的身份和权限。
4):二进制命令程序需要有可执行权限x配合才行。
5):suid对应的身份和权限仅在程序命令执行过程中有效。
6):suid是一把双刃剑,是一个比较危险的功能,对系统安全有一定的威胁,企业里用户授权可以使用sudo等替代suid
7):在进行安全优化时,系统默认设置的suid权限要取消掉。


2 sgid相关
作用之一:

sgid的作用就是让普通用户可以在执行某个设置了sgid位的命令时,
拥有和命令对应用户组(一般为root用户组)一样的身份和权限(默认)。

locate搜索内容,默认从updatedb对应的数据库中查找
updatedb更新locate查找内容对应的数据库。

[root@oldboyedu ~]# updatedb
[root@oldboyedu ~]#  ls -l /var/lib/mlocate/mlocate.db
-rw-r----- 1 root slocate 1977042 Oct  8 00:47 /var/lib/mlocate/mlocate.db
[root@oldboyedu ~]# file /var/lib/mlocate/mlocate.db
/var/lib/mlocate/mlocate.db: data

sgid基于目录的作用:
让不同的人创建文件属于相同的用户组,从而可以互相共享文件的权限。


sgid核心知识小结

1)与suid不同的是,sgid既可以针对文件,也可以针对目录设置;
2)sgid的权限是针对用户组权限位的。


上一篇 下一篇

猜你喜欢

热点阅读