文章目录

  • 前言:
  • 一:所有者,组成员和其他人
  • 二:读取,写入和执行
    • (1)chmod-更改文件权限
      • A:八进制数字表示法
      • B:符号表示法
    • (2)umask-设置默认权限
  • 三:更改身份
    • (1)su-以其他用户和组ID的身份运行shell
    • (2)sudo-提升权限执行命令
    • (3)chown-更改文件所有者和所属群组

前言:

Linux不止是多任务操作系统,更关键的他还是多用户操作系统,这意味着同一时间内可以有多个用户使用同一台计算机
如果计算机连接到一个网络或者互联网中,远程用户可以通过ssh(云服务器就是这样)登录并操作这台计算机。
用户一多,就有很多出现一些错乱,比如说一个用户访问到了另一个用户的文件,所以用户管理就显得格外重要

本章设计命令如下

  • id:显示用户身份标识
  • chmod:修改权限
  • umask:设置默认权限(粘滞位)
  • su:以另一个身份运行shell
  • sudo:以另一个用户的身份运行命令
  • chown:更改文件所有者
  • chgrp:更改文件所属组
  • passwd:更改用户密码

一:所有者,组成员和其他人

Linux把用户分为了如下三类,假如针对一个文件

  • user:文件的创建者
  • group:文件所在组的其他成员
  • other:外人

如果使用cat命令查看/etc/shadow,会发现出现访问拒绝的提示

这是因为该文件里保存了所有用户密码等相关信息,作为普通用户是无法访问这个文件的。

在UNIX安全模型中,一个用户可以拥有自己创建的文件的控制权,同时这个用户又属于某一个群组(当然也可以属于更多的群组),该群组有一个或者多个用户组成,组中用户对文件的权限是由文件的创建者授予的

使用id命令可以获得用户身份标识信息,输出结果如下

在创建用户账户时,用户将分配一个称为user IDuid的号码,同时会分配一个有效组IDgid

用户账户定义在/etc/passwd中,用户组定义在文件/etc/group中,在创建用户账户和群组时,这些文件随着文件/etc/shadow的变动而修改,/etc/shadow中保存了用户的密码信息

二:读取,写入和执行

前面我们使用cat命令查看/etc/shadow时,我们的角色就是一个外人,所以没有读取权限。而且之前的ls -l命令列出的长列表中,有关信息也揭示了这一点

  • 第二个矩形方框框住的区域“什么都没有”,解释了对于外人来说没有读取,写入和执行操作

/etc/passwd文件普通用户是可以查看的,它又是另外一种情形

  • 可以发现针对外人具有读权限

上图中前10个字符表示的意思如下

r,w,x三个的意思分别如下

所以对于/etc/passwd文件的权限可以解释为:对于文件的创建者root来说没有读权限,但是可以写入和执行,而组成员和其他人则相反只能读取

(1)chmod-更改文件权限

chmod可以更改文件或目录的权限,但是需要注意的是只有文件创建者和超级用户才有权利更改权限
更改文件权限有两种方式:八进制数字表示法符号表示法

A:八进制数字表示法

每个八进制数字可以唯一对应一个三位的二进制数字。对应关系如下,简单来说就是对应位置是1表示有权限,对应位置为0表示没这个权限

随意这种对应关系熟记后,可以分别为用户,组成员,其他人快速设置权限
比如下面我要把test.c这个文件的所有权限全部更改为rw-,那么根据上述描述这种权限模式对应的八进制是6,故可以设置如下

B:符号表示法

上述八进制的表示方法其实是最为快捷的方法,但是初学者在前期对应起来还是有点麻烦的。使用符号表示法,理解起来非常简单
简单来说,符号表示法就是通过特定字符对应特定用户,来为用户增加或减少权限

对应特定用户的符号如下

给定好用户好之后,如果我想要去掉这个用户的读权限,那么就在其后面跟上-r,依次类推
如下例

关于目录的权限在这里要统一说明一下:

  • 目录读权限:是指是否能列出该目录下的文件
  • 目录的写权限:是指是否能在该目录下创建文件
  • 目录的执行权限:就是指是否可以cd这个目录。由于目录的读写权限都是建立在执行权限上的,所以一旦执行权限被关闭,那么其读写权限也同样会被关闭

(2)umask-设置默认权限

如下,我一次性创建10个文件和5个文件夹,其中值得注意的一点就是同类型文件创建时他们的权限都是一样的

所以umask命令控制着创建文件或目录时给文件的默认权限

关于这个umask不是特别好理解,在命令行中输入umask,可以查看此时的umask值,采用的是八进制表示法


这个umask码就决定着默认权限,它的解释是这样的:由于是八进制,只看其后三位,比如说上图中是0022,只看022,按照之前的八进制表示方法它每一位数字对应一种用户,所以如果用二进制,022对应的user就是000,对应的group就是010,对应的other就是010,文件是没有执行权限的,所以原始最高权限为“rw- rw- rw-”,然后对应位置与二进制相比较,只要是出现1的位置全部去掉这个权限,0的位置保留,所以这也是为什么文件创建时默认权限是rw- r-- r--

而对于目录来说最高权限为“rwx rwx rwx”,由于umsk为“000 010 010”,所以目录创建时默认权限为rwx r-x r-x

一般情况下umsk值不需要你来设置,但是一些高安全级别条件除外
比如我的目的是创建出的文件的默认权限是“r-- -w- -w-”,问你umask值应该设置为多少?这里由于文件的最高权限是“rw- rw- rw-”,所以umask应该设置为“010 100 100”,也即是0244

三:更改身份

(1)su-以其他用户和组ID的身份运行shell

su的意思就是直接切换成其他用户
比如现在的用户是deepin,我要切换到zhangxing可以这样输入

注意如果输入su -,就会切换超级用户

(2)sudo-提升权限执行命令

sudo你可以理解为暂时提升你的用户权限执行某些命令,用法就是输入命令的时候在前面加上sudo,比如之前说到过的/etc/shadow文件,如果是普通用户是无法查看的,而使用这种方式短暂提升权限,则可以查看

需要注意以下几点

  • 使用sudo时输入的不是超级用户的密码,而是普通用户的密码
  • su与sudo的重要区别在于sudo不需要启动一个新的shell,也就是不需要加载另一个用户的运行环境
  • 大家在Windows中时常需要以管理员身份启动某个引用,其实和这里我们将的有异曲同工之妙

其实之所以要存在sudo是因为:很多用户喜欢“偷懒”,为了屏蔽掉那些烦人的权限不足的通知,经常就会以超级用户方式操作系统,这样就会使一些病毒有了入侵计算机的机会。Linux的安全性就和Windows一样低了,所以sudo的存在可以让用户在不切换超级用户的情况下短时间提高自己的权限等级,以此来完成某些必要操作,而不至于一直大开超级用户权限。

(3)chown-更改文件所有者和所属群组

可以看出该命令其实有两个功能:一是更改文件所有者,二是更改文件所属群组。到底要发挥哪种功能,其实就看其如何搭配,搭配的方式如下

更改文件所有者为deepin

再比如更改文件所有者为zhangxing,文件所属组为root

还有,文件所有者不要变,只更改文件所属组为deepin

最后,把文件所有者改为root,文件所属组跟随root

1-9:学习shell之权限相关推荐

  1. 「学习笔记-Linux」学习Shell Script

    学习Shell Script Table of Contents 1 什么是Shell Scipt 1.1 程序书写 1.2 程序执行 2 简单Shell练习 2.1 例1 接收用户输入 2.2 例2 ...

  2. 通过脚本案例学习shell(五) 通过创建DNS脚本一步一步教你将一个普通脚本规范到一个生产环境脚本...

    通过脚本案例学习shell(五) 通过创建DNS脚本一步一步教你将一个普通脚本规范到一个生产环境脚本   版权声明: 本文遵循"署名非商业性使用相同方式共享 2.5 中国大陆"协议 ...

  3. 零基础学习Shell编程

    一:起因 (0)也许由于一时的冲动使得你开始关注并学习shell编程:亦许由于是"道听途说"shell的威力很大:亦许由于shell编程的魅力:亦许由于作为一个coder的偏好:亦 ...

  4. 《Linux命令行大全》学习笔记1——学习 Shell

    文章目录 前言 一.什么是Shell 二.导航 三.探索 Linux 系统 ls file less 四.操作文件和目录 通配符 mkdir cp mv rm ln 五.和命令打交道 六.重定向 标准 ...

  5. 小白学习shell命令---自学笔记

    Linux系统介绍. 什么是操作系统 首先,操作系统是一个软件,控制计算机整体运行的系统软件.可以管理计算机的硬件与软件资源.提供用户使用计算机的接口;提供了软件运行的环境.常用的操作系统有windo ...

  6. 【Linux命令】《鸟哥Linux基础》第十二章 学习shell脚本

    第十二章 学习shell脚本 通常利用shell脚本完成服务器的检测工作,不涉及大量运算. 12.1 简单shell脚本介绍 12.2 简单shell脚本练习 12.2.1 简单范例 范例1:永远的开 ...

  7. (1)Shell 编程学习 Shell是什么?Shell的浅显原理 为什么要学Shell 及其第一个Shell脚本 CTF角度学习Shell

    最近刷CTF题目的时候经常要用到Shell语言,但是自己并没有系统的学习,所以最近花了点时间学习一下,所以重新来梳理一下.对于稍微有一点编程语言基础的同学,能上手Shell其实不需要半小时(甚至更短) ...

  8. 今天开始学习shell编程!!!

    已经入职一个月了. 经过这一个月重复的工作每天都是做一些环境配置的事. 对环境配置已经很熟练了.也不需要再通过每一步的安装来学习新的知识了. 所以我想写一个shell脚本让程序自己安装. 昨天晚上都凌 ...

  9. linux shell概述,Linux学习 -- Shell基础 -- 概述

    Shell是什么? 命令解释器 编程语言 Linux支持的Shell类型 cat /etc/shells 主要学习 bash 脚本执行方式 echo echo -e 单引号 -- 原始字符串  双引号 ...

最新文章

  1. 详细设计 存储分配_万字长文:云架构设计原则(一)
  2. javaweb开发1.环境配置(javaweb插件下载及tomact在eclips中配置)
  3. Spring Tool Suite 错误: Server Tomcat v8.0 Server at localhost was unable to start within 45 seconds.
  4. 跨平台客户端开发经验总结
  5. python-Django 增删改和分页
  6. 软件项目管理1:开发计划和版本计划举例
  7. 计算机操作系统知识点总结(有这一篇就够了!!!)
  8. TJX theft tops 45.6 million card numbers——TJX公司被盗取45600000卡号
  9. 计算机鼠标不灵活怎么办,鼠标左键不灵敏,教您鼠标左键不灵敏怎么办
  10. 基于jsp+mysql+Spring+SpringMVC+mybatis的大学生缴费系统
  11. 日出日落时间和年均光照时长计算 java
  12. 世界水日|“彩绘春天 守护长江”亲子环保公益顺利举行
  13. 恒太照明在北交所上市:募资规模缩水三成,第三季度收入下滑
  14. angular打包文件目录及访问地址
  15. 电感式DC/DC升压原理
  16. 我们一起学 ABAP (01) ~ 初识SAP ABAP
  17. 三大传统招聘门户因商务社交网被迫谋变
  18. Laravel 5文档阅读摘要
  19. ArcGIS中坡长的计算
  20. pynq-z2 HLS开发

热门文章

  1. mysql navicat安装_MySQL与Navicat的安装及使用教程
  2. Anaconda3的安装
  3. 给老板做PPT必备:文字加拼音
  4. Principle for Mac:让你五分钟即可制作出一个具有完整交互动画的原型
  5. ios开发跳转safari_iOS 跳转网页的四种方法
  6. c语言高低位拷贝_C语言中的大小端转换与高低位颠倒
  7. RTX5 | 内存池03 - 共享内存用于线程之间的通讯(轮询方式)
  8. STM32H743+Cube-Keil上移植RTX5实时系统
  9. Linux学习之后台运行进程
  10. python ks检验_python – 使用Scipy的stats.kstest模块进行拟合优度测试