Linux 下权限的管理

我们都知道,Linux系统对于用户的权限管理是十分严格的。

那么,我们就来具体了解一下。

一. 用户

在Linux中按照类型用户分为两种:1.超级用户 2.普通用户

那么它们之间都有上面区别呢:

  1. 超级用户的行为不受限制(我们一般称之为root用户)。
  2. 普通用户的行为受到一定的限制。
  3. 超级用户的命令提示符为#,普通用户的命令提示符为$
  4. 超级用户只能有一个(root),普通用户可以有多个。

那么我们怎么切换用户呢?

1. 怎么切换用户

命令su 用户名

功能:切换用户

示例

  1. 普通用户切换为root用户 -> 需要输入root用户的密码

    命令:su root 、su

  2. root用户切换为普通用户 -> 不需要输入普通用户的密码

    命令:su 用户名

    示例:su opc

  3. 普通用户切换为普通用户 -> 需要输入被切换用户的密码

    命令:su 用户名

    示例:su opc

2. 普通用户怎么临时使用root用户的权利

在日常操作的时候,我们经常会需要root的权利来操作一些事务,如:安装某个应用包,来查阅一些文件夹等等。

如果我们没有root的权限就会出现如下情况:

Error: This command has to be run with superuser privileges (under the root user on most systems).

此时,我们要怎么做呢?

我们只需将我们所需要提升权限的命令前加一个sudo即可,例如sudo yum install redis

但是,会有人出现如下情况:

[fanya@centos ~]$ sudo yum install redis

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things: #1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility. [sudo] password for fanya:
fanya is not in the sudoers file. This incident will be reported.
[fanya@centos ~]$

这时我们只需以root的身份来编辑/etc.sudoers这个文件,在下述语句之后加一句你的用户名 ALL=(ALL) ALL

## Allow root to run any commands anywhere
root ALL=(ALL) ALL

具体操作命令:

su # 切换为root用户
vi /etc/sudoers # 或 vim /etc/sudoers
# 以下命令依次在vim窗口输入
1. 敲击键盘上的 Esc 按键
2. 敲击键盘上的 :按键 -> 你会发现屏幕下方出现了一个横条
3. 输入100,敲击回车
4. 敲击键盘上的y键两遍
5. 敲击键盘上的p键
6. 敲击键盘上的i键
7. 将root替换为你的用户名
8. 敲击键盘上的 Esc 按键
9. 敲击键盘上的 :按键 -> 你会发现屏幕下方出现了一个横条
10.输入 wq!,敲击回车即可

或在root身份下以以下一行命令搞定:

sed -i "101i fanya    ALL=(ALL)   ALL" /etc/sudoers # 将 fanya 修改为你的用户名

二. 文件

在之前说到 ls -l命令时,它会列出一些文件的权限信息,我们具体就来看看这些到底是什么

1. 文件访问者

对于用户来说,对权限的操控可以分为以下三种:

  • 拥有者:文件和文件目录的所有者:u---User
  • 所属组:文件和文件目录的所有者所在的组的用户:g---Group
  • 其它用户:其它用户:o---Others

另外还要说明几点:

  1. 在Linux中,所有的用户都应隶属一个相应的组,尽管组中只有他一个人。
  2. 假设有一个Linux系统里普通用户有fanyazhang两个人,当fanya创建了一个文件,那么对于这个文件它的所有者就是fanyazhang就是其他用户了。

2. 文件类型和访问权限

在使用ls -l命令时,会发现有形如drwxrwxr-x.这样的一串字符,那么它的意义是什么呢?

1). 文件类型

  • d:文件夹
  • -:普通文件
  • l:软链接(类似Windows的快捷方式)
  • b:块设备文件(例如硬盘、光驱等)
  • p:管道文件
  • c:字符设备文件(例如屏幕等串口设备)
  • s:套接口文件

2). 基本权限

  • i. 读(r):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
  • ii.写(w):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
  • iii.执行(x):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
  • iv.“-”表示不具有该项权限

3.权限的表示

表示权限的这串字符共有10个字符,它分为 1 + 3 + 3 + 3

  • 1 表示的时文件的类型,如普通文件、目录、可执行文件等等。
  • 3 表示某种文件访问者的可读、可写及可执行权限分别用r、w、x来表示
  • 3 + 3 + 3 则分别表示 文件所有者、文件所属组及其他人的相应权限

1). 字符表示

2). 数字表示(八进制)

注意:一个八进制数字代表一种用户的权限,以3个八进制组成为一个文件的完整权限。例如777就代表着rwxrwxrwx

4.设置文件相关访问权限

假设我们有如下文件:

现有一个需求,我们需要修改test文件的权限,让其他人无法查看,我们需要怎么样做呢?

这时就需要chomod命令了。

1). chmod 修改文件的权限

功能:设置文件的访问权限

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

常用选项

  • R :递归修改目录文件的权限

说明:只有文件的拥有者和超级用户才可以改变文件的权限

chmod命令权限值的格式:

  1. 用户表示符 +/-/= 权限字符

    • +/-/=

      • +:向权限范围增加权限代号所表示的权限
      • -:向权限范围取消权限代号所表示的权限
      • =:向权限范围赋予权限代号所表示的权限
    • 用户表示符
      • u:拥有者
      • g:拥有者同组
      • o:其它用户
      • a:所有用户

    示例

    # 将test文件修改为其他用户无权限
    # 原来的test文件权限:rw-rw-r--
    chmod o=--- test
    # 或
    chomd o-rwx test
    # 修改后的test文件权限:rw-rw----

    # 将test文件修改为其他用户可读可写可执行
    # 原来的test文件权限:rw-rw-r--
    chmod o=rwx test
    # 或
    chomd o+rwx test
    # 修改后的test文件权限:rw-rw-rwx

  2. 三位八进制数字

    示例:

    # 将test文件修改为其他用户无权限
    # 原来的test文件权限:rw-rw-r--
    chmod 660 test
    # 修改后的test文件权限:rw-rw----

    # 将test文件修改为其他用户可读可写可执行
    # 原来的test文件权限:rw-rw-r--
    chmod 667 test
    # 修改后的test文件权限:rw-rw-rwx

2). chown 修改文件的拥有者

功能:修改文件的拥有者

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

常用选项

  • R :递归修改目录文件的权限

注意:修改拥有者需以root身份进行

示例

# 将test的拥有者改为opc
sudo chown opc test

3). chgrp 修改文件的所属组

功能:修改文件的拥有者

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

常用选项

  • R :递归修改目录文件的权限

注意:修改所属组需以root身份进行

示例

# 将test的所属组改为opc
sudo chgrp opc test

4). umask 查看或修改文件掩码

当我们创建文件或是创建文件夹时,我们会发现它会带一些默认的权限,如图所示:

而这些权限是怎么产生的呢?

这就需要用到新的的知识了:

实际上,新建文件的默认权限为0666,新建目录的默认权限为0777。其中第一位的0与特殊权限有关,我们这里不必深究,而后面三位就是权限的八进制数值表示方法,我们将其翻译为字符表示方法。

但是我们发现,它实际上与我们创建出来的文件权限并不相同,这又是为什么呢?

原因就是创建文件或目录的时候还要受到umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask

格式:umask 权限值

说明

  • 将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。
  • 超级用户默认掩码值为0022
  • 普通用户默认为0002
  • 查看当前默认umask只需在命令行下输入umask

那么现在继续来解释上述问题,如上图所示,此时的umask为0002,文件的默认权限为0666,文件夹的默认权限为0777.

此时我们发现,此时得出的权限与上述图中显示的一致。

当然,我们可以通过控制umask的值,来控制最终生成的权限:

三. 目录

在刚才的讲解中,我们发现目录也有着可读可写可执行的权限,而它们又代表着什么意思呢?

1. 目录的权限

  • 可执行权限: 如果目录没有可执行权限, 则无法cd到目录中
  • 可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容
  • 可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件

但是!!!

在这里存在一个严重的问题,不知大家发现了没有?

只要用户具有这个目录的写权限,用户就可以删除目录中的文件,而不论该用户是否有这个文件的写权限。

换句话来说就是,张三创建了一个文件,但是李四却能删了它。这本就充满着极大的不合理性!

我们来具体实践一下:

那要怎么避免这种情况的发生呢?Linux中引入了粘滞位的概念。

2.粘滞位

语法: chmod +t 目录名

功能: 给目录加上粘滞位

当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件被删除的情况只有三种:

  • 一、超级管理员删除
  • 二、该目录的所有者删除
  • 三、该文件的所有者删除

示例

注意: 虽然目录被加上了粘滞位,但如果用户有该目录的可写权限,则不影响其在该目录下创建文件

Linux 下权限的管理的更多相关文章

  1. 安装VMtools vim编辑器的使用 压缩包命令 Linux下的用户管理 (第三天)

    VM tools:方便我们虚拟机和宿主机之间复制数据或移动文件等 安装VMtools 1.菜单栏-虚拟机-安装VM tools 将其选中 2.进入系统,在桌面位置里面有VM tools的光盘,双击进入 ...

  2. 【one day one linux】linux下的软件包管理工具

    Linux 下的软件包管理工具 linux下的软件安装可以通过两种方式,一种是直接使用自带的软件包管理工具安装,另外一种通过编译源码安装. 1.软件包的种类 Red Hat和Fedora:redhat ...

  3. 学习Linux下的文件目录管理

                    文件目录管理 一.认识Linux文件系统的架构 在Linux中是没有盘符这个概念的,即Linux中没有C盘和D盘的分盘.那么我们直接通过对目录的操作实现对磁盘的读写,因 ...

  4. linux下的动态链接库管理

    LD_LIBRARY_PATH Linux环境变量名,该环境变量主要用于指定查找共享库(动态链接库)时除了默认路径之外的其他路径.(该路径在默认路径之前查找) 移植程序时的经常碰到需要使用一些特定的动 ...

  5. Linux下的物理内存管理2-slab缓存的管理

    2017-03-02 在Linux下的物理内存管理中,对SLAB机制大致做了介绍,对SLAB管理结构对象也做了介绍,但是对于小内存块的分配没有介绍,本节重点介绍下slab对小内存块的管理. 内核中使用 ...

  6. Linux下安装MySQL管理工具MySQL Administrator和MySQL Query Browser(转载)

    文章来源:http://blog.csdn.net/sunrier/article/details/7572299 Linux下MySQL Administrator和MySQL Query Brow ...

  7. linux下的用户管理(一)

    linux下有三类用户: 1.超级用户:root具有操作系统的一切权限,UID值为0的是超级用户 2.普通用户:只具有操作系统有限的权限,UID是从500到6000范围 3.伪用户:是为了方便系统管理 ...

  8. linux 下的进程管理工具 supervisor

    在linux下监控进程: 1)yum install python-setuptools   linux下的python安装工具 2)easy_install supervisor     安装sup ...

  9. linux下svn目录管理

    linux 下安装的svn目录文件: /data/svndata/winne/conf/passwd 是配置用户密码的文件路径

随机推荐

  1. 10分钟教你使用Picgo+GitHub+ jsDelivr搭建CDN加速免费图床

    前言 经常写Markdown或者博客的同学,肯定都要用到图床.图床是什么呢?其实相当于一个存储图片的网站,类似百度云这样,不过上传图片到图床后可以直接通过外链进行访问. 比如把本地一张a.jpg上传到 ...

  2. 鸿蒙内核源码分析(挂载目录篇) | 为何文件系统需要挂载 | 百篇博客分析OpenHarmony源码 | v65.01

    百篇博客系列篇.本篇为: v65.xx 鸿蒙内核源码分析(挂载目录篇) | 为何文件系统需要挂载 | 51.c.h.o 文件系统相关篇为: v62.xx 鸿蒙内核源码分析(文件概念篇) | 为什么说一 ...

  3. 鸿蒙内核源码分析(时间管理篇) | 谁是内核基本时间单位 | 百篇博客分析OpenHarmony源码 | v35.02

    百篇博客系列篇.本篇为: v35.xx 鸿蒙内核源码分析(时间管理篇) | 谁是内核基本时间单位 | 51.c.h .o 本篇说清楚时间概念 读本篇之前建议先读鸿蒙内核源码分析(总目录)其他篇. 时间 ...

  4. CF1556D-Take a Guess【交互】

    正题 题目链接:https://codeforces.com/contest/1556/problem/D 题目大意 现在有\(n\)个你不知道的数字,你有两种询问操作 询问两个下标的数字的\(and ...

  5. P6113-[模板]一般图最大匹配【带花树】

    正题 题目链接:https://www.luogu.com.cn/problem/P6113 题目大意 给出一张无向图,求最大匹配. \(1\leq n\leq 10^3,1\leq m\leq 5\ ...

  6. docker - compose 部署 Nginx

    主要介绍 docker 中 Nginx 的部署及项目目录挂载券的方法.docker 中部署一个服务,有三种方法,分别是 docker run.Dockerfile.docker-compose . 下 ...

  7. SpringBoot 如何进行限流?老鸟们都这么玩的!

    大家好,我是飘渺.SpringBoot老鸟系列的文章已经写了四篇,每篇的阅读反响都还不错,那今天继续给大家带来老鸟系列的第五篇,来聊聊在SpringBoot项目中如何对接口进行限流,有哪些常见的限流算 ...

  8. 题解 [SDOI2009]E&D/染色游戏/Moving Pebbles

    E&D 染色游戏 Moving Pebbles E&D 题目大意 给出 \(2n\) 堆石子,\(2i-1\) 和 \(2i\) 为一组.每次可以选择一组删掉其中一堆,然后从同一组另外 ...

  9. luogu3888 GDOI2014拯救莫里斯 (状压dp)

    题目描述 莫莉斯·乔是圣域里一个叱咤风云的人物,他凭借着自身超强的经济头脑,牢牢控制了圣域的石油市场. 圣域的地图可以看成是一个n*m的矩阵.每个整数坐标点(x , y)表示一座城市\(( 1\le ...

  10. 小白自制Linux开发板 五. Debian文件系统制作,以及WIFI配置、交换分区配置

    该片文章将完整记录一个Debian的最小文件系统的生成,以及自定义配置WIFI组件.网络组件和交换分区配置 本文章参考:https://whycan.com/t_4236.htmlhttp://www ...