一、权限介绍

使用ls命令查看时,发现长格式显示的第一列就是文件的权限

权限位一共有 10 位,这 10 位权限位的含义如下图所示。

  • 第 1 位代表文件类型。Linux 不像 Windows 使用扩展名表示文件类型,而是使用权限位的第 1 位表示文件类型。虽然 Linux 文件的种类不像 Windows 中那么多,但是分类也不少,详细情况 可以使用“info ls”命令查看。

    “-”:普通文件。

    “b”:块设备文件。这是一种特殊设备文件,存储设备都是这种文件,如分区文件/dev/sda1 就是这种文件。

    “c”:字符设备文件。这也是特殊设备文件,输入设备一般都是这种文件,如鼠标、键盘 等。

    “d”:目录文件。Linux 中一切皆文件,所以目录也是文件的一种。

    “l”:软链接文件。

    “p”:管道符文件。这是一种非常少见的特殊设备文件。

    “s”:套接字文件。这也是一种特殊设备文件,一些服务支持 Socket 访问,就会产生这样的文件。
如果有字母,则代表拥有对应的权限;如果是“-”,则代表没有对应的权限。
  • 第 2~4 位代表文件所有者的权限

    r:代表 read,是读取权限。

    w:代表 write,是写权限。

    x:代表 execute,是执行权限
  • 第 5~7 位代表文件所属组的权限,同样拥有“rx”权限。
  • 第 8~10 位代表其他人的权限,同样拥有“rx”权限

二、基本权限命令。

1、chmod,修改权限的命令 。

命令名称:chmod。

英文原意:change file mode bits。

所在路径:/bin/chmod。

执行权限:所有用户。

功能描述:修改文件的权限模式

1.1、命令格式
chmod 选项 命令模式 文件...
-R: 递归设置权限,也就是给子目录中的所有文件设定权限
1.2、权限模式

chmod 命令的权限模式的格式是“[ugoa][[+-=][perms]]”,也就是“[用户身份][[赋予方式][权限]]” 的格式。

用户身份。
  • u:代表所有者(user)。
  • g:代表所属组(group)。
  • o:代表其他人(other)。
  • a:代表全部身份(all)。
赋予方式。
  • +:加入权限。
  • -:减去权限。
  • =:设置权限。
权限。
  • r:读取权限(read)。
  • w:写权限(write)。
  • x:执行权限(execute)。

    例如
chmod  o-w a.txt
#把a.txt针对其他人写权限移除。
1.3、数字权限

数字权限的赋予方式是最简单的,但是不如之前的字母权限好记、直观。

4:代表“r”权限。

2:代表“w”权限。

1:代表“x”权限。

例如

chmod 644 a.txt
# 为a.txt 设置 rw-r--r-- 权限
1.4.常用权限

数字权限的赋予方式更加简单,但是需要用户对这几个数字更加熟悉。其实常用权限也并不多,只有如下几个。

  • 644:这是文件的基本权限,代表所有者拥有读、写权限,而所属组和其他人拥有只读权限。
  • 755:这是文件的执行权限和目录的基本权限,代表所有者拥有读、写和执行权限,而所属组和其他人拥有读和执行权限。
  • 777:这是最大权限。在实际的生产服务器中,要尽力避免给文件或目录赋予这样的权限,这会造成一定的安全隐患。

三、基本权限的作用

3.1、权限含义的解释 首先,读、写、执行权限对文件和目录的作用是不同的
权限对文件的作用。
  • 读(r):对文件有读(r)权限,代表可以读取文件中的数据。如果把权限对应到命令上,那么一旦对文件有读(r)权限,就可以对文件执行 cat、more、less、head、tail 等文件查看命令。
  • 写(w):对文件有写(w)权限,代表可以修改文件中的数据。如果把权限对应到命令上,那么一旦对文件有写(w)权限,就可以对文件执行 vim、echo 等修改文件数据的命令。注 意:对文件有写权限,是不能删除文件本身的,只能修改文件中的数据。如果要想删除文件, 则需要对文件的上级目录拥有写权限。
  • 执行(x):对文件有执行(x)权限,代表文件拥有了执行权限,可以运行。在 Linux 中,只要文件有执行(x)权限,这个文件就是执行文件了。只是这个文件到底能不能正确执行, 不仅需要执行(x)权限,还要看文件中的代码是不是正确的语言代码。对文件来说,执行(x)权限是最高权限。
权限对目录的作用。
  • 读(r):对目录有读(r)权限,代表可以查看目录下的内容,也就是可以查看目录下有哪些子文件和子目录。如果把权限对应到命令上,那么一旦对目录拥有了读(r)权限,就可 以在目录下执行 ls 命令,查看目录下的内容了。
  • 写(w):对目录有写(r)权限,代表可以修改目录下的数据,也就是可以在目录中新建、 删除、复制、剪切子文件或子目录。如果把权限对应到命令上,那么一旦对目录拥有了写(w) 权限,就可以在目录下执行 touch、rm、cp、mv 命令。对目录来说,写(w)权限是最高权限。
  • 执行(x):目录是不能运行的,那么对目录拥有执行(x)权限,代表可以进入目录。如果 把权限对应到命令上,那么一旦对目录拥有了执行(x)权限,就可以对目录执行 cd 命令,进入目录。
3.2、目录的可用权限 目录的可用权限其实只有以下几个。
  • 0:任何权限都不赋予。
  • 5:基本的目录浏览和进入权限。
  • 7:完全权限。

四、所有者和所属组命令

4.1、chown 命令

chown 是修改文件和目录的所有者和所属组的命令,

命令名称:chown。

英文原意:change file owner and group。

所在路径:/bin/chown。

执行权限:所有用户。

功能描述:修改文件和目录的所有者和所属组。

命令格式
[root@love2 ~]# chown [选项] 所有者:所属组 文件或目录
-R: 递归设置权限,也就是给子目录中的所有文件设置权限
4.2.chgrp 命令 chgrp 是修改文件和目录的所属组的命令

命令名称:chgrp。

英文原意:change group ownership。

所在路径:/bin/chgrp。

执行权限:所有用户。

功能描述:修改文件和目录的所属组

命令格式
[root@love2 ~]# chgrp [选项] 组名 文件或目录
-R: 递归设置权限,也就是给子目录中的所有文件设置权限

五、umask 默认权限

当我们登录系统之后创建一个文件或者目录总是有一个默认权限的,那么这个权限是怎么来的呢?这就是umask干的事情。umask设置了用户创建文件的默认 权限,它与chmod的效果刚好相反 。

5.1查看umask权限。
# 用八进制数值显示 umask权限
[root@love2 ~]# umask
0022 # 用字母表示文件和目录的初始权限
[root@love2 ~]# umask -S
u=rwx,g=rx,o=rx #设置umask值
umask 033
5.2 umask 权限的计算方法 我们需要先了解一下新建文件和目录的默认最大权限。
  • 对文件来讲,新建文件的默认最大权限是 666,没有执行(x)权限。这是因为执行权限对文件 来讲比较危险,不能在新建文件的时候默认赋予,而必须通过用户手工赋予

  • 对目录来讲,新建目录的默认最大权限是 777。这是因为对目录而言,执行(x)权限仅仅代表 进入目录,所以即使建立新文件时直接默认赋予,也没有什么危险。

    按照官方的标准算法,umask 默认权限需要使用二进制进行逻辑与和逻辑非联合运算才可以得到正确的新建文件和目录的默认权限。这种方法既不好计算,也不好理解,

    所以这里还是按照权限字母来讲解 umask 权限的计算方法。我们就按照默认的 umask 值是 022 来分别计算一下新建文件和目录的默认权限吧。

  • 文件的默认权限最大只能是 666,而 umask 的值是 022

    “-rw-rw-rw-”减去 “-----w--w-”等于“-rw-r--r—”

  • 目录的默认权限最大可以是 777,而 umask 的值是 022

    “drwxrwxrwx”减去“d----w--w-”等于“drwx-r-xr-x”

注意:umask 默认权限的计算绝不是数字直接相减。

例如 umask 是 033

  • 文件的默认权限最大只能是 666,而 umask 的值是 033

    “-rw-rw-rw-”减去“-----wx-wx”等于“-rw-r--r—”
  • 目录的默认权限最大可以是 777,而 umask 的值是 033

    “drwxrwxrwx”减去“d----wx-wx”等于“drwx-r--r--”

linux命令--基本权限命令的更多相关文章

  1. linux修改文件权限命令

    先看个实例: [root@local opt]#ls -al ls -al 命令是列出目录的所有文件,包括隐藏文件.隐藏文件的文件名第一个字符为'.' -rw-r--r--  1 root root  ...

  2. 05004_Linux的其他命令和权限命令

    1.其他命令 (1)显示当前所在位置 命令:pwd (2)搜索命令 a.命令:grep 要搜索的字符串 要搜索的文件 示例:搜索/etc/sudu.conf文件中包含字符串to的行 b.搜索/etc/ ...

  3. linux 中更改权限命令chown,chmod,chgrp

    写在前面,关于chown,chmod的区别 chown用法 用来更改某个目录或文件的用户名和用户组的 chown 用户名:组名 文件路径(可以是就对路径也可以是相对路径) 例1:chown root: ...

  4. Linux常用文件权限命令详解

    pwd pwd命令用于获取当前工作目录的绝对路径. 使用示例: pwd 效果如下图: cd cd命令用于切换工作目录. 使用示例: cd 万猫学社/ 效果如下图: 其中在路径表示时, 一个半角句号(. ...

  5. Linux更改文件权限命令

    chmod命令 1.格式:chmod [-cfvR][--help][--version]mode file 2.参数 1)必要参数 -c 当发送改变时,报告处理信息 -f 错误信息不输出 -R 处理 ...

  6. linux修改文件权限命令(chmod)

    chmod命令是用于改变文件或目录的访问权限.用户用它控制文件或目录的访问权限. 该命令有两种用法.一种是包含字母和操作符表达式的文字设定法:另一种是包含数字的数字设定法. 1.文字设定法 chmod ...

  7. linux 更改文件权限命令 chmod

    chmod -change file mode bits :更改文件权限 chmod是用来改变文件或者目录权限的命令,但只有文件的属主和超级用户(root)才有这种权限. 更改文件权限的2种方式: 一 ...

  8. Linux 查看文件权限命令ls -l 输出信息每列所代表的含义

  9. 《The Linux Command Line》 读书笔记04 Linux用户以及权限相关命令

    Linux用户以及权限相关命令 查看身份 id:Display user identity. 这个命令的输出会显示uid,gid和用户所属的组. uid即user ID,这是账户创建时被赋予的. gi ...

随机推荐

  1. 一篇文章带你解读Redis分布式锁的发展史和正确实现方式

    前言 近两年来微服务变得越来越热门,越来越多的应用部署在分布式环境中,在分布式环境中,数据一致性是一直以来需要关注并且去解决的问题,分布式锁也就成为了一种广泛使用的技术,常用的分布式实现方式为Redi ...

  2. CCF-CSP题解 201903-4 消息传递接口

    求并行的各个进程,且进程内部顺序执行的情况下,会不会出现"死锁". 首先用\(%[^\n]\)将每个进程读入.最后过不了居然是因为\(str[\ ]\)开小了(悲喜交加.存储在\( ...

  3. Codeforces Round #591 (Div. 2)

    A. CME 题目链接:https://codeforces.com/contest/1241/problem/A 题意: 你有 N 根火柴 , 多少根火柴就可以组成多大的数(如 三根火柴可以表示 3 ...

  4. C#线程学习笔记六:线程同步--信号量和互斥体

    本笔记摘抄自:https://www.cnblogs.com/zhili/archive/2012/07/23/Mutex_And_Semaphore.html,记录一下学习过程以备后续查用.     ...

  5. C# dictionary to bytes and bytes convert to dictionary

    static byte[] GetBytesFromDic(Dictionary<string,string> dic) { if(dic==null || !dic.Any()) { r ...

  6. 数据库学习笔记day01+day02

    --表示系统时间select sysdate from dual --表是关系型数据库的基本结构--表是二维的,由行和列组成--行称为记录,列称为字段 --创建第一张表create table hw( ...

  7. webpack 插件 ProvidePlugin 的使用方法和 eslint 配置

    ProvidePlugin:自动加载模块,而不必到处 import 或 require .(点击查看官方文档) 使用方法: 配置 webpack.config.js文件里 plugins 属性 new ...

  8. IT兄弟连 HTML5教程 “无意义”的HTML元素div和span

    HTML只是赋予内容的手段,大部分HTML标签都有其意义(例如,标签a创建链接,标签h1创建标题等),然而div和span标签似乎没有任何内容上的意义,听起来就像一个泡沫做成的锤子一样无用.但实际上, ...

  9. 关于js的一些被忽视但也很重要的知识点

    以为懂了,实际没懂.对新知识保持好奇心很有必要,但对原有知识也要更深入了解其细节.温故知新,"新",应该是自己不懂的,亦或是遗忘了的,亦或是...... 问题1: Object.p ...

  10. try catch在for循环外面还是里面

    static void Main(string[] args) { //将异常写在循环外,出现异常循环终止 try { Console.WriteLine("抛出异常不输出"); ...