Linux文件权限管理实验(SEC-L01-002.1)Linux操作系统(Linux),是一类Unix计算机操作系统的统称。Linux操作系统的内核的名字也是“Linux”。Linux操作系统也是自由软件和开放源代码发展中最著名的例子。严格来讲,Linux这个词本身只表示Linux内核,但在实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU工程各种工具和资料库的操作系统(也被称为GNU/Linux)。基于这些组件的Linux软件被称为Linux发行版。一般来讲,一个Linux发行套件包含大量的软件,比如软件开发工具(例如gcc)、资料库(例如PostgreSQL、MySQL)、Web服务器(例如Apache)、XWindow、桌面环境(例如GNOME和KDE)、办公套件(例如OpenOffice.org)、脚本语言(例如Perl、PHP和Python)等等。Linux内核最初是为英特尔386微处理器设计的。现在Linux内核支持从个人电脑到大型主机甚至包括嵌入式系统在内的各种硬件设备。现在,Linux已经成为了一种受到广泛关注和支持的操作系统。包括IBM和惠普、戴尔在内的一些计算机业巨头也陆续支持Linux,并且成立了一些组织支持其发展,如OpenInventionNetwork(OIN)(成员有IBM,SONY,NEC,Philips,Novell,Redhat等)。很多人认为,和其他的商用Unix系统以及微软Windows相比,作为自由软件的Linux具有低构建成本,高安全性,更加可信赖等优势。实验准备文件权限有两种属性:I、文件(目录)所属关系,如下:属主:文件(目录)的所有者,标记位记为字母u,即user之意组:文件(目录)所属的组,标记位记为字母g,即group之意其他:操作系统上的其他用户,标记位记为字母o,即other之意II、文件(目录)的访问控制,如下:读标记位:即文件(目录)可以被读取,记为r写标记位:即文件(目录)可以被写,记为w执行标记位:即文件可以被执行或目录可以被访问,记为x因为系统有能力支持多用户,在每一方面系统都会做出谁能读、写和执行的资源权力限制。这些权限以三个八位元的方式储存着,一个是表示文件所属者,一个是表示文件所属群组,一个是表示其他人。这些数字以下列方式表示,文件(目录)的每种所属关系均从下表中取一种以组合表示:准备两台电脑:(1)一台linux,一台winxp,设置两台电脑在同一网段上,一台为192.168.100.100(linux);一台192.168.100.101(winxp)(2)在xp的电脑上安装putty(3)运行xp上的putty,打开Putty,输入linux主机的IP地址,确定后可以看到登录界面,输入超级用户root及密码,这样就进入了linux系统,然后在linux服务器上创建如下帐户:1、在linux上要创建一个普通帐户test(test用户属于root组),#addusertest#passwdtest#usermod-groottest2、创建普通帐户sample(sample用户属于root组)#addusersample#passwdsample#usermod-grootsample实验步骤以普通帐户登录1.打开Putty,输入目标主机的IP地址,确定后可以看到登录界面,如图1-1:图1-12.点击上图中的打开(Open)以连接远程主机,第一次登录时会弹出主机身份识别密钥,点确定(yes)接受之。如图1-2:图1-23.用帐户test密码t3st@lnx$$登录远程系统,如图1-3:图1-34.查看文件权限,如图1-4:图1-4如上图,查看文件/etc/passwd及/etc/shadow的权限,命令如下:ls-al/etc/passwdls-al/etc/shadow我们可以看到如下的权限标记(各从属关系的权限位之间的空格是为了便于介绍而添加的,实际样式见图1-4:-rw-r--r--1rootroot1354Mar117:18/etc/passwd-r--------1rootroot888Mar117:18/etc/shadow-rw-r--r--1rootroot1354Mar117:18/etc/passwd-r--------1rootroot888Marls-al/etc/passwdls-al/etc/shadow117:18/etc/shadow以-rw-r--r--为例,第一部分为-,第二部分为rw-,第三部分为r--,第四部分为r--第一部分:用于区分文件、目录、设备、链接等若列表后面的是文件,则此处为符号-若列表后面的是目录,则此处为字母d若列表后面的是块设备,则此处为字母b若列表后面的是字符设备,则此处为字母c若列表后面的是软链接,则此处为字母l第二部分:属主权限对于文件/etc/passwd,该文件的属主(root)可读、可写,不可执行对于文件/etc/shadow,该文件的属主(root)可读、可写,不可执行第三部分:属组权限对于文件/etc/passwd,该文件的属组(root)可读、不可写,不可执行对于文件/etc/shadow,该文件的属组(root)不可读、不可写,不可执行第四部分:其他人权限对于文件/etc/passwd,其他人可读、不可写,不可执行对于文件/etc/shadow,其他人不可读、不可写,不可执行5.尝试向没有写权限的文件写入数据,如图1-5:图1-5命令如下:echotest/etc/passwd得到的结果是:Permissiondenied,即权限不足。6.尝试读取没有读权限的文件,如图1-6:echotest/etc/passwd图1-6命令如下:cat/etc/shadowcat/etc/shadow得到的结果是:Permissiondenied,即权限不足。7.创建文件并修改其权限,如图1-7:图1-7命令如下:创建空文件touchmyfile查看文件权限ls-almyfilels-almyfile我们可以看到文件的权限为-rw-r--r--,写为数字形式即为0644,此时属主可读写,属组及其他人只读,此种情形下的等价命令为:chmod0644myfile为文件属主增加可执行权限chmodu+xmyfile查看文件权限ls-almyfile我们可以看到文件的权限为-rwxr--r--,写为数字形式即为0744,此时属主可读写可执行,属组可读写,其他人只读,此种情形下的等价命令为:chmod0744myfile删除文件rm-fmyfile特殊权限1.用su命令将当前用户切换到root,密码为r00t@LNX..,如图1-8:图1-8命令如下:su-su-粘滞位(sticky)我们查看系统/tmp目录的权限,如图1-9:图1-9命令如下:ls-al/|greptmp我们可以看到,权限位表示为drwxrwxrwt,即这是一个目录(第一位为字母d),属主可读可写可执行,属组可读可写可执行,其他人可读可写可执行,最后那个小写字母t,表示这个目录具有粘滞位。所谓粘滞位,意思为:普通用户在此目录中创建的文件,读写受其权限位的限制,但是删除却只能由文件所有者或root删除,其他用户即使拥有写权限,也不能删除之。(当一个目录被设置为粘着位(用chmoda+t),则该目录下的文件只能由一、超级管理员删除二、该目录的所有者删除三、该文件的所有者删除也就是说,即便该目录是任何人都可以写,但也只有文件的属主才可以删除文件。chmod777abcchmod+tabc等价于chmod1777abcAAA用户和BBB用户同属AAA组,但用AAA用户创建的文件,权限设置为777后,还是不能用BBB用户删除,发现AAA用户创建文件位置的上层目录的权限是drwxrwxrwt,普通文件的sticky位会被linux内核忽略,但目录的sticky位表示这个目录里的文件只能被owner和root删除。于是用root用户,对这个文件夹chmod-t后,用BBB用户就可以删除刚才AAA用户创建的文件了。)注:若该目录对其他用户是不可访问的,即目录原权限位为drwxrwxr--(0776),在添加粘滞位后,最后一位将变为大写字母T,即成为drwxrwxr-T(1776)。下面我们举例简单说明粘滞位的基本用途。创建普通目录sample,并设置其权限位为drwxrwx—(0770),即属主和属组可读可写可访问,其他人不可读不可写不可访问,如图1-10:图1-10命令如下:创建目录mkdir/sample更改权限chmod0770/samplechmod0770/sample在该例中,上面这条命令的效果相当于chmodg+w/sample及chmodo-rx/sample两条命令的效果。查看文件权限ls-al/|grepsample我们可以看到新的权限位为drwxrwx---,即0770。切换到普通帐户sample(sample用户属于root组),在/sample目录中创建一个空文件,设置其权限位为0660,即属主及属组可读可写不可执行,其他人不可读不可写不可执行,如图1-11:图1-11命令如下:切换帐户su-sample创建文件touch/sample/abcdtouch/sample/abcd更改权限chmod0660/sample/abcdchmod0660/sample/abcd查看权限ls-al/sample/abcdls-al/sample/abcd我们可以看到新的权限位为-rw-rw----,即0660。输入exit退出到root环境,切换到普通帐户test(test用户属于root组),尝试删除文件/sample/abcd,发现文件被成功删除了,最后输入exit退出到root环境,如图1-12:图1-12命令如下:退出当前会话exitexit切换帐户su-test删除文件rm-f/sample/abcd查看文件ls-al/sample/abcd此时报找不到文件错误。退出当前会话exit为目录/sample增加粘滞位,如图1-13:图1-13命令如下:增加粘滞位chmod1770/samplechmod1770/sample查看目录权限ls-al/|grepsample此时我们可以看到,/sample目录的权限位为drwxrwx—T(1770),即属主及属组可读可写可访问,其他人不可读不可写不可访问,且目录具有粘滞位。重复上面的图1-11所示步骤,以普通帐号sample创建文件abcd;重复上面的图1-12所示步骤,到以普通帐号test尝试删除/sample/abcd时,发现这次删除不了了,如图1-14:图1-14S位(suid/sgid)S位分为SUID和SGID,分别作用于属主和属组的权限位。uid和euid真实用户ID(uid)是拥有或启动进程的用户UID。生效UID(euid)是进程以其身份运行的用户ID。举例来说,passwd工具通常是以发起修改密码的用户身份启动,也就是说其进程的真实用户ID是那个用户的ID;但是,由于需要修改密码数据库,它会以root用户作为生效用户ID的身份运行。这样,普通的非特权用户就可以修改口令,而不是看到“PermissionDenied”错误了。SUIDsetuid权限可以通过在普通权限前面加上一个数字四(4)来设置,如图1-15:图1-15命令如下:创建新文件touch/tmp/abcd.sh为属主增加执行权限chmodu+x/tmp/abcd.sh查看文件权限ls-al/tmp/abcd.shls-al/tmp/abcd.sh为文件设置setuid权限chmod4744/tmp/abcd.sh查看文件权限ls-al/tmp/abcd.sh我们可以看到,在原先的属主执行权限的位置变成了s。这样,需要提升特权的可执行文件,例如passwd就可以正常运行了。SGIDsetgid权限的作用与setuid权限类似,只是当应用程序配合这一