【Linux】权限管理

目录

一、基础概念

二、文件类型与访问权限

(一)文件类型

(二)访问权限

三、文件权限操作

(一)权限修改操作chmod

(二)chown与chgrp

(三)umask

(四)file

(五)粘滞位


一、基础概念

        权限:某客体目标对象是否允许主体在其上进行操作。需注意两点:(1)客体目标是否具体进行该操作的功能;(2)客体是否允许主体进行操作。

        当我们在Linux中对本目录的文件进行列出时,第一列的字符标志表明了该文件的权限。

        其中第一个字符表明了该文件的类型,剩余的字符三个为一组,分别表明了拥有者、所属组以及其他用户的权限。

二、文件类型与访问权限

(一)文件类型

        在Linux系统中,文件可以分为目录文件d,普通文件-,链接文件l,块文件b,管道文件p,字符文件c,套接字文件s等。

        例如,创建一个目录文件,由图可知该文件的标志符号位d。

(二)访问权限

        对于一个普通文件来说,其具有读、写和执行的操作权限。对于一个目录文件来说,读权限是限制用户是否在该目录里拥有列出所有下属文件的信息的权限;写权限是限制用户是否拥有在该目录里创建文件的权限;执行权限是限制用户是否拥有进入该目录的权限。

三、文件权限操作

(一)权限修改操作chmod

        可通过文件的拥有者身份或者root身份对文件进行设置权限。

        格式:chmod [参数] 权限 文件名

        例如使拥有者失去写权限,使所属组拥有执行权限。(拥有者u,所属组g,其他用户o,所有用户a)

        

(二)chown与chgrp

        chown修改文件的拥有者,chgrp修改文件的所属组。

        格式:chown [参数] 用户名 文件名

        

(三)umask

        查看或者修改文件掩码,设置创建文件的初始权限。

        新建目录默认权限777,新建文件默认权限666。

        这里的umask为0002,其中第一个0表示该数为八进制数,剩下三个数字分别为拥有者,所属组和其他用户的权限掩码。当我们创建一个普通文件时,其初始权限为666,即拥有者,所属组和其他用户都拥有读写的权限。将初始权限666与权限掩码002进行异或,得到权限664,即拥有者有读写的权限,所属组有读写的权限,其他用户有读的权限,如图所示。

(四)file

        查看文件的类型。

      

(五)粘滞位

        当我们在公共目录下创建的文件,即使我们可以设置该文件的读写执行的权限,别人依然可以直接将该文件删除掉。这时可以用 root账号 为该公共目录设置粘滞位。

        在添加了粘滞位的目录下,只有(1)root管理员;(2)该目录的所有者;(3)该文件的所有者可以将该目录下的文件进行删除操作。

### PyCharm 打开文件显示全的解决方案 当遇到PyCharm打开文件显示全的情况时,可以尝试以下几种方法来解决问题。 #### 方法一:清理缓存并重启IDE 有时IDE内部缓存可能导致文件加载异常。通过清除缓存再启动程序能够有效改善此状况。具体操作路径为`File -> Invalidate Caches / Restart...`,之后按照提示完成相应动作即可[^1]。 #### 方法二:调整编辑器字体设置 如果是因为字体原因造成的内容显示问题,则可以通过修改编辑区内的文字样式来进行修复。进入`Settings/Preferences | Editor | Font`选项卡内更改合适的字号大小以及启用抗锯齿功能等参数配置[^2]。 #### 方法三:检查项目结构配置 对于某些特定场景下的源码视图缺失现象,可能是由于当前工作空间未能正确识别全部模块所引起。此时应该核查Project Structure的Content Roots设定项是否涵盖了整个工程根目录;必要时可手动添加遗漏部分,并保存变更生效[^3]。 ```python # 示例代码用于展示如何获取当前项目的根路径,在实际应用中可根据需求调用该函数辅助排查问题 import os def get_project_root(): current_file = os.path.abspath(__file__) project_dir = os.path.dirname(current_file) while not os.path.exists(os.path.join(project_dir, '.idea')): parent_dir = os.path.dirname(project_dir) if parent_dir == project_dir: break project_dir = parent_dir return project_dir print(f"Current Project Root Directory is {get_project_root()}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值