Linux——(关于权限常见的3个问题)

修改文件或目录的拥有者和所属组

1.1 chown指令

功能:修改文件的拥有者格式:chown 【参数】用户名 文件名实例:

[root@iZbp19b5lvg8xtpf1tzrenZ test]# lltotal 0-rwxr-x--- 1 root root 0 Apr 26 11:59 test.txt[root@iZbp19b5lvg8xtpf1tzrenZ test]# chown yui test.txt[root@iZbp19b5lvg8xtpf1tzrenZ test]# lltotal 0-rwxr-x--- 1 yui root 0 Apr 26 11:59 test.txt

可以看到,我成功地将拥有者从root更改为yui。请注意:无法将拥有者更改为不存在的用户。

[root@iZbp19b5lvg8xtpf1tzrenZ test]# chown hehe test.txtchown: invalid user: ‘hehe’[root@iZbp19b5lvg8xtpf1tzrenZ test]# lltotal 0-rwxr-x--- 1 yui root 0 Apr 26 11:59 test.txt

1.2 chgrp指令

功能:修改文件的所属组格式:chgrp 【参数】用户名 文件名

常见的权限三个问题

2.1 对应一个目录,如果要进入,需要什么权限?

为了回答这个问题,我们可以使用控制变量法。首先,我们需要切换到普通用户。

[yui@iZbp19b5lvg8xtpf1tzrenZ ~]$ whoamiyui[yui@iZbp19b5lvg8xtpf1tzrenZ ~]$ chmod 375 newdr[yui@iZbp19b5lvg8xtpf1tzrenZ ~]$ lltotal 8d-wxrwxr-x 2 yui yui 4096 Apr 25 19:56 newdr-rw-rw-r-- 1 yui yui    5 Apr 25 19:57 test.txt[yui@iZbp19b5lvg8xtpf1tzrenZ ~]$ cd newdr[yui@iZbp19b5lvg8xtpf1tzrenZ newdr]$ cd ..[yui@iZbp19b5lvg8xtpf1tzrenZ ~]$ chmod 575 newdr[yui@iZbp19b5lvg8xtpf1tzrenZ ~]$ lltotal 8dr-xrwxr-x 2 yui yui 4096 Apr 25 19:56 newdr-rw-rw-r-- 1 yui yui    5 Apr 25 19:57 test.txt[yui@iZbp19b5lvg8xtpf1tzrenZ ~]$ cd newdr[yui@iZbp19b5lvg8xtpf1tzrenZ newdr]$ cd ..[yui@iZbp19b5lvg8xtpf1tzrenZ ~]$ chmod 675 newdr[yui@iZbp19b5lvg8xtpf1tzrenZ ~]$ lltotal 8drw-rwxr-x 2 yui yui 4096 Apr 25 19:56 newdr-rw-rw-r-- 1 yui yui    5 Apr 25 19:57 test.txt[yui@iZbp19b5lvg8xtpf1tzrenZ ~]$ cd newdrbash: cd: newdr: Permission denied

通过控制变量的方法,我们发现进入目录所需的权限是x,即执行权限。

观察r与w的作用:

[yui@iZbp19b5lvg8xtpf1tzrenZ ~]$ chmod 377 newdr[yui@iZbp19b5lvg8xtpf1tzrenZ ~]$ cd newdr[yui@iZbp19b5lvg8xtpf1tzrenZ newdr]$ llls: cannot open directory .: Permission denied[yui@iZbp19b5lvg8xtpf1tzrenZ newdr]$ touch test.txt[yui@iZbp19b5lvg8xtpf1tzrenZ newdr]$ llls: cannot open directory .: Permission denied[yui@iZbp19b5lvg8xtpf1tzrenZ newdr]$ cd ..[yui@iZbp19b5lvg8xtpf1tzrenZ ~]$ chmod 577 newdr[yui@iZbp19b5lvg8xtpf1tzrenZ ~]$ cd newdr[yui@iZbp19b5lvg8xtpf1tzrenZ newdr]$ lltotal 0-rw-rw-r-- 1 yui yui 0 Apr 28 15:46 test.txt[yui@iZbp19b5lvg8xtpf1tzrenZ newdr]$ rm -f test.txtrm: cannot remove ‘test.txt’: Permission denied

总结:

x决定是否可以进入目录r决定是否可以查看文件属性信息w决定是否可以在目录下新建和删除文件

2.2 为什么我们创建的文件默认权限不是777

[yui@iZbp19b5lvg8xtpf1tzrenZ newdr]$ mkdir test[yui@iZbp19b5lvg8xtpf1tzrenZ newdr]$ lltotal 4drwxrwxr-x 2 yui yui 4096 Apr 28 15:49 test-rw-rw-r-- 1 yui yui    0 Apr 28 15:46 test.txt

我们可以看到,目录的默认权限为775,普通文件的默认权限为664。这是为什么呢?首先,我们要知道一个目录被创建出来天生就是要被进入、查看和修改的,因此目录的默认权限应该是777。普通文件则不一定需要执行权限,因此默认权限为666。但实际情况并不完全符合,这是因为在Linux下存在权限掩码,它可以定制文件创建时的默认权限。

2.2.1 关于Linux下的权限掩码指令 umask

功能:查看或修改文件的掩码格式:umask / umask 权限值说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。root用户默认权限掩码为0022,普通用户默认为0002。实例:普通用户

[yui@iZbp19b5lvg8xtpf1tzrenZ newdr]$ umask0002

root用户

[root@iZbp19b5lvg8xtpf1tzrenZ newdr]# whoamiroot[root@iZbp19b5lvg8xtpf1tzrenZ newdr]# umask0022

修改掩码

证件照制作小程序免费版 证件照制作小程序免费版

在线证件照系统是一套完善的冲印行业解决方案,致力于解决用户线上拍摄证件照,拍摄最美最标准证件照的使命。证件照免费版功能:后台统计:当天制作、当天新增、支持规格、近7日统计规格列表:筛选查看、编辑用户列表:筛选查看常见问题:筛选查看、新增、编辑、删除小程序设置:应用设置、流量主设置小程序跳转:筛选查看、新增、编辑、删除关注公众号:引导设置系统要求:系统:Linux系统(centos x64)运行环境

证件照制作小程序免费版 1 查看详情 证件照制作小程序免费版

[root@iZbp19b5lvg8xtpf1tzrenZ newdr]# su yui[yui@iZbp19b5lvg8xtpf1tzrenZ newdr]$ umask0002[yui@iZbp19b5lvg8xtpf1tzrenZ newdr]$ umask 0022[yui@iZbp19b5lvg8xtpf1tzrenZ newdr]$ umask0022[yui@iZbp19b5lvg8xtpf1tzrenZ newdr]$ umask 022[yui@iZbp19b5lvg8xtpf1tzrenZ newdr]$ umask0022[yui@iZbp19b5lvg8xtpf1tzrenZ newdr]$ umask 001[yui@iZbp19b5lvg8xtpf1tzrenZ newdr]$ umask0001

修改掩码时,可以省略第一个0。计算文件创建时的默认权限。公式:文件的起始权限 & (~umask) = 最终权限(默认)。解释:目录的起始权限为0777,普通文件为0666。下面我来计算一个看看,就目录文件test吧,umask为0002。

[yui@iZbp19b5lvg8xtpf1tzrenZ newdr]$ lltotal 4drwxrwxr-x 2 yui yui 4096 Apr 28 15:49 test-rw-rw-r-- 1 yui yui    0 Apr 28 15:46 test.txt

计算过程:

Linux——(关于权限常见的3个问题)

2.3 文件能否被删除取决于什么

我们来看看一个权限全无的文件:

[yui@iZbp19b5lvg8xtpf1tzrenZ newdr]$ lltotal 4drwxrwxr-x 2 yui yui 4096 Apr 28 15:49 test-rw-rw-r-- 1 yui yui    0 Apr 28 15:46 test.txt[yui@iZbp19b5lvg8xtpf1tzrenZ newdr]$ chmod 000 test.txt [yui@iZbp19b5lvg8xtpf1tzrenZ newdr]$ lltotal 4drwxrwxr-x 2 yui yui 4096 Apr 28 15:49 test---------- 1 yui yui    0 Apr 28 15:46 test.txt[yui@iZbp19b5lvg8xtpf1tzrenZ newdr]$ rm -f test.txt [yui@iZbp19b5lvg8xtpf1tzrenZ newdr]$ lltotal 4drwxrwxr-x 2 yui yui 4096 Apr 28 15:49 test

即使我对这个文件的权限什么都没有,但我却可以删除它。甚至root的文件也可以删除。因此我们明白了,一个文件能否被删除,不取决于文件本身,而是取决于文件所处的目录,即拥有者是否具有w权限。这样的话会不会很危险呢?确实,不过在现实情况下,你不会去别人的目录下写文件。那么就催生出了另一个问题,当需要小组合作时呢?为了解决这个问题,Linux下有一个共享文件夹。

2.3.1 Linux下的共享文件夹

唯一根目录下。

[yui@iZbp19b5lvg8xtpf1tzrenZ /]$ pwd/[yui@iZbp19b5lvg8xtpf1tzrenZ /]$ lltotal 72lrwxrwxrwx.  1 root root     7 Jul 11  2019 bin -> usr/bindrwxr-xr-x   3 root root  4096 Apr 21 14:26 blog-rw-r--r--   1 root root   664 Apr 21 14:12 blog.zipdr-xr-xr-x.  5 root root  4096 Jul 11  2019 bootdrwxr-xr-x   3 root root  4096 Apr 21 14:22 codedrwxr-xr-x  19 root root  2980 Feb 28 16:24 devdrwxr-xr-x. 77 root root  4096 Apr 25 19:54 etcdrwxr-xr-x.  4 root root  4096 Apr 25 19:53 homelrwxrwxrwx.  1 root root     7 Jul 11  2019 lib -> usr/liblrwxrwxrwx.  1 root root     9 Jul 11  2019 lib64 -> usr/lib64drwx------.  2 root root 16384 Jul 11  2019 lost+founddrwxr-xr-x.  2 root root  4096 Apr 11  2018 mediadrwxr-xr-x.  2 root root  4096 Apr 11  2018 mntdrwxr-xr-x.  2 root root  4096 Apr 11  2018 optdr-xr-xr-x  91 root root     0 Nov  3 21:00 procdr-xr-x---.  9 root root  4096 Apr 21 15:29 rootdrwxr-xr-x  23 root root   640 Apr 28 00:33 runlrwxrwxrwx.  1 root root     8 Jul 11  2019 sbin -> usr/sbindrwxr-xr-x.  2 root root  4096 Apr 11  2018 srvdr-xr-xr-x  13 root root     0 Dec  5 18:09 sysdrwxrwxrwt.  9 root root  4096 Apr 28 03:47 tmp /////////////// 共享文件夹tmp///////////////////////////drwxr-xr-x. 13 root root  4096 Jul 11  2019 usrdrwxr-xr-x. 19 root root  4096 Jul 11  2019 var

在这个文件夹下就可以进行暂时的小组合作。细心的同学可能注意到了,tmp的权限中的t。t作为一个粘滞位:给目录中的other设置的一个权限位,具有x的意义,同时也进一步对目录权限进行特殊限定。该目录下的文件,只有root或者文件的拥有者有权利进行删除,其他人一概不允许!这样就有效地防止了其他人对自己文件的删除。

以上就是Linux——(关于权限常见的3个问题)的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/727275.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月25日 09:52:03
下一篇 2025年11月25日 10:05:38

相关推荐

  • Python中怎样编写文档字符串?

    python中编写文档字符串的方法如下:1) 使用三个引号包围,放在定义之后;2) 内容可单行或多行;3) 描述函数作用、参数、返回值和异常。文档字符串提高了代码的可读性和维护性,是开发流程中不可或缺的一部分。 Python中怎样编写文档字符串?文档字符串(docstring)是Python中用来为…

    2025年12月14日
    000
  • python用来做什么 python常见用途说明

    python 的常见用途包括数据科学和机器学习、web 开发、自动化任务和脚本编写、游戏开发以及教育。1)在数据科学和机器学习中,python 的库如 numpy、pandas 等使数据处理和分析变得简洁高效。2)在 web 开发中,django 和 flask 等框架使得构建 web 应用变得简单…

    2025年12月14日
    000
  • 怎样在Python中实现协程?

    在python中,协程通过asyncio模块实现异步编程,提高i/o密集型应用性能。1)定义协程使用async def,2)使用await等待异步操作,3)通过asyncio.run运行主协程。使用协程可以并发处理多个任务,如网络请求,提升程序效率。 在Python中实现协程是一种高效的异步编程方式…

    2025年12月14日
    000
  • Python中怎样写入Excel文件?

    在python中,写入excel文件可以使用openpyxl或pandas库。1. 使用openpyxl库创建工作簿并写入数据,如在a1单元格写入文本。2. 使用pandas库将dataframe写入excel文件,适用于数据分析。3. 处理大量数据时,可用xlsxwriter库提高性能。4. op…

    2025年12月14日
    000
  • Python中怎样重写父类方法?

    在python中重写父类方法通过在子类中重新定义同名方法来实现。1)定义与父类同名的方法。2)使用super()调用父类方法。3)确保继承链上所有方法被调用。4)避免常见错误如忘记调用父类方法或拼写错误。 在Python中重写父类方法是一项常见的操作,尤其在面向对象编程中非常重要。这不仅仅是简单的语…

    2025年12月14日
    000
  • Python中如何遍历DOM树?

    在python中,遍历dom树是为了解析和操作文档元素。使用beautifulsoup库,可以通过递归或迭代方法遍历dom树:1)递归方法直观但可能导致栈溢出;2)迭代方法高效,避免栈溢出。完整句子结束。 在Python中遍历DOM树是一个常见的任务,尤其是在处理HTML或XML文档时。你可能会问,…

    2025年12月14日
    000
  • Python中如何实现API文档生成?

    在python中使用sphinx生成api文档可以显著提升代码的可读性和可维护性。1.安装sphinx:使用pip install sphinx。2.初始化项目:运行sphinx-quickstart。3.配置conf.py:添加autodoc扩展。4.编写带文档字符串的python代码。5.生成a…

    2025年12月14日
    000
  • Python中如何播放音频?

    在python中播放音频最常用的库是pygame和simpleaudio。1. pygame适用于mp3文件,初始化音频系统、加载并播放音乐,使用while循环确保程序不会在音乐播放完前退出。2. simpleaudio适用于wav文件,设计简单轻量,加载并播放音频,使用wait_done()等待播…

    2025年12月14日
    000
  • Python中怎样管理依赖包?

    在python中,管理依赖包可以通过pip和虚拟环境(如venv)来实现。1)使用pip安装、升级和卸载包,并通过requirements.txt文件管理版本。2)创建和激活虚拟环境以隔离项目依赖,避免冲突。 在Python中管理依赖包是一项关键技能,尤其当你需要确保项目在不同环境中都能顺利运行时。…

    2025年12月14日
    000
  • Python中怎样绘制热力图?

    在python中,绘制热力图使用seaborn库的heatmap函数。1) 导入必要的库,如seaborn、matplotlib和numpy或pandas。2) 准备数据,可以是随机生成的数组或实际的dataframe。3) 使用seaborn.heatmap函数绘制热力图,设置参数如annot、f…

    2025年12月14日
    000
  • Python中如何实现依赖注入?

    在python中实现依赖注入可以使用手动注入、装饰器和第三方库三种方法。1.手动注入通过构造函数传递依赖对象,简单直观但管理复杂。2.使用装饰器通过inject_dependencies装饰器自动注入依赖,适合复杂项目。3.使用第三方库如inject库,简化依赖管理但增加项目复杂性。依赖注入能提高代…

    2025年12月14日
    000
  • 如何在Python中使用BeautifulSoup?

    使用beautifulsoup解析html和xml文档的步骤如下:1. 安装beautifulsoup:使用命令“pip install beautifulsoup4”。2. 导入beautifulsoup:在代码中使用“from bs4 import beautifulsoup”。3. 解析htm…

    2025年12月14日
    000
  • 如何用Python实现一个生成器?

    在python中,生成器可以通过生成器函数和生成器表达式实现。1. 生成器函数使用yield关键字,如count_up_to(n)生成从0到n-1的数字。2. 生成器表达式如(x**2 for x in range(5))生成0到4的平方。生成器的优点是惰性求值,适合处理大数据集,节省内存,但只能遍…

    2025年12月14日
    000
  • Python中怎样使用logging模块?

    在python中使用logging模块可以有效地进行日志记录。1) 它比print语句更强大,可输出到多种地方并设置日志级别。2) 可通过配置文件灵活管理日志设置。3) 支持自定义处理器和格式化器,提升日志的针对性。4) 需注意避免重复添加处理器和合理设置日志级别。5) 使用异步处理器可优化性能。l…

    2025年12月14日
    000
  • Python中如何使用lambda表达式?

    lambda表达式在python中用于定义简洁的匿名函数。1) 它们适用于需要短小精悍的函数的地方,如在map()、filter()等函数式编程工具中作为参数。2) lambda表达式可以接受多个参数,但不支持复杂逻辑和多行代码。3) 从性能角度看,lambda表达式与常规函数无显著差异,但过度使用…

    2025年12月14日
    000
  • 怎样在Python中实现多线程同步?

    在Python中实现多线程同步,这可是个有趣且充满挑战的话题啊!让我们从最基本的问题开始解答,然后深入探讨如何在Python中实现多线程同步。 多线程同步的基本问题 在多线程编程中,同步是为了确保多个线程在访问共享资源时不会发生冲突。你可能会问,为什么需要同步?想象一下,如果多个线程同时尝试修改同一…

    2025年12月14日
    000
  • 如何用Python进行数据分析?

    使用python进行数据分析可以通过以下步骤实现:1. 安装必要的库,如pandas、numpy、matplotlib和scikit-learn。2. 使用pandas读取和处理数据,例如读取csv文件并查看数据。3. 进行基本的数据分析,如计算总销售额和平均销售额。4. 使用matplotlib进…

    2025年12月14日
    000
  • 如何在Python中创建自定义异常?

    在python中创建自定义异常通过继承exception类实现。1)定义类并继承exception。2)自定义初始化方法以提供详细错误信息。3)在实际应用中使用,如银行系统中余额不足时抛出异常。自定义异常使错误处理更精确,但需适度使用以免增加维护难度。 在Python中创建自定义异常不仅是一种展示你…

    2025年12月14日
    000
  • Python中如何隐藏命令行窗口?

    在python中,可以通过ctypes在windows上隐藏命令行窗口,通过subprocess在linux或macos上隐藏窗口。1. 在windows上,使用ctypes调用showwindow函数隐藏窗口。2. 在linux或macos上,使用subprocess启动后台进程隐藏窗口。 在Py…

    2025年12月14日
    000
  • 如何使用版本控制系统管理Python项目?

    我们需要版本控制系统来管理python项目,因为它可以跟踪代码变更、回滚错误、分支开发和多人协作,确保依赖和环境配置的一致性。使用git管理python项目时,步骤包括:1. 初始化git仓库:git init;2. 添加文件并提交:git add .,git commit -m “in…

    2025年12月14日
    000

发表回复

登录后才能评论
关注微信