Linux学习笔记:文件权限 知识点小结


          Linux文件的基本权限有9个,分别是user,group,others三种身份各自的三种权限:r (read,读),w (write,写),x (execute,执行)。

       其中,可以用数字来代表各个权限:

               r : 4   

              w : 2

               x : 1

        目录与文件的权限意义:

        1):文件是实际存放数据的地方,包括一般文本文件、数据库内容文件、二进制可执行文件等。因此权限对于文件来说,它的意义如下:

                 r(read):可读取此文件的实际内容,如读取文本文件的文字内容等。

                 w(write):可以编辑,新增或者是修改该文件的内容(但不可以删除该文件)。

                 x(execute):该文件可以被系统执行。

                在Linux下,文件能否被执行是由是否具有'x'权限来决定的,跟文件名是没有绝对的关系的。


        2):目录主要的内容是记录文件名列表,文件名与目录有很重要的的关联。因此,权限对于目录的意义如下:

                 r(read contents in directory):表示具有读取目录结构列表的权限,当拥有一个目录的'r'权限时,可以查询该目录下的文件名数据。

                 w(modify contents of directory):表示具有更改该目录结构列表的权限,也就是说具有以下权限:

                                   1> 在该目录下新建新的文件或目录。

                                   2> 在该目录下删除已经存在的文件与目录(不论该文件权限为何)

                                   3> 在该目录下将已存在的文件或目录进行重命名。

                                   4> 转移该目录内的文件或目录位置。

                 x(access directory):表示可以执行该目录,即拥有此权限的用户可以进入该目录成为工作目录( work directory ,所谓的工作目录就是用户目前所在的目录)。

                        工作目录对于命令的执行是很重要的,如果用户对于某个目录没有'x'权限,该用户就无法切换到该目录下,也就无法执行该目录下的命令,即使用户拥有该目录的'r'和'w'权限。

              在Linux下,一个文件能否被用户删除,与用户对该文件的权限并没有关系,只与用户对于该文件所在目录的权限有关,如果用户拥有该文件所在目录的'w'权限,则无论该文件的权限为何,用户都可以删除、移动或重命名这个文件。


                          改变文件权限的命令:chmod

                          chmod命令有两种更改文件权限的方式:

                1> 数字类型改变文件权限:

                     上文提到文件的权限可以用数字代表,故文件的9个基本权限可以用三位数字来表示,比如一个文件的权限为 "rwxr-xr--" ,此文件所对应三种身份的权限分别为,user=rwx=4+2+1=7,group=r-x=4+0+1=5,

others=r--=4+0+0=4。

                    如果想要使用chmod改变文件的权限,可以用数字指定需要设置的权限,如 "rwxrw-r--" 可以用数字764表示,所以命令应写作:chmod 764 文件名。

                2> 符号类型改变文件权限:

                      类似于数字类型,基本权限的三种身份可以用符号来代替:user=u,group=g,others=o,此外可以用a( all )来表示全部身份。同理,基本权限可以用r ,w,x表示。然后可以用下表的方式使用命令:


chmodu
g
o
a
  + (加入)
  -  (除去)
  = (设置)
r
w
x
文件名

                                    假如想要设置一个文件(test)的权限为 "rwxrw-r--" 时,可以使用命令:chmod u=rwx,g=rw-,o=r-- test

如果想要将该文件的权限改为 "rw-r--rw-" 可使用命令:chmod u-x,g-w,o+w test      如果想要将该文件权限改为

"r--r--r--" 可使用命令:chmod a-w test   设置即可。


 

       默认权限:

                             在Linux下,新建一个文件的初始权限与umask有关,umask就是指定 "目前用户在新建文件或目录的权限默认值" 可以调用umask命令来查看目前系统设置的权限默认值(加上-S参数可以以符号形式显示)。


                  需要注意的是,umask的分数值指的是 "需要除去的权限" ,而umask -S 显示的符号形式指的是"目前新建文件的默认权限" ,每当新建一个文件时,系统会对文件的初始指定权限 (比如open函数使用O_CREAT参数时需要指定新建文件的初始权限) 根据默认权限进行修改,修改方式为: "初始权限&~umask" 。

                  例如新建文件的指定权限为 "0777" 而当前的umask为 "0002",则新建文件的实际权限为 "0775" ,即进行 "0777&~0002" 位运算操作。



        隐藏权限:

                             

                  当我们使用ls命令查看 /tmp目录和 /usr/bin/passwd 的属性的时候会发现,这两个文件的权限有些与众不同


                   从上图可以看到,两个文件的文件名被加上了颜色,同时 /tmp 目录的others身份的 'x' 权限变成了 't' ,而/usr/bin/passwd 文件的user身份的 'x' 权限变成了 's' ,这就说明这两个文件的权限中含有特殊权限,也即我们要说的隐藏权限:


                   在Linux下,除了r,w,x三个权限以外还有三种特殊的文件权限:SUID,SGID,SBIT。


                   SetUID

                               当 's' 标志出现在文件user身份的x权限位上,此时就被称为Set UID,简称SUID的特殊权限,对一个文件来说,SUID有以下的限制与功能:

                   1> SUID权限仅对二进制程序 (binary program ) 有效。

                   2> 执行者对于该程序需要具有x的可执行权限。

                   3> 本权限仅在执行该程序的过程中 (run-time) 有效。

                   4> 执行者将具有该程序所有者的权限。

                               总的来说,如果一个二进制程序拥有SUID权限,当某用户运行此程序,只要该用户拥有对此程序的 'x' 权限,则在执行该程序的过程中都将暂时的获得该程序文件所有者的权限。

                   例如上文中的 /usr/bin/passwd 文件就拥有SUID权限,此文件是一个二进制程序,也就是用户用来修改密码的命令,用户的密码都保存在 /etc/shadow 文件中,可以用ls命令查看此文件的属性:

                                 从图中可以看到,此文件只有root用户可以强制修改其中的数据,但是在日常使用中,每个用户都可以通过passwd命令修改用户密码,这就是因为 passwd 拥有SUID权限,在 passwd 程序的运行过程中,调用此命令的用户将会暂时获得root的权限,所以 /etc/shadow 可以被普通用户所执行的 passwd 所修改,所对应的可以用 cat 命令来对比,因为 cat 命令没有SUID权限,所以普通用户在执行 cat 命令时,会出现权限不够,无法查看的情况。


                               

                                 SetGID

                                 当 's' 标志出现在文件group身份的x权限位时,说明该文件在用户组中Set GID,简称SGID。与SUID不同的是,SGID可以针对文件或目录来设置。 如果是对于文件来说,SGID拥有如下功能:

                    1> SGID对二进制程序有效。

                    2> 程序执行者对于该程序来说,需要拥有同用户组的 'x' 权限。

                    3> 执行者在执行的过程中将会获得该程序用户组的权限。

                    SGID对于文件的功能类似于SUID。但除了二进制程序之外,SGID也能够用在目录上,当一个目录设置了SGID的权限后,它将拥有如下功能:

                    1> 用户如果对此目录具有 'r' 和 'x' 的权限时,该用户能够进入此目录。

                    2> 用户在此目录下的有效用户组 (effective group) 将会变成该目录的用户组。

                    3> 若用户在此目录下拥有 'w' 权限 (可以新建文件) ,则用户所创建的新文件的用户组与此目录的用户组相同。

                   SGID对于目录的功能在多用户开发项目的时候将会非常有用。



                   Sticky Bit

                   当 't' 标志出现在目录的others身份的x权限位时,说明该目录拥有SBIT权限。目前SBIT只对目录有效,SBIT对于目录的规则及作用如下:

                  1> 用户对于此目录拥有 'w' 和 'x' 权限,即具有写入的权限。

                  2> 当用户在该目录下创建文件或目录时,仅有自己与root才有权力删除该文件。

                  换句话说:当用户在某个目录下是用户组或其他人的身份,并且拥有该目录的 'w' 权限,那么该用户在此目录下可以对任何人新建的文件或目录进行删除删除,重命名,移动等操作。但如果此目录加上了SBIT权限时,该用户就只能够针对自己创建的文件或目录进行删除,重命名,移动等操作,而无法删除其他人的文件 (其他用户也是如此,所以说在设置了SBIT权限的目录下任何用户所新建的文件或目录只有自己和root才有权力删除)。

                  举个例子说明:/tmp 这个目录本身的权限是 "drwxrwxrwt" ,在这样的权限下,任何用户都可以在 /tmp 目录下添加,修改文件,但是只有文件或目录的创建者及root可以删除自己所创建的文件或目录,如果用户A在 /tmp 目录下新建了test文件,并将test文件的权限改为"777",则另一个用户B可以对test进行修改,但是却无法删除test。



                            SUID/SGID/SBIT权限的设置:

                 在上文的默认权限部分,使用umask命令显示的默认权限可以看到显示的权限位是4位,后面3位对应user,group,others三种身份,而第1位就是特殊权限位,同样可以用数字表示:

                  SUID:4

                  SGID:2

                  SBIT:1

                              特殊权限的设置类似于基本权限,也可以使用chmod命令来修改,例如要将一个文件的权限设置为

"-rwsr-xr-x" 时,由于 's' 出现在文件所有者权限位中,所以表示的时SUID权限,则需要将4添加在基本权限之前,即"4755",也就是使用 chmod 4755 filename 来设置。

                  需要注意的是:有时会出现 大写的 'S' , 'T' 权限出现,例如 使用 chmod 7666 filename 命令产生的文件权限为:"-rwSrwSrwT" ,很容易就可以看出,该文件的三种身份都不具备 'x' 权限,而这种大写的 'S' 'T' 就是表示此文件没有执行的权限,也即表示"空的",比如SUID的作用是在该文件执行的时候具有文件所有者的权限,但是文件所有者都没有执行的权限,又哪里来的权限给他人使用?所以这里说 'S' 'T' 代表的是空。














【基于Python的大麦网自动抢票工具的设计与实现】 随着互联网技术的发展,网络购票已经成为人们生活中不可或缺的一部分。尤其是在文化娱乐领域,如音乐会、演唱会、戏剧等活动中,热门演出的门票往往在开售后瞬间就被抢购一空。为了解决这个问题,本论文探讨了一种基于Python的自动抢票工具的设计与实现,旨在提高购票的成功率,减轻用户手动抢票的压力。 Python作为一种高级编程语言,因其简洁明了的语法和丰富的第三方库,成为了开发自动化工具的理想选择。Python的特性使得开发过程高效且易于维护。本论文深入介绍了Python语言的基础知识,包括数据类型、控制结构、函数以及模块化编程思想,这些都是构建抢票工具的基础。 自动化工具在现代社会中广泛应用,尤其在网络爬虫、自动化测试等领域。在抢票工具的设计中,主要利用了自动化工具的模拟用户行为、数据解析和定时任务等功能。本论文详细阐述了如何使用Python中的Selenium库来模拟浏览器操作,通过识别网页元素、触发事件,实现对大麦网购票流程的自动化控制。同时,还讨论了BeautifulSoup和requests库在抓取和解析网页数据中的应用。 大麦网作为国内知名的票务平台,其网站结构和购票流程对于抢票工具的实现至关重要。论文中介绍了大麦网的基本情况,包括其业务模式、用户界面特点以及购票流程,为工具的设计提供了实际背景。 在系统需求分析部分,功能需求主要集中在自动登录、监控余票、自动下单和异常处理等方面。抢票工具需要能够自动填充用户信息,实时监控目标演出的票务状态,并在有票时立即下单。此外,为了应对可能出现的网络延迟或服务器错误,工具还需要具备一定的错误恢复能力。性能需求则关注工具的响应速度和稳定性,要求在大量用户同时使用时仍能保持高效运行。 在系统设计阶段,论文详细描述了整体架构,包括前端用户界面、后端逻辑处理以及与大麦网交互的部分。在实现过程中,采用了多线程技术以提高并发性,确保在抢票关键环节的快速响应。此外,还引入了异常处理机制,以应对网络故障或程序错误。 测试与优化是确保抢票工具质量的关键步骤。论文中提到了不同场景下的测试策略,如压力测试、功能测试和性能测试,以验证工具的有效性和稳定性。同时,通过对抢票算法的不断优化,提高工具的成功率。 论文讨论了该工具可能带来的社会影响,包括对消费者体验的改善、对黄牛现象的抑制以及可能引发的公平性问题。此外,还提出了未来的研究方向,如增加多平台支持、优化抢票策略以及考虑云服务的集成,以进一步提升抢票工具的实用性。 本论文全面介绍了基于Python的大麦网自动抢票工具的设计与实现,从理论到实践,从需求分析到系统优化,为读者提供了一个完整的开发案例,对于学习Python编程、自动化工具设计以及理解网络购票市场的运作具有重要的参考价值。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值