模块三 用户身份与文件权限管理电子课件 Linux操作系统基础 .pptx

上传人:春哥&#****71; 文档编号:90590246 上传时间:2023-05-16 格式:PPTX 页数:93 大小:4.52MB
返回 下载 相关 举报
模块三 用户身份与文件权限管理电子课件 Linux操作系统基础 .pptx_第1页
第1页 / 共93页
模块三 用户身份与文件权限管理电子课件 Linux操作系统基础 .pptx_第2页
第2页 / 共93页
点击查看更多>>
资源描述

《模块三 用户身份与文件权限管理电子课件 Linux操作系统基础 .pptx》由会员分享,可在线阅读,更多相关《模块三 用户身份与文件权限管理电子课件 Linux操作系统基础 .pptx(93页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、模块三 用户身份与文件权限管理电子课件 Linux操作系统基础 模块3用户身份与文件权限管理01用户与组文件权限及归属文件特殊权限目录020304文件隐藏属性与访问控制列表su命令与sudo服务实训3用户身份与文件权限管理0506本模块将详细讲解文件的所有者、所属组及其他人可对文件进行的读(r)、写(w)和执行(x)操作,以及如何在Linux系统中添加、修改、删除用户账户信息。我们还可以使用SUID、SGID与StickyBit特殊权限更加灵活地设置系统权限功能,来弥补对文件设置一般操作权限时所带来的不足。隐藏权限能够给系统增加一层隐形的防护层,让黑客最多只能查看关键日志信息,而不能对其进行修

2、改或删除。本模块最后还将讲解如何使用su命令与sudo服务让普通用户具备管理员的权限,这不仅可以满足日常的工作需求,还可以确保系统的安全性。通过本模块的学习,学生将达到以下职业能力目标和要求。掌握在Linux系统中添加、修改、删除用户或用户组的方法。掌握利用chmod、usermod等命令实现文件权限和组的管理。掌握Linux用户的访问权限。了解文件特殊权限、文件隐藏属性和访问控制列表。掌握su命令与sudo服务的使用细节及恢复操作系统的方法。模块3用户身份与文件权限管理3.1用户与组Linux是一个具有很好的稳定性与安全性的多用户、多任务操作系统,在幕后保障Linux系统安全的则是一系列复杂

3、的配置工作。Linux系统对用户分配如下:系统管理员(root)、系统用户(不可登录)和普通用户(可登录)。我们登录linux系统时输入的是账号,但是Linux系统并不会直接识别账号,而是通过我们建立账号时系统分配的ID号码,其中,系统管理员(root)ID为0,可登录的普通用户ID为100065535。3.1用户与组在建立用户账号时,系统会为用户账号分配至少两个ID,一个用户ID(UserID,UID),一个组ID(GroupID,GID)。UID的知识已经在前面介绍过了,下面了解一下GID,管理员(root)组ID为0,非系统组ID为100065535。对于一个用户而言,只有唯一一个UID

4、,但是可以有多个不同的组,分别为主组群和附属组,主组群名与用户名相同,且只有一个用户(本身),也可以称为私有组。主组群以外的组为附属组。在Linux系统中,用户账号、用户密码、用户组信息和用户组密码均存放在不同的配置文件中,所创建的用户账号及其相关信息(密码除外)均存放在/etc/passwd配置文件中。由于所有用户对passwd文件均有读取的权限,因此密码信息并未保存在该文件中,而是保存在/etc/shadow配置文件中。3.1用户与组在passwd配置文件中,一行定义一个用户账号,每行均由多个不同的字段构成,各字段值间用“:”分隔如下。rootfishyoung#cat/etc/passw

5、d/查看passwd文件信息root:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologin省略部分信息fishyoung:x:1000:1000:/home/fishyoung:/bin/bashrootfishyoung#3.1用户与组每个字段均代表该账号某方面的信息,从左至右各字段的对应关系及其含义见表3-1。3.1用户与组因为passwd不再保存密码信息,所以用x占位代表,若要使某个用户账户不能登录Linux,只需设置该用户所使用的shell为/s

6、bin/nologin即可。用户账户的管理工作主要涉及用户账户的添加、修改和删除。添加用户账号就是在系统中创建一个新账号,然后为新账号分配用户号、用户组、主目录和登录shell等资源,刚添加的账号是被锁定的,无法使用。(1)useradd命令用来添加新的用户账户,该命令操作的语法格式为:useradd参数选项用户名3.1.1添加、修改与删除用户的命令使用useradd命令在创建用户账户时,默认家目录是/home/“创建用户名”,默认的shell解释器为/bin/bash,同时会创建一个同名的主组群。这些默认值都是可以搭配参数选项进行更改的,具体的参数及作用见表3-2。3.1.1添加、修改与删除

7、用户的命令【例3-1】创建一个普通用户zs。rootfishyoung#tail-1/etc/passwdfishyoung:x:1000:1000:/home/fishyoung:/bin/bashrootfishyoung#useraddzsrootfishyoung#tail-2/etc/passwdfishyoung:x:1000:1000:/home/fishyoung:/bin/bashzs:x:1001:1001:/home/zs:/bin/bashrootfishyoung#ls/homefishyoungzsrootfishyoung#idzsuid=1001(zs)gid=

8、1001(zs)groups=1001(zs)分析得出:zs用户的UID为1001,GID为1001,同时创建用户私有组为1001,用户家目录默认为/home/zs,shell默认为/bin/bash。3.1.1添加、修改与删除用户的命令【例3-2】创建一个普通用户ls,用户的UID为1111,GID为1001,不创建用户私有组,所属的附属组群为0和1,用户家目录为/home/lshome,shell为/sbin/nologin(不能登录使用)。rootfishyoung#tail-1/etc/passwdfishyoung:x:1000:1000:/home/fishyoung:/bin/b

9、ashrootfishyoung#useradd-u1111-g1001-n-G0,1-d/home/lshome-s/sbin/nologinlsrootfishyoung#tail-3/etc/passwdfishyoung:x:1000:1000:/home/fishyoung:/bin/bashzs:x:1001:1001:/home/zs:/bin/bashls:x:1111:1001:/home/lshome:/sbin/nologinrootfishyoung#ls/homefishyounglshomezsrootfishyoung#idlsuid=1111(ls)gid=10

10、01(zs)groups=1001(zs),0(root),1(bin)3.1.1添加、修改与删除用户的命令【例3-3】创建一个普通用户ww,用户账户过期日期为2018年4月7日。rootfishyoung#dateSatApr711:28:52CST2018rootfishyoung#useradd-e2018-04-07wwrootfishyoung#ls/homefishyounglshomewwzsrootfishyoung#idwwuid=1112(ww)gid=1112(ww)groups=1112(ww)3.1.1添加、修改与删除用户的命令(2)为了完成【例3-3】的要求,需要先

11、学习使用passwd命令来设置用户登录密码,该命令操作的语法格式为:passwd参数选项用户账户名若指定了账户名称,则设置指定账户的登录密码,原密码被自动覆盖。只有root用户才有权设置指定账户的密码,一般用户只能设置或修改自己账户的密码(不带参数)。3.1.1添加、修改与删除用户的命令passwd命令常用参数及作用见表3-3。3.1.1添加、修改与删除用户的命令【例3-4】用zs用户去验证“-l”“-u”“-S”和“-stdin”参数的使用情况。3.1.1添加、修改与删除用户的命令设置账户登录密码后,该账户就可以登录系统了,就可以继续完善【例3-3】了。首先用ssh登录测试(ssh的用法后面

12、会讲到),再更改系统时间为2018年4月6日23:59:00,用ssh再次登录Linux系统进行测试。rootfishyoung#date/查看当前系统时间SatApr711:49:30CST2018rootfishyoung#sshww192.168.244.128/用ww账户登录系统ww192.168.244.128spassword:/输入登录密码Youraccounthasexpired;pleasecontactyoursystemadministratorAuthenticationfailed.账户过期,登录失败rootfishyoung#date-s2018-04-0623:5

13、9:00/设置系统时间FriApr623:59:00CST2018rootfishyoung#sshww192.168.244.128/用ww账户再次登录ww192.168.244.128spassword:Lastfailedlogin:SatApr711:49:36CST2018from192.168.244.128onssh:nottyTherewere1failedloginattemptssincethelastsuccessfullogin.wwfishyoung$pwd/登录成功,查看当前目录/home/ww3.1.1添加、修改与删除用户的命令(3)usermod命令用来修改用户

14、的属性,该命令操作的语法格式为:usermod参数选项用户账户名Linux系统中的一切都是文件,系统管理员可以直接用文本编辑器来修改其中的用户参数项目,也可以用usermod命令修改已经创建的用户信息,如用户的UID、主组群、附属组群、默认shell等。usermod命令具体的参数及作用见表3-4。3.1.1添加、修改与删除用户的命令【例3-5】修改ww账户的过期时间为2018年5月7日,再进行登录测试。rootfishyoung#dateSatApr712:39:59CST2018rootfishyoung#usermod-e2018-05-07ww/修改过期时间rootfishyoung#

15、sshww192.168.244.128登录测试ww192.168.244.128spassword:/输入ww密码wwfishyoung3.1.1添加、修改与删除用户的命令【例3-6】修改ww账户的UID、GID及附属组群,同时转移ww账户的家目录到/home/wwhome目录,并进行登录测试。3.1.1添加、修改与删除用户的命令(4)userdel命令用来删除用户,该命令操作的语法格式为:userdel-r用户账户名“-r”为可选项,若带上该参数,则在删除该账户的同时一并删除该账户对应的主目录。【例3-7】删除之前创建的zs、ls、ww账户及其家目录。rootfishyoung#tail-

16、4/etc/passwdfishyoung:x:1000:1000:/home/fishyoung:/bin/bashzs:x:1001:1001:/home/zs:/bin/bashls:x:1111:1001:/home/lshome:/sbin/nologinww:x:2222:1000:/home/wwhome:/bin/bashrootfishyoung#ls/homefishyounglshomewwhomezsrootfishyoung#userdel-rfzs/强制删除账户及其家目录rootfishyoung#userdel-rflsrootfishyoung#userdel-

17、rfwwrootfishyoung#ls/homefishyoungrootfishyoung#3.1.1添加、修改与删除用户的命令每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,该用户组在创建用户时同时创建。用户组的管理涉及用户组的添加、修改和删除。组的添加、修改和删除实际上就是对/etc/group文件的更新。3.1.2添加、修改与删除用户组的命令(1)groupadd命令用来增加一个新的用户组,该命令操作的语法格式为:groupadd-g用户组groupadd命令在创建用户组时,可以

18、通过“-g”参数来指定GID号。【例3-8】增加两个新组groupA和groupB。rootfishyoung#groupaddgroupArootfishyoung#groupadd-g2222groupBrootfishyoung#tail-3/etc/groupfishyoung:x:1000:groupA:x:1001:groupB:x:2222:rootfishyoung#用命令向系统中增加了一个新组groupA,新组的组标识号是在当前已有的最大组标识号的基础上加1,另外用命令向系统中增加了一个新组groupB,同时指定新组的组标识号为2222。3.1.2添加、修改与删除用户组的命令

19、(2)groupmod命令用来修改用户组的属性,该命令操作的语法格式为:groupmod参数选项用户组groupmod命令修改已经创建的用户组信息,如用户组的GID、用户组名等。groupmod命令具体的参数及作用见表3-5。3.1.2添加、修改与删除用户组的命令【例3-9】新增两个用户组groupA和groupB。rootfishyoung#groupaddgroupArootfishyoung#groupadd-g2222groupBrootfishyoung#tail-3/etc/groupfishyoung:x:1000:groupA:x:1001:groupB:x:2222:root

20、fishyoung#用命令向系统中增加了一个新组groupA,新组的组标识号是在当前已有的最大组标识号的基础上加1,另外用命令向系统中增加了一个新组groupB,同时指定新组的组标识号为2222。3.1.2添加、修改与删除用户组的命令【例3-10】修改组groupA的GID号为3333和groupB的组名为NewgroupB。rootfishyoung#groupmod-g3333groupArootfishyoung#groupmod-nNewgroupBgroupBrootfishyoung#tail-3/etc/groupfishyoung:x:1000:groupA:x:3333:Ne

21、wgroupB:x:2222:rootfishyoung#3.1.2添加、修改与删除用户组的命令(3)groupdel命令用来删除用户组,该命令操作的语法格式为:userdel参数选项用户账户名【例3-11】删除上述创建的groupA和NewgroupB两个用户组。rootfishyoung#tail-3/etc/groupfishyoung:x:1000:groupA:x:3333:NewgroupB:x:2222:rootfishyoung#groupdelgroupArootfishyoung#groupdelNewgroupBrootfishyoung#tail-3/etc/group

22、postdrop:x:90:postfix:x:89:fishyoung:x:1000:rootfishyoung#3.1.2添加、修改与删除用户组的命令3.2文件权限及归属文件是操作系统用来存储信息的基本结构,是一组信息的集合。与其他操作系统相比,Linux系统最大的不同点是没有“扩展名”的概念,也就是说文件的名称和该文件的种类并没有直接的关联。例如,1.txt可能是一个运行文件,1.exe也有可能是一个文本文件,甚至可以不使用扩展名。在Linux系统中,如果文件名以“.”开始,表示该文件为隐藏文件,需要使用“ls-a”命令才能显示。3.2文件权限及归属一个Linux目录或者文件都会有一个所

23、属主(user)和所属组(group)。所属主是指文件的拥有者,而所属组是指该文件的所属主所在的一个组。Linux这样设置文件属性的目的是保证文件的安全。例如,1.txt文件的所属主是zs,而2.txt文件的所属主是ls,那么ls是不能查看1.txt文件的,相应的zs也不能查看2.txt文件。有时我们也会有这样的需求,即使一个文件同时让zs和ls来查看,这如何实现呢?这时,先创建一个群组shares,让zs和ls同属于shares组,然后建立一个文件3.txt,且其所属组为shares,那么zs和ls都可以访问3.txt文件。Linux文件属性不仅规定了所属主和所属组,还规定了所属主、所属组及

24、其他用户(others)对该文件的权限,可以通过“ls-l”命令来查看这些属性。3.2.1文件的所属主与所属组在当前目录下用touch命令创建一个普通文件2.txt,用mkdir命令创建一个BB目录,用ln命令为2.txt创建软链接到BB目录里,再用“ls-l”命令查看刚才创建的3个文件,代码如下。rootfishyoung#touch2.txtrootfishyoung#mkdirBBrootfishyoung#ln-s/2.txtBBrootfishyoung#ls-l2.txt;ls-ldBB;ls-lBB/2.txt-rw-r-r-.1rootroot0Apr715:422.txtDr

25、wxr-xr-x.2rootroot19Apr715:43BBlrwxrwxrwx.1rootroot11Apr715:43BB/2.txt-/root/2.txtrootfishyoung#3.2.2Linux文件属性及用户权限详解上面列出了3个文件的详细信息,共分7列,所列信息的含义如图3-1所示。3.2.2Linux文件属性及用户权限详解(1)第1列:文件类型权限,包含文件所属类型及用户对该文件的权限。第1列共11位,有的文件是10位,即没有最后面的一位“.”(此位与selinux和acl有关)。第1位用来描述该文件的类型,有“-”“d”“l”“b”“c”“s”等。a.“-”表示该文件为

26、普通文件。b.“d”表示该文件为目录。c.“l”表示该文件为软链接文件。d.“b”表示该文件为块设备,如/dev/sda。e.“c”表示该文件为串行端口设备,如键盘、鼠标等。f.“s”表示该文件为套接字文件(socket),用于进程间通信。3.2.2Linux文件属性及用户权限详解后边的9位,每3位为一组,均是“r”“w”“x”三个参数的组合,其中“r”代表可读,“w”代表可写,“x”代表可执行。前三位为所属主(user,u)的权限,中间3位为所属组(group,g)的权限,最后3位为其他非本群组(others,o)的权限。a.“-rw-r-r-.”代表该文件为普通文件,文件拥有者可读可写不可

27、执行,文件所属组可读不可写不可执行,其他用户可读不可写不可执行。b.“drwxr-xr-x.”代表该文件为目录。文件拥有者可读可写可执行,文件所属组可读不可写可执行,其他用户可读不可写可执行。对于一般文件来说,权限比较容易理解:“可读”表示能够读取文件的实际内容;“可写”表示能够编辑、新增、修改、删除文件的实际内容;“可执行”则表示能够运行一个脚本程序。但是,对于目录文件来说,“可读”表示能够读取目录内的文件列表;“可写”表示能够在目录内新增、删除、重命名文件;而“可执行”则表示能够进入该目录。3.2.2Linux文件属性及用户权限详解文件的读、写、执行权限可以简写为rwx,也可分别用数字4、

28、2、1来表示,文件所属主、所属组及其他用户权限之间无关联,具体见表3-6。3.2.2Linux文件属性及用户权限详解文件权限的数字法表示基于字符表示(rwx)的权限计算而来,其目的是简化权限的表示。例如,若某个文件的权限为7,则代表可读、可写、可执行(4+2+1);若权限为6,则代表可读、可写(4+2)。现在有这样一个文件,其所有者拥有可读、可写、可执行的权限,其文件所属组拥有可读、可写的权限,而其他人只有可读的权限。那么,该文件的权限就是rwxrw-r-,用数字法表示即为764。Linux系统的文件权限相当复杂,但是用途很广泛,建议读者把它彻底搞清楚之后再学习后面的内容。3.2.2Linux

29、文件属性及用户权限详解练一练:请分别计算数字表示法744、632、453、751所对应的字符表示法,然后把rwxrw-rw-、rw-rw-wx、rw-r-xr-转换成数字表示法。3.2.2Linux文件属性及用户权限详解(2)第2列:链接占用的节点(node)。普通文件创建了硬链接后会增加节点数,当为目录时,节点数和该目录下的目录数有关(包括“.”和“.”)。(3)第3列:该文件的所属主。(4)第4列:该文件的所属组。(5)第5列:该文件的大小,以字节(Byte)为单位。(6)第6列:该文件最后一次被修改的日期,依次为月份、日期及时间,也就是所谓的Mtime。(7)第7列:该文件的文件名。3.

30、2.2Linux文件属性及用户权限详解(1)chown命令用来更改文件的所属主和所属组,该命令操作的语法格式为chown-R账户名:组名文件名如果文件名是目录,并要求同时更改目录下的所有文件,则需要加入“-R”参数递归更改。3.2.3文件权限的更改(2)chmod命令用来改变用户对文件的读写执行权限,该命令操作的语法格式为:chmod-Rijk文件名(这里的“ijk”表示数字)“-R”参数的作用等同于chonw命令中的“-R”参数,也表示递归更改。在Linux系统中,为了方便地更改文件权限,常使用数字代替“rwx”;同时chmod还支持使用“rwx”的方式来设置权限,可以使用u、g、o来代表u

31、ser、group、others的属性,a则代表all(全部),可以针对u、g、o、a增加或者减少某个权限(读、写或执行)。3.2.3文件权限的更改(3)一个目录的默认权限为755,而一个普通文件的默认权限为644,这里就涉及umask命令,该命令操作的语法格式为:umaskijk(这里的“ijk”表示数字)rootfishyoung#umask/查看umask值0022umask预设值为0022,其表示什么含义呢?先来看一下两条规则:若用户建立为普通文件,预设没有可执行权限,即666(-rw-rw-rw-);若用户建立为目录,预设拥有所有权限,即777(drwxrwxrwx)。umask数值

32、代表的含义是两条规则中默认值需要减去的权限,所以:普通文件的权限为“rw-rw-rw-”-“-w-w-”=“rw-r-r-”;目录的权限为“rwxrwxrwx”-“-w-w-”=“rwxr-xr-x”。3.2.3文件权限的更改umask的值是可以进行自定义的。例如:rootfishyoung#touch3.txt;mkdirCC/新建普通文件和目录rootfishyoung#ll3.txt;ll-dCC/查看详细信息(权限)-rw-r-r-.1rootroot0Apr719:403.txtDrwxr-xr-x.2rootroot6Apr719:40CCrootfishyoung#umask03

33、3/更改预设umask值rootfishyoung#touch4.txt;mkdirDD/再新建普通文件和目录rootfishyoung#ll4.txt;ll-dDD/查看详细信息(权限)-rw-r-r-.1rootroot0Apr719:414.txt/权限是否为644Drwx-r-.2rootroot6Apr719:41DD/权限为744rootfishyoung#3.2.3文件权限的更改可能有的人会对上面的权限644有疑惑,文件默认权限减去umask值为666-033=633,那么4.txt的权限为什么是644呢?关于umask的计算,有时不建议换算成数字去做减法,如这里就体现了这种问题

34、。文件的实际权限为“rw-rw-rw-”-“-wx-wx”=“rw-r-r-”(644),如果是633权限(“rw-wx-wx”),表示经过减法运算后,之前存在的读权限没有了,反而增加了可执行权限。按照这种方式计算,对系统来说是非常危险的。3.2.3文件权限的更改3.3文件特殊权限Linux系统中的文件权限有很多种,最普通的权限是读(r)、写(w)和执行(x),但是在一个非常强调系统安全性的操作系统中,文件如果只具有这三种基本权限显然是远远不够的。疑问:我们知道,/etc/passwd和/etc/shadow存放着用户的账户和密码信息。从它们的权限看,普通用户(others)并不具有对它们修改

35、的权限。但实际上,普通用户是可以通过passwd命令来修改自己的密码的。这是为什么呢?3.3文件特殊权限需求1:一个工程组(IT)里有两个成员G1和G2,共同完成一个项目。为了便于彼此之间的合作,建立一个大家可以共享的目录/Test。正常情况下,若G1在/Test下创建了一个文件或目录,G2是无法修改的,这就会导致项目合作的不便。我们希望每个组员创建的文件其他组员都可以去修改,这样才能达到团队合作的目的。那么,如何解决这个需求呢?需求2:系统/Test2目录是对所有用户开放共有的目录,且所有用户都拥有读写权限,若A用户在/Test2中创建了一个文件,B用户可能会去删掉这个文件(B用户有权限),

36、这肯定是不好的。普通用户在该目录下创建了文件或目录,那么只有他自己和root用户可以删除、重命名、移动它,其他用户没有权力这么做。如何解决这个需求呢?为了解决以上疑问和需求,Linux系统设有三种特殊的文件权限,即SUID、SGID和SBIT(stickybit)。3.3文件特殊权限如果在一个可执行文件上应用SUID权限,那么任何人在执行该命令时会临时得到所属主的权限。对于SUID权限还需要注意以下几点。(1)SUID权限仅对命令(可执行文件或二进制文件)有效。(2)执行者对于该命令需要具有x的权限。(3)本权限仅在执行该命令的过程中有效。(4)执行者将具有该命令所属主的权限。3.3.1SUI

37、D下面通过实际的操作来回答最开始所提出的“疑问”,利用fishyoung用户更改自己的密码,以及查看/etc/passwd和/etc/shadow文件内容(代码见下页)。3.3.1SUID3.3.1SUID3.3.1SUIDLinux系统中所有用户的密码均存放在文件/etc/shadow中(r-),这个权限代表只有root用户才对该文件有读权限同时可以强制写入。但实际情况是每一个普通用户(fishyoung)都能通过执行“passwd用户名”命令更改自己的密码,而密码信息则是写入/etc/shadow文件中的,也就是说普通用户对/etc/shadow有写的权限。这似乎和查看的该文件权限矛盾了。

38、事实上,就是因为/usr/bin/passwd命令的权限问题,该命令(二进制文件)的权限为“rwsr-xr-x”,其中user位中x的位置变成了s,这就是SUID权限,表示当普通用户在执行passwd命令时临时拥有了root的权限,所以普通用户可以修改自己的密码。如果之前不存在x权限,而加入了s权限,则user位中x的位置变成S。而/usr/bin/cat这个二进制文件最开始是不能读取/etc/shadow文件的,通过root用户更改权限后,也可以读取/etc/shadow文件了。3.3.1SUIDSGID权限既可以针对命令设置,也可以针对目录设置。如果是针对命令,则与SUID类似,只是此时执

39、行者获得的是命令所属组的权限,这种情况较少用到,用得较多的是针对目录的设置。如果在一个目录上应用SGID权限,那么任何人在该目录中创建的文件都会自动继承目录本身的所属组。下面通过实际的操作来完成最开始所提出的“需求1”。先创建G1和G2两个账户,并加入同一个工程组(IT)中,再进行相应的测试(代码见下页)。3.3.2SGID3.3.2SGID3.3.2SGID先将G1和G2加入同一个组IT,将/Test目录的所有组也改为IT,再执行命令“chmodg+s/Test”给/project目录加上SGID权限。然后G1对G2在/Test目录下创建的文件或目录也能进行相应的操作。如果之前不存在x权限而

40、加入了s权限,则group位中x的位置变成S。3.3.2SGIDSBIT权限只针对目录有效,如果在一个目录上应用SBIT权限,那么仅root用户和该目录下的文件拥有人才能删除该文件。下面通过实际的操作来完成最开始所提出的“需求2”(代码见下页)。3.3.3SBIT(StickyBit)3.3.3SBIT(StickyBit)3.3.3SBIT(StickyBit)先创建/Test2目录,将/Test2目录的权限设置为777,用户在这个目录下创建的文件相互可以删除,再加入SBIT权限,不能相互删除,达到想要的效果。如果之前不存在x权限,而加入t权限,则other位中x的位置变成T。3.3.3SB

41、IT(StickyBit)上面介绍了三种特殊权限的功能,那么如何配置文件使其具有这些特殊权限呢?可以采用数字方式,也可以采用字符的方式。如果采用数字方式,则在三位基本权限数字前再加一位代表特殊权限。其中,4代表SUID,2代表SGID,1代表SBIT。如果采用字符方式,由于SUID是针对所属主的,所以在所属主的权限栏位上将x改为s;SGID是针对所属组的,所以在所属组的权限栏位上将x改为s;SBIT是针对其他人的,所以在其他人(others)的栏位上将x改为t。在Linux系统中,对文件权限有很多要求,也定义了很多很复杂的文件权限,通过这些权限的定义,实现了对文件的保护。3.3.3SBIT(S

42、tickyBit)3.4文件隐藏属性与访问控制列表Linux系统中的文件除了具备一般权限和特殊权限之外,还有一种隐藏权限,即被隐藏起来的权限,默认情况下不能直接被用户发觉。(1)chattr命令用来设置文件的隐藏权限,该命令操作的语法格式为:chattr参数文件3.4.1文件隐藏属性chattr命令通过在命令后面追加“+参数”“-参数”来达到添加、移除隐藏功能的作用。chattr命令中可供选择的隐藏权限参数非常丰富,两个常用的参数及其作用见表3-7。3.4.1文件隐藏属性(2)lsattr命令用来显示文件的隐藏权限,该命令操作的语法格式为:lsattr参数文件在Linux系统中,文件的隐藏权限

43、必须使用lsattr命令来查看。3.4.1文件隐藏属性前文所讲解的一般权限、特殊权限、隐藏权限其实都是针对某一类用户设置的。如果希望对某个指定的用户进行单独的权限控制,就需要用到文件的访问控制列表(ACL)了。通俗来讲,基于普通文件或目录设置ACL其实就是针对指定的用户或用户组来设置文件或目录的操作权限。另外,如果针对某个目录设置了ACL,则目录中的文件会继承其ACL;若针对文件设置了ACL,则文件不再继承其所在目录的ACL。3.4.2访问控制列表普通用户是没有权限进入/root目录的,下面来学习setfacl和getfacl命令,使得我们可以定制用户或者用户组在文件/目录上的权限。(1)se

44、tfacl命令用来管理设置文件/目录的ACL规则,该命令操作的语法格式为setfacl参数文件名setfacl命令可以针对单一用户或用户组、单一文件或目录来进行读、写、执行权限的控制。其中,针对目录文件需要使用“-R”递归参数;针对普通文件则使用“-m”参数;如果想要删除某个文件的ACL,则可以使用“-b”参数。3.4.2访问控制列表(2)getfacl命令用来显示文件上设置的ACL信息,该命令操作的语法格式为getfacl文件名3.4.2访问控制列表3.5su命令与sudo服务在真实的生产环境中,通常是根据实际需求使用普通用户操作的,不建议直接使用root用户,需要提权时,可以通过“su”或

45、“su-”命令来切换用户,或者通过sudo服务来解决,sudo的优点在于只需输入当前用户的密码即可。3.5su命令与sudo服务在登录Linux系统并启动一个bashShell时,默认情况下bash会在若干个文件中查找环境变量的设置,这些文件可统称为系统环境变量。bash检查的环境变量文件的情况取决于系统运行Shell的方式,一般有以下三种(这里仅讨论前两种)。(1)通过系统用户登录后默认运行的Shell(loginShell)。(2)非登录交互式运行Shell(non-loginShell)。(3)执行脚本运行非交互式Shell。3.5.1su命令当用户登录Linux系统时,Shell会作为

46、登录Shell(loginShell)启动,此时的登录Shell加载环境变量的顺序为/etc/profile/.bash_profile/.bashrc/etc/bashrc用户登录系统后首先会加载/etc/profile全局变量文件,这是Linux系统上默认的Shell主环境变量文件,系统上每个用户登录都会加载这个文件。之后开始运行$HOME/.bash_profile(用户环境变量文件),在这个文件中,又会通过if语句去判断$HOME/.bashrc是否存在(用户环境变量文件),如果有则执行,如果没有则不执行。在$HOME/.bashrc文件中又会通过if语句判断/etc/bashrc是否

47、存在(全局环境变量文件),如果有则执行,如果没有则不执行。3.5.1su命令如果用户的Shell不是登录时启动的,非登录Shell(non-loginShell)只会加载$HOME/.bashrc(用户环境变量文件),并会通过if语句去判断/etc/bashrc是否存在(全局环境变量文件),如果有则执行,如果没有则不执行。这里仅列出/.bash_profile中的代码并进行分析。rootfishyoung#cat.bash_profile#.bash_profile#Getthealiasesandfunctionsif-f/.bashrc;then/判断家目录中是否存在.bashrc文件./

48、.bashrc/如果存在则执行fi#UserspecificenvironmentandstartupprogramsPATH=$PATH:$HOME/binexportPATHrootfishyoung#3.5.1su命令讲述系统启动执行环境变量的顺序,更有助于我们理解和掌握“su”和“su-”命令的区别。(1)“su”命令用来交互地更改UID和GID,该命令操作的语法格式为su用户名su命令开启一个子进程,成为新的UID和赋予用户存取与这个UID相关联的所有文件的存取权限。因此,出于安全的考虑,用户在实际转换身份时,会被要求输入这个用户账号的密码。如果从root用户切换到其他用户,那么不需

49、要输入密码。如果没有用户名参数,su命令将转换为root账号。想要回到原先的用户身份,只需要使用exit命令退出使用su命令而生成的新的对话进程即可。3.5.1su命令(2)“su-”命令也是用来交互地更改UID和GID的,该命令操作的语法格式为:su-用户名与“su”命令不同的是,“su-”命令好比用户重新通过登录过程获得的环境变量。3.5.1su命令单纯使用su切换到root用户,读取环境变量的方式是non-loginShell,这种方式下很多变量都不会改变,尤其是PATH,所以root的很多命令都只能用绝对路径来执行。这种方式只是切换到root的身份,而“su-”这种方式是loginSh

50、ell方式,是先以root身份登录然后执行别的操作。也就是说su只能获得root的执行权限,不能获得环境变量;而“su-”是切换到root并获得root的环境变量及执行权限。3.5.1su命令如果有很多人管理主机,那么很多人都要知道root的密码吗?可能有人只是单纯地进行一次root操作,这时使用su方式就不是很好。root密码越少人知道越安全,这时就需要sudo方式。3.5.1su命令相比于su切换身份需要用户的密码,sudo只需要自己的密码,就可以以其他用户的身份来执行命令,sudo的执行流程如下。(1)当用户执行sudo时,系统在/etc/sudoers文件中查找该用户是否有执行sudo

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com