使用chmod修改文件权限

类Unix系统,包括在Linode平台上运行的Linux系统,具有非常强大的访问控制系统,允许系统管理员有效地配置多个用户的访问权限,而无需给予每个用户所有访问权限。 chmod命令是修改这些文件权限的最佳的和最简单的方法。

该指南简要概述了文件权限和命令的操作chmod。如果您觉得本指南有帮助,请参阅我们的基本管理实践指南以及Linux用户和组指南

如何使用chmod

在本指南中,chmod是指由GNU项目提供的最新版本。默认情况下,chmod包含在Linode提供的所有系统镜像中,并且作为几乎所有基于Linux的操作系统发行版中软件包的最基本的一部分。

Linux文件权限基础知识

类Unix系统上的所有文件系统对象都有三种主要类型的权限:读取,写入和执行。权限授予三个可能的类:用户,用户组和所有系统用户。

要查看一组文件的文件权限,请使用:

ls -lha

在输出的第一列中,有10个字符表示权限位。要了解它们之所以被称为权限位的原因,请参阅下面的八进制表示法部分。

drwxr-xr-x 2 user group       4.0K 2009-08-13 10:16 docs
-rw-r--r-- 1 user group       8.1K 2009-07-09 16:23 roster.py
lrwxrwxrwx 2 user group       4.0K 2009-08-13 10:16 team.docs

理解本专栏含义的一种方法是将这些位分成组。

文件类型

用户

全局

d 目录

rwx

r-x

r-x

- 常规文件

rw-

r--

r--

l 符号链接

rwx

rwx

rwx

第一个字符表示文件的类型。三个一组中的剩余九位分别表示用户,组和全局的权限。各个代表含义如下:

  • r读取
  • w写入
  • x执行

请注意,符号链接所针对的文件的访问权限由目标文件控制,而不是链接对象的控制。还有其他文件权限可以控制文件的其他权限。

chmod命令语法和选项

chmod命令的格式为:

chmod [who][+,-,=][permissions] filename

请看以下chmod命令:

chmod g+w ~/group-project.txt

这将授予所有拥有文件~/group-project.txt的用户组的所有成员对该文件的写入权限。更改目标用户权限的其他选项包括:

单词

含义

u

用户

g

o

其他

a

所有

+授予权限,而-取消权限。复制权限也可行:

chmod g=u ~/group-project.txt

该参数g=u表示授予组与用户相同的权限。

可以通过用逗号分隔来为多个用户分配不同的权限,如下例所示:

chmod g+w,o-rw,a+x ~/group-project-files/

这会向用户组成员添加写入权限,并从系统的“其他”用户中删除读写权限。最后,a+x将执行权限添加到所有类。该值也可以为+x。如果未指定类,则权限将被添加到所有类或者从所有类移除。

在该表示法中,文件的所有者被称为user(例如u+x)。

chmod -R +w,g=rw,o-rw, ~/group-project-files/

-R选项会将修改应用于指定的目录及其所有内容。

如何使用八进制表示法表示文件权限

设置权限的另一种方法是通过八进制表示法。

以下代码效果与chmod u=rwx,go=rx相同。

chmod 750 ~/group-project.txt

该文件的权限是- rwx r-x ---

忽略第一个比特,每个被-占用的比特可以被替换为0rwx表示为1。结果转换为:

111 101 000

这称为八进制表示法,因为二进制数通过使用数字0到7转换为base-8:

二进制

八进制

权限

000

0

-

001

1

-X

010

2

-W-

011

3

-wx

100

4

R-

101

5

RX

110

6

RW-

111

7

RWX

每个数字独立于其他两个数字。因此,750表示当前用户可以在组和其他人无法写入时进行读取,写入和执行。

744,这是一个典型的默认权限,允许所有者读取,写入和执行,以及组和所有用户读取。

两种表示法都是等效的,您可以选择使用任意一种表单更清楚地表达您的权限需求。

使文件可执行

以下示例更改了文件权限,使任何用户都可以执行文件“〜/ group-project.py”:

chmod +x ~/group-project.py

恢复默认文件权限

Unix系统上文件的默认权限通常是600644。权限600指所有者对文件具有完全读写权限,而其他用户无权访问该文件。权限644指文件所有者具有读写权限,而系统上的组成员和其他用户只具有读取权限。

执行以下示例之一以恢复这些“默认”权限:

chmod 600 ~/roster.txt
chmod 644 ~/gigs.txt

对于可执行文件,700755600644除了在执行权限方面其余均相同。

执行以下示例之一来恢复这些“默认”可执行权限:

chmod 700 ~/generate-notes.py
chmod 755 ~/regenerate-notes.py

限制文件访问:删除所有组和全局权限

在许多情况下,管理员和用户应限制对文件的访问,尤其是包含密码和其他敏感信息的文件。msmtp和Fetchmail(~/.msmtprc~/.fetchmailrc)的配置文件是两个常见的示例。

您可以使用以下任意一种命令删除对这些文件的所有权限:

chmod 600 .msmtprc
chmod g-rwx,o-rwx .fetchmail

更多信息

有关此主题的其他信息,您可能需要参考以下资源。虽然提供这些资源是希望它们有用,但请注意,我们无法保证外部托管材料的准确性或时效性。

本文的版权归 魔法少女伊莉雅 所有,如需转载请联系作者。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Vamei实验室

来玩Play框架01 简介

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢!

1612
来自专栏linux驱动个人学习

Linux下0号进程的前世(init_task进程)今生(idle进程)----Linux进程的管理与调度(五)【转】

Linux下有3个特殊的进程,idle进程(PID = 0), init进程(PID = 1)和kthreadd(PID = 2)

1862
来自专栏蓝天

MOOON-server新消息处理接口

    MOOON-server提供了一个通用的TCP框架,并对包的解析抽象出了IPacketHandler接口,这个接口提供了无限制的宽容度,支持任何协议,但...

892
来自专栏Java架构沉思录

一文读懂分布式Session常见解决方案

前言 沉思君在之前的文章《谈谈HTTP状态保持》里介绍了有关HTTP状态保持的知识点,我们知道HTTP协议本身是无状态的,因此在使用HTTP协议进行通信的过程中...

2778
来自专栏Flutter&Dart

DartVM服务器开发(第三天)--pub管理器、返回html页面

右键点击项目名,New--File,命名为:pubspec.yaml 并在文件里面输入下面内容 (因为在使用外部包时,首先你应该是一个包,所以下面这个内容是...

2924
来自专栏Java技术栈

前后端分离与不分离的本质区别!

在前后端不分离的应用模式中,前端页面看到的效果都是由后端控制,由后端渲染页面或重定向,也就是后端需要控制前端的展示,前端与后端的耦合度很高。

681
来自专栏牛客网

Linux入门学习笔记

1. 指令、选项或参数之间不论空几个格, shell 都视为一个空格。 2. 指令太长时,可以使用“ \ ”(反斜杠)符号使指令连续到下一行。 3. Linux...

39410
来自专栏我有一个梦想

Python 项目实践三(Web应用程序)第二篇

接着上节的继续学习,使用Django创建网页的过程通常分三个阶段:定义URL、编写视图和编写模板。首先,你必须定义URL模式,每个URL都被映射到特定的视图——...

31510
来自专栏技术小黑屋

持续整理:git分支操作

这篇文章主要的目的是记录一下git中关于分支相关的操作记录. 本文会持续更新,所有的操作都经过本人实践,可以正常运行,并且可以解决问题.

701
来自专栏抠抠空间

Linux用户权限

1750

扫码关注云+社区

领取腾讯云代金券