SECB010011Unix文件权限管理实验.docx
《SECB010011Unix文件权限管理实验.docx》由会员分享,可在线阅读,更多相关《SECB010011Unix文件权限管理实验.docx(14页珍藏版)》请在冰豆网上搜索。
![SECB010011Unix文件权限管理实验.docx](https://file1.bdocx.com/fileroot1/2023-1/29/0216ed05-b452-4490-ab2e-6f299ea8b925/0216ed05-b452-4490-ab2e-6f299ea8b9251.gif)
SECB010011Unix文件权限管理实验
Unix文件权限管理实验
2010年4月
SEC-B01-001.1
Unix文件权限管理实验
技术背景
FreeBSD是一个免费使用且带有完整源代码的基于4.4BSD-Lite的系统,它广泛运行于Inteli386™、i486™、Pentium®、PentiumPro、Celeron®、PentiumII、PentiumIII、Pentium4(或者兼容系统)、Xeon™、DECAlpha™和SunUltraSPARC的计算机系统上。
它主要以加州大学伯克利分校的CSRG研究小组的软件为基础,并加入了NetBSD、OpenBSD、386BSD以及来自自由软件基金会的一些东西。
FreeBSD,是BSDUNIX®的延续,并基于几个关键的UNIX观念。
FreeBSD是一个多用户的操作系统,它能分别处理几个同时工作的用户所分配的毫无关联任务。
并负责为每位用户的硬件设备、外设、内存和CPU处理时间作出合理安排。
实验目的
通过在FreeBSD操作系统上对文件的权限进行查看、修改等操作,进而了解基本的UNIX文件权限体系。
实验平台
客户机(客户端):
WindowsXP/2003
实验工具
Putty
实验要点
熟悉了解文件权限的字符串表示及数字表示。
实验拓扑
实验流程
实验步骤指导
实验准备
实验概要:
文件权限有两种属性:
I、文件(目录)所属关系,如下:
属主:
即文件(目录)的所有者,标记位记为字母u,即user之意
组:
文件(目录)所属的组,标记位记为字母g,即group之意
其他:
操作系统上的其他用户,标记位记为字母o,即other之意
II、文件(目录)的访问控制,如下:
读标记位:
即文件(目录)可以被读取,记为r
写标记位:
即文件(目录)可以被写,记为w
执行标记位:
即文件可以被执行或目录可以被访问,记为x
因为系统有能力支持多用户,在每一方面系统都会做出谁能读、写和执行的资源权力限制。
这些权
限以三个八位元的方式储存着,一个是表示文件所属者,一个是表示文件所属群组,一个是表示其
他人。
这些数字以下列方式表示,文件(目录)的每种所属关系均从下表中取一种以组合表示:
数值
权限
标记位标示
0
不能读,不能写,不能执行
---
1
不能读,不能写,可执行
--x
2
不能读,可写,不能执行
-w-
3
不能读,可写,可执行
-wx
4
可读,不能写,不能执行
r--
5
可读,不能写,可执行
r-x
6
可读,可写,不能执行
rw-
7
可读,可写,可执行
rwx
以普通帐户登录
注:
传统UNIX(如BSDFamily)考虑到系统安全风险,默认禁止root帐户远程登录。
1.打开Putty,输入目标主机的IP地址,确定后可以看到登录界面,如图1-1
图1-1
2.点击上图中的打开(Open)以连接远程主机,第一次登录时会弹出主机身份识别密钥,点确定(yes)接受之。
如图1-2
图1-2
3.用帐户test密码t3st@BSd#登录远程系统,如图1-3
图1-3
4.查看文件权限,如图1-4
图1-4
5.如上图,查看文件/etc/passwd及/etc/master.passwd的权限,命令如下:
ls-al/etc/passwd
ls-al/etc/master.passwd
6.我们可以看到如下的权限标记(各从属关系的权限位之间的空格是为了便于介绍而添加的,
实际样式见图1-4:
-rw-r--r--1rootwheel1409Dec415:
37/etc/passwd
-rw-------1rootwheel1623Dec415:
37/etc/master.passwd
以"-rw-r--r--"为例,第一部分为-,第二部分为rw-,第三部分为r--,第四部分为r--
第一部分:
用于区分文件、目录、设备、链接等
若列表后面的是文件,则此处为符号-
若列表后面的是目录,则此处为字母d
若列表后面的是块设备,则此处为字母b
若列表后面的是字符设备,则此处为字母c
若列表后面的是软链接,则此处为字母l
第二部分:
属主权限
对于文件/etc/passwd,该文件的属主(root)可读、可写,不可执行
对于文件/etc/master.passwd,该文件的属主(root)可读、可写,不可执行
第三部分:
属组权限
对于文件/etc/passwd,该文件的属组(wheel)可读、不可写,不可执行
对于文件/etc/master.passwd,该文件的属组(wheel)不可读、不可写,不可执行
第四部分:
其他人权限
对于文件/etc/passwd,其他人可读、不可写,不可执行
对于文件/etc/master.passwd,其他人不可读、不可写,不可执行
7.尝试向没有写权限的文件写入数据,如图1-5
命令如下:
echo"test">>/etc/passwd
8.得到的结果是:
Permissiondenied,即权限不足。
图1-5
9.尝试读取没有读权限的文件,如图1-6
命令如下:
cat/etc/master.passwd
10.得到的结果是:
Permissiondenied,即权限不足。
图1-6
11.创建文件并修改其权限,如图1-7
图1-7
命令如下:
创建空文件
touchmyfile
查看文件权限
ls-almyfile
我们可以看到文件的权限为-rw-r--r--,写为数字形式即为0644,此时属主可读写,
属组及其他人只读
为文件属组增加写权限
chmodg+wmyfile
查看文件权限
ls-almyfile
我们可以看到文件的权限为-rw-rw-r--,写为数字形式即为0664,此时属主及属组可
读写,其他人只读,此种情形下的等价命令为:
chmod0664myfile
为文件属主增加可执行权限
chmodu+xmyfile
查看文件权限
ls-almyfile
我们可以看到文件的权限为-rwxrw-r--,写为数字形式即为0764,此时属主可读写执行,属组可读写,其他人只读,此种情形下的等价命令为:
chmod0764myfile
删除文件
rm-fmyfile
特殊权限
用su命令将当前用户切换到root,密码为4dmIN.BSD!
!
,如图1-8
注:
FreeBSD考虑到系统安全风险,禁止非同一组的帐户互相切换,因此用户帐户要想切换
为root,则该帐户必须属于root帐户的主要组,即wheel组。
命令如下:
su-
图1-8
粘滞位(sticky)
12.我们查看系统/tmp目录的权限,如图1-9
命令如下:
ls-al/|greptmp
图1-9
13.我们可以看到,权限位表示为drwxrwxrwt,即这是一个目录(第一位为字母d),属主可读可写可执行,属组可读可写可执行,其他人可读可写可执行,最后那个小写字母t,表示这个目录具有粘滞位,所谓粘滞位,意思为:
普通用户在此目录中创建的文件,读写受其权限位的限制,但是删除却只能由文件所有者或root删除,其他用户即使拥有写权限,也不能删除之。
注:
若该目录对其他用户是不可访问的,即目录原权限位为drwxrwxr--(0776),在添加粘滞位后,最后一位将变为大写字母T,即成为drwxrwxr-T(1776)。
14.下面我们举例简单说明粘滞位的基本用途。
创建普通目录sample,并设置其权限位为drwxrwx—(0770),即属主和属组可读可写可访问,其他人不可读不可写不可访问,如图1-10
图1-10
命令如下:
创建目录
mkdir/sample
更改权限
chmod0770/sample
在该例中,上面这条命令的效果相当于chmodg+w/sample
及chmodo-rx/sample两条命令的效果。
查看文件权限
ls-al/|grepsample
我们可以看到新的权限位为drwxrwx---,即0770
15.切换到普通帐户sample,在/sample目录中创建一个空文件,设置其权限位为0660,即属主及属组可读可写不可执行,其他人不可读不可写不可执行,如图1-11
图1-11
命令如下:
切换帐户
su-sample
创建文件
touch/sample/abcd
更改权限
chmod0660/sample/abcd
查看权限
ls-al/sample/abcd
16.我们可以看到新的权限位为-rw-rw----,即0660
输入exit退出到root环境,切换到普通帐户test,尝试删除文件/sample/abcd,发现文件被成功删除了,最后输入exit退出到root环境,如图1-12
图1-12
命令如下:
退出当前会话
exit
切换帐户
su-test
删除文件
rm-f/sample/abcd
查看文件
ls-al/sample/abcd
此时报找不到文件错误。
退出当前会话
exit
17.为目录/sample增加粘滞位,如图1-13
图1-13
命令如下:
增加粘滞位
chmodu+t/sample
查看目录权限
ls-al/|grepsample
此时我们可以看到,/sample目录的权限位为drwxrwx—T(1770),即属主及属组可读可写可访问,其他人不可读不可写不可访问,且目录具有粘滞位。
18.重复上面的第4步,以普通帐号sample创建文件abcd;重复上面的第5步,以普通帐号test尝试删除/sample/abcd,发现这次删除不了了,如图1-14
图1-14
S位(suid/sgid)
S位分为SUID和SGID,分别作用于属主和属组的权限位。
uid和euid
真实用户ID(uid)是拥有或启动进程的用户UID。
生效UID(euid)是进程以其身份运行的用户ID。
举例来说,passwd工具通常是以发起修改密码的用户身份启动,也就是说其进程的真实用户ID是那个用户的ID;但是,由于需要修改密码数据库,它会以root用户作为生效用户ID的身份运行。
这样,普通的非特权用户就可以修改口令,而不是看到“PermissionDenied”错误了。
SUID
setuid权限可以通过在普通权限前面加上一个数字四(4)来设置,如图1-15
图1-15
命令如下:
创建新文件
touch/tmp/abcd.sh
为属主增加执行权限
chmodu+x/tmp/abcd.sh
查看文件权限
ls-al/tmp/abcd.sh
为文件设置setuid权限
chmod4744/tmp/abcd.sh
查看文件权限
ls-al/tmp/abcd.sh
我们可以看到,在原先的属主执行权限的位置变成了s。
这样,需要提升特权的可执行文件,例如passwd就可以正常运行了。
SGID
setgid权限的作用与setuid权限类似,只是当应用程序配合这一设定运行时,它会被授予文件属组的权限。
setgid权限可以通过在普通权限前面加上一个数字二
(2)来设置,如图1-16
图1-16
命令如下:
为属组增加执行权限
chmodg+x/tmp/abcd.sh
查看文件权限
ls-al/tmp/abcd.sh
为文件设置setgid权限
chmod2754/tmp/abcd.sh
查看文件权限
ls-al/tmp/abcd.sh
我们可以看到,在原先的属组执行权限的位置变成了s。
注:
在上面的例子中,尽管shell脚本也属于可执行文件的一种,但它们可能不会以配置的euid或生效用户ID的身份运行。
这是因为shell脚本出于安全考虑可能无法直接调用setuid函数。
修改文件标志
除了上面说到的权限之外,FreeBSD还有另外一套用于文件及目录的标志,用以进一步在多用户环境下更好地设置文件及目录的访问控制,这些标志的设置需要用到chflags命令,下面简单演示几个常用的标志,如图1-17
图1-17
以普通帐户test登录系统,做以下操作
创建新文件
touchfileflags
为文件添加不可删除标志(uunlink)
chflagsuunlinkfileflags
添加了此标志后,我们尝试删除文件,发现删除失败。
为文件添加仅可以追加方式修改标志(uappend)
chflagsuappendfileflags
添加了此标志后,我们尝试用重定向方式截断文件,发现改写失败;
用重定向访问向文件追加内容,成功。
为文件添加不可修改标志(uchg)
chflagsuchgfileflags
添加了此标志后,我们尝试用重定向访问向文件追加内容,发现追加修改失败。
查看文件标志
ls-lofileflags
我们可以看到已添加的3个标志uappnd、uchg、uunlnk。
清除全部标志(数字0)
chflags0fileflags
我们可以看到所有标志已被清除。
删除文件
rm-ffileflags
解决方案
无