前言

我们知道,root用户基本上可以在系统中做任何事。其他用户有更多的限制,并且通常被收集到组中。你把有类似需求的用户放入一个被授予相关权限的组,每个成员都继承组的权限。

让我们看一下:

  • 查看权限(Checking permissions)
  • 更改权限(Changing permissions)
  • 默认权限(Default permissions)
  • 特殊权限(Special permissions)

授予权限

权限有三个级别,分别是:

  • r:读取权限。
  • w:写入权限。
  • x:执行权限。

当一个文件被创建时,通常创建它的用户是它的所有者,而拥有组是用户当前的组。我们可以通过使用chown命令,来将文件的所有权转移到不同的用户。

chown gps /tmp/file.txt

这里,我们把/tmp 目录下的file.txt的所有权授予用户gps

我们也可以转移文件的所有权从一个组到另一个组,使用chgrp命令来达到目的。

chgrp cloudadmins newIDS

假设我们有一个名为newIDS的应用程序,这里我们把组的所有权交给newIDScloudadmins组。

查看权限

ls -l

带有-l (long)开关的ls命令将显示目录的内容,包括权限在内。让我们把这个问题再细分一下。

drwxr-xr-x 2 azureuser azureuser 4096 Feb 14 22:31 Videos

第一个字符表示文件类型,例子当中是d,意味着它是一个目录。这个字符可以是:

  • (-) 常规文件。
  • (d) 目录。
  • (c) 特殊字符。
  • (b) 特殊块。
  • (p) fifo(命令管道)。
  • (l) 符号链接。
  • (s) 套接字。

通常情况下,你会看到d-l 。在本文中我们将重点关注-d 。符号链接有点类似于文件链接。

然后我们可以看到:

rwxr-xr-x

共有9个字符,头三个表示用户的权限;中间三个表示组的权限;后面三个表示其他用户的权限。

  • 在该示例中,组用户拥有rwx(读、写、执行)权限。
  • 组拥有r-x(读、不可写、执行)权限,-表示没有授予相应的权限。
  • 其他用户拥有r-x(读、不可写、执行)权限。
2 azureuser azureuser 4096 Feb 14 22:31 Videos

剩余的列包括:链接的数量、用户、大小、创建日期以及名称。

如有需要,可以更改权限。

更改权限

只有root用户或者文件的所有者才可以更改权限,我们使用chmod命令来处理,并且我们可以使用十进制符号或者UGO(User, Group, Other),让我们先看看十进制符号。

使用十进制符号更改权限

该表包含所有可能的权限组合及其八进制和二进制表示。

二进制 八进制 rwx
000 0 ---
001 1 --x
010 2 -w-
011 3 -wx
100 4 r--
101 5 r-x
110 6 rw-
111 7 rwx

如果我们想表示所有者、组、其他用户的所有权限,我们可以使用

777

该示例中,每个数字都是7,表示所有者、组、其他用户的权限。在表格中,我们发现八进制中的7对应rwx ,也就是所有的(读、写、执行)权限。那么应该如何使用chmod呢?

chmod 777 sample.txt

这会给予所有者所有权限、组所有权限、所有其他用户所有权限。

chmod 700 sample.txt
chmod 774 sample.txt
chmod 755 sample.txt
  • 第一行将会给予所有者所有权限、组没有权限、其他用户没有权限。
  • 第二行将会给予所有者所有权限、组所有权限、其他用户只读权限。
  • 第三行将会给予所有者所有权限、组读和执行的权限、其他用户读和执行的权限。

使用UGO更改权限

用来更改权限的数字方法是最常用的,但我们仍可以使用符号方法:UGO(User, Group, Other)。

  • - 移除权限。
  • + 添加权限。
  • = 设置权限。

让我们移除拥有sample.txt的用户的写权限。

chmod u-w sample.txt

我们可以一次更改多个权限。

chmod u-rw sample.txt

chmod u+rwx,o+rwx sample.txt

默认权限

Linux自动赋予了所有文件和目录默认权限。文件的默认权限为666,目录的默认权限是777。默认情况下,下载文件后不能立即执行它。

可以使用umask(user file-creation mask)方法更改默认权限。这个方法表示你想从一个文件或目录的基本权限中删除的权限。

umask是一个三位数的八进制数字,对应三个权限数字。在大多数 Debian 系统中,umask 被设置为 022。它被减去权限数后,就会得到新的权限状态。

新文件 新目录 权限
666 777 Linux基本权限
-022 -022 umask
644 755 结果权限

每位用户可以在个人的.profile 文件中,为文件和目录设置个人的默认umask值。

查看umask的当前值:

umask

特殊权限

set user ID (SUID)
set group ID (SGUID)
sticky bit

SUID

SUID位表示任何用户都可以用所有者的权限来执行文件,但这些权限并不超出使用该文件的范围。要改变这个位,你要把chmod后的第一个值改为4,通常你只用3个数字,因为第一个数字被默认为0。 如果你在一个文件的所有者权限中看到一个s代替x,这意味着SUID位被设置。

chmod 4644 sample.txt

SGID

SGID将组的所有权分配给文件。对共享组目录很有用。你可以将SGID应用于目录和文件。

在一个文件上设置了SGID位,如果所有者属于具有执行该文件权限的组,那么没有执行权限的人也可以执行该文件。

在一个目录上设置了SGID位,在该目录中创建的新文件的所有权就归属该目录创建者的组,而不是文件创建者的组。

SGID位在常规权限前表示为2。如果你在一个文件或目录的组权限中看到一个s代替x,这意味着SGID位被设置。

chmod 2644 sample.txt

Sticky Bit(粘滞位)

这种权限在其他用户中由t代替x。当你在一个目录上设置粘滞位时,人们只能删除该目录中属于他们的文件。他们不能删除属于其他人的文件,无论文件权限的组合是什么。你只能对目录应用粘滞位。如果你在一个目录的其他用户的权限中看到一个t代替x,这意味着粘滞位被设置。

chmod 1777 sample.txt

粘滞位被现代Linux系统所忽略,但你至少应该熟悉这个术语。

原文链接:https://www.madebygps.com/an-intro-to-linux-file-and-directory-permission/

Linux系列之文件和目录权限的更多相关文章

  1. Linux CentOS7 VMware 文件和目录权限chmod、更改所有者和所属组chown、umask、隐藏权限lsattr/chattr

    一.文件和目录权限chmod u User,即文件或目录的拥有者:g Group,即文件或目录的所属群组:o Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围:a All,即全部 ...

  2. Linux下的文件与目录权限

    一.用户(User).群组(Group)和其他人(Others) linux是多用户多任务的操作系统,同一时刻可能会有多个用户登录系统,考虑到文件的安全性等问题,所以Linux下的文件都属于一个特定的 ...

  3. 【Linux安全】文件或目录权限设置

    实例演示: 要求:新建文件夹,名称为secure,要求改文件夹只能被创建者deadmin以及与deadmin同组用户进行读.写.执行的权限, 其他用户均只有读的权限. 查看 一下secure原本的权限 ...

  4. Linux文件和目录权限详细讲解

    转载请标明出处: http://www.cnblogs.com/why168888/p/5965180.html 本文出自:[Edwin博客园] Linux文件和目录权限解读 如何设置Linxu文件和 ...

  5. linux系统下修改文件夹目录权限

    linux系统下修改文件夹目录权限 文件夹权限问题 Linux.Fedora.Ubuntu修改文件.文件夹权限的方法差不多.很多人开始接触Linux时都很头痛Linux的文件权限问题.这里告诉大家如何 ...

  6. Linux文件及目录权限解析

    Linux系统9位基础权限体系 文件权限   * r权限 可读          对文件具有读取及查看文件内容的全新啊   * w权限 可写        对文件具有新增.修改文件内容的权限     ...

  7. [转]linux如何修改文件或目录的权限(chmod)

    linux如何修改文件或目录的权限(chmod) chmod命令是linux上用于改变权限的命令,-R 是递归遍历子目录,因为你要操作的文件使用的*通配符.777,第一个7代表文件所属者的权限,第二个 ...

  8. linux文件或目录权限修改后如何恢复(备份了权限就能恢复)

    操作系统 RHEL5 如果你在linux上执行了如下操作chmod -R 777 / 或者 chmod -R 700 /那么恭喜你,你的系统即将崩溃,重启之后,你进不了图形界面,而且很多服务都起不来 ...

  9. 网卡配置文件详解 用户管理与文件权限篇 文件与目录权限 软连接 tar解压命令 killall命令 linux防火墙 dns解析设置 计划任务crond服务 软件包安装 阿里云 yum源 安装

    Linux系统基础优化及常用命令 Linux基础系统优化 引言没有,只有一张图. Linux的网络功能相当强悍,一时之间我们无法了解所有的网络命令,在配置服务器基础环境时,先了解下网络参数设定命令. ...

  10. Linux(3)- 用户管理、文件与目录权限、常用命令、Linux软件包管理

    一.用户管理 现代操作系统一般属于多用户的操作系统,也就是说,同一台机器可以为多个用户建立账户,一般这些用户都是为普通用户,这些普通用户能同时登录这台计算机,计算机对这些用户分配一定的资源. 普通用户 ...

随机推荐

  1. bash shell笔记整理——file命令

    file命令的作用 查看一个给定参数的文件类型 file命令语法 file [FILE...] file命令还有选项,但是基本用的不太多,这个命令也基本用得不是很多. 示例 [root@nginx-p ...

  2. 浅谈数字孪生和GIS融合的必要性

    随着科技的不断发展和应用的不断深入,数字孪生和GIS在各自领域中展现出巨大的潜力.然而,更引人注目的是,数字孪生和GIS的融合将为许多行业带来全新的机遇和变革.在本文中,我们将探讨数字孪生和GIS融合 ...

  3. 《最新出炉》系列初窥篇-Python+Playwright自动化测试-36-处理web页面定位toast-下篇

    1.简介 按理说,现在这种一闪而过的toast的已经相当普及或者是见怪不怪了,应该网上的大网站会用到的,偶然的在一次租房中,看到了这种场景,所以宏哥决定将其拿来主义,进行演示实践一下. 2.租房网站 ...

  4. MagicArray基本使用方法

    MagicArray致力于让研发不再卷,这个灵感来源于php语言,可能多少年以后,php可能不会有太多人记得.但是在一个年代里,如果论坛里里常见最火爆的帖子无疑是:php是世界上最好的编程语言.由此可 ...

  5. MongoDB系列:C#、Java驱动连接MongoDB以及封装(C#的MongoDBHelper,Java的MongoDBUtil)

    一.C#驱动连接MongoDB 1.创建项目 执行命令:dotnet new console -n MongoDbDriverDemo 2.添加依赖包 执行命令:dotnet  add package ...

  6. Llama2-Chinese项目:5-推理加速

      随着大模型参数规模的不断增长,在有限的算力资源下,提升模型的推理速度逐渐变为一个重要的研究方向.常用的推理加速框架包含lmdeploy.FasterTransformer和vLLM等. 一.lmd ...

  7. 介绍3种ssh远程连接的方式

    摘要:SSH(安全外壳协议 Secure Shell Protocol,简称SSH)是一种加密的网络传输协议,用于在网络中实现客户端和服务端的连接,典型的如我们在本地电脑通过 SSH连接远程服务器. ...

  8. 一文详解TensorFlow模型迁移及模型训练实操步骤

    摘要:本文介绍将TensorFlow网络模型迁移到昇腾AI平台,并执行训练的全流程.然后以TensorFlow 1.15训练脚本为例,详细介绍了自动迁移.手工迁移以及模型训练的操作步骤. 本文分享自华 ...

  9. 盘点华为云GaussDB(for Redis)六大秒级能力

    摘要:盘点高斯Redis的秒级能力,包括扩容.备份.删除.启动等. 本文分享自华为云社区<华为云GaussDB(for Redis)揭秘第20期:六大秒级能力盘点>,作者: 高斯Redis ...

  10. 华为云UGO正式公测:4大核心优势破解异构数据库迁移难题

    摘要:华为云数据库推出了数据库和应用迁移 UGO(Database and Application Migration UGO,简称为UGO),是专注于异构数据库对象迁移和应用迁移的专业化工具,帮助用 ...