首页 > 系统相关 >Linux 基本权限管理及实验

Linux 基本权限管理及实验

时间:2024-03-15 11:58:38浏览次数:29  
标签:文件 用户 所有者 实验 Linux 权限 root 目录

一、权限介绍

在linux的世界里,一切皆文件,当我们对一个文件长格式显示时,会出现很多具体的信息,这里我以创建的一个临时文件为例:

  从左往右的信息分别表示为:

(1)-rwxr-xr-x.   :文件的权限

(2)1  :文件link数或者是目录中子目录的数量(在这里展示的是文件信息)

(3)root  :所属用户

(4)root  :所属用户组

(5)206  :文件大小(在这里文件大小为206字节)

(6)3 月 12 10:15  :最后一次被修改的日期和时间

(7)666  :文件名

接下来我们重点说一下第一个 文件的权限:

1、我们不难发现文件的权限位一共有十位,除第一位,剩下每三位为一组,这十位的含义如下图所示:

(1)第一位(如上图“-”)代表文件类型,这里列举出了一些基本常见的文件类型:

“-”  :普通文件;

“d” :目录文件;

“c” :字符设备文件(鼠标、键盘等);

“b” :块文件(block、磁盘);

“p” :管道文件;

“s” :网络socket文件;

“l” :连接文件link(软链接文件);

(2)所有者权限  :文件和目录的所属用户,u-usr;

(3)所属组权限  :文件和目录的所属用户组,g-group;

(4) 其他用户权限  :除了所有者和所属组之外的用户;

2、如上图四个字母对应的含义:

(1)读(r)  :Read 对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录的权限;

(2)写(w) :write 对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限(文件的删除是上级目录写(w)权限赋予的,而不是文件的权限赋予的);

(3)执行(x):excute 对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限;

(4)—:表示不具有该项权限

3、我们再来看一下这张图片:

文件类型:普通文件; 

所有者:rwx,有读、写、执行权限;

所属组:r-x,有读和执行权限,没有写权限;

其他用户:r-x,有读和执行权限,没有写权限 ;

二、基本权限命令

1、chmod 

功能 : 修改文件的访问权限;

格式 : chmod  [选项] 权限类别 文件名

注意 :(1)-R : 递归修改目录中的所有文件的权限;

           (2)只有文件本身的所有者和root才能修改文件的权限;

权限模式:chmod 命令通常后面跟“[用户身份] [赋予方式] [权限类型] [文件名]”;

           (1)用户身份:u :所有者(user );  g :所属组(group);  o :其他人(other);  a :全部身份(all);

           (2)赋予方式 :+ :添加权限  ;  - :删除权限  ;  = :设置权限  ;

           (3)权限类型 : r;w;x(前面已经介绍);

数字权限:因为每一种权限前后位置都是固定的,我们可以用一组二进制数0和1来表示,组合起来便有2^3=8种,如下图所示:

文件常用权限:

            (1)644 :文件基本权限,代表所有者有读、写权限,而所属组和其他人只有读权限;

            (2)755 :文件执行权限(同时也是目录基本权限),代表所有者有读、写、执行权限,而所属组和其他人拥有读、执行权限;

            (3) 777 :最大权限(权限全开,有点危险);

目录的可用权限:

            (1)0 :不具有任何权限;

            (2)5 :基本的进入目录和目录浏览权限;

            (3)7 :权限全开(对于目录权限全开危险性还是很小的);

2、chown

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

格式 : chmod  [选项]  所有者:所属组  文件或者目录名;

注意 :(1)普通用户不能修改所有者和所属组,哪怕自己是文件的所有者,只能由root用户来操作;

            (2)普通用户可以修改所有者是自己的文件的权限;

3、chgrp

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

格式 : chmod    文件或者目录名;

4、umask

  对于文件和目录,我们需要了解一点,新建一个文件时,默认的最大权限是666;而新建一个目录时,默认的最大权限是777;

  至于原因其实我前面也有提到:对于一个文件而言,如果新建时就直接默认赋予了最大权限,这是相当危险的事情,所以新建文件是没有执行权限(x)的;而对于目录而讲,执行权限(x)仅代表可以进入目录,危险性很小,因此这也是两者的不同之处。

功能:控制新建文件和目录权限的系统设置,当一个进程创建一个目录或者文件时,umask的值会影响其的默认权限。

计算方法:(1)首先我们需要查看一下umask的值(由3或4位八进制数组成),如下:

                  (2)计算umask的值和默认最大权限值的补码 ,将umask的值得每一位用最大权限值减去,例如目录777,umask为022,则补码为755;

                  (3)将最大权限值与umask补码进行按位与操作(记得先转化为二进制);

总结:当umask为022时,新建文件默认权限位644(rw-r--r--);,新建目录默认权限为755(rwxr-xr-x);

ps:当然有很多简单的计算方法,网上都有详细步骤。

三、实验

接下来我针对上面的权限进行一些简单的实验:

       我首先添加一个新用户作为测试用户 test1 ;

1、chomd 测试

(1) 在root用户下,我在 /tmp目录下创建了test.txt目录,并且在该目录下创建了test.c文件,通过修改权限,发现在root用户下,是可以修改文件权限的(644—>755);

(2)在测试用户test1下,当我想修改 所有者为root用户的文件text.c时,提示我不允许,说明当普通用户登录时,当文件所有者不是自己,是不允许修改文件权限的(那当文件所有者是自己呢?答案是可以)。

2、chown 和 chgrp 测试 

(1)在root用户下,将test.c文件的所有者和所属组修改为test1用户后,在test1用户下,修改所有者为test1文件的权限,这时就可以修改了。

(2)从上面我们可以发现,在root用户下,是可以修改文件的所有者和所属组的,那如果是在普通用户下呢?—>答案是不能,普通用户不能修改文件的所有者和所属组,哪怕是这个文件所有者是这个普通用户,因此只有root用户才可以修改。

(3)接下来我们做文件和目录的权限操作的测试,由于在root用户下,无论文件权限是什么都不会影响文件和目录的正常操作,因此这里我们用test1用户做测试。 

            >首先,在test用户下,创建一个测试目录111和在目录下创建一个文件aaa,并将文件和目录的权限一次设为0,如下图:

            >这时发现文件和目录的任何基本操作都无法进行;

            > 当我们为目录文件赋予 4 (可读)权限时,发现,发现目录仍然无法正常查看和切换;当我们为目录文件赋予 5 (可读可写)权限时,此时可以查看目录里的文件,并且可以切换到目录里;

            > 在111目录下的aaa文件此时没有任何权限,进行不了读、写和执行操作,分别赋予读写操作后,分别可以进行查看文件、编辑文件等操作,但需要注意,此时依旧无法删除此文件;

            > 当我们给111目录赋予 7(可读可写可执行)操作后,111目录里的文件aaa便可以删除,并且可以创建新文件了,因此影响文件是否可以删除的关键便是是否赋予上级目录“可写”操作;

            > 为此我们知道了,对于文件而言,执行权限便是最高权限;但对于目录而言,可写权限才是最高权限。

标签:文件,用户,所有者,实验,Linux,权限,root,目录
From: https://blog.csdn.net/m0_64426380/article/details/136688419

相关文章

  • 笔记本如何在PVE下All in one?—NAS + Linux +win下载机
    没有有线网卡的笔记本在PVE下Allinone|NAS+Linux+Win下载机(保姆级未完成版)  目录:1、前言2、PVE的安装3、PVE联网前的准备工作4、PVE使用无线网卡进行联网5、PVE无线网卡的桥接6、PVE下创建虚拟机:NAS+Linux+Win下载机 1、前言十年前的旧笔记本,......
  • Linux下配置vim以及编译C语言
    在Linux下配置Vim和编译C语言程序是很常见的任务。下面是在Ubuntu上配置Vim和编译C语言程序的简要步骤:1.安装Vim大多数Linux发行版默认都已经安装了Vim,如果您的系统没有安装,可以使用包管理工具来安装。sudoaptupdatesudoaptinstallvim2.配置V......
  • linux 环境下嵌入式开发vim 工具编辑跳转
    参考资料:https://www.cnblogs.com/dpf-learn/p/14326000.htmlvim安装nerdtreenerdtree效果安装ctagsaptinstallexuberant-ctagsyuminstallctags用法接着,在源文件目录树(这里是在/home/ballack/test/目录下)执行如下命令:ctags-R.其他编辑器配置在Linux下用VI编......
  • 实验一c语言输入输出和简单程序应用编程
    1#include<stdio.h>2intmain()3{456printf("o\n");7printf("<H>\n");8printf("II\n");9printf("o\n");10printf("<H>\n");11......
  • 3-1-Linux终端介绍、Shell提示符、Bash基本语法
    3.1.1登录Linux终端两种终端仿真器:1.GNOME桌面的 GNOMETerminal2.KDE桌面的Konsole Terminal远程连接终端工具:Xshell,CRT,Putty,MobaXterm例1:通过tty命令看到当前所属打开的第几个虚拟终端注:shift+ctrl+N快速打开一个......
  • 【Linux】进程状态
    1Linux内核源代码为了弄明白正在运行的进程是什么意思,我们需要知道进程的不同状态。一个进程可以有几个状态(在Linux内核里,进程有时候也叫做任务)。下面的状态在kernel源代码里定义:/**Thetaskstatearrayisastrange"bitmap"of*reasonstosleep.Thus"running"i......
  • Linux从入门到精通(二)
    一、Linux命令格式command[-options][parameter]command命令行本身-options[可选,非必填]命令行的一些选项,可以通过选项控制命令的行为细节。parameter[可选,非必填]命令的参数,多用于命令的指向目标。语法的[],表示可选非必填的意思示例:ls-l/home/demo,ls是命令本身......
  • 什么是服务器端广告插入(server side ad insertion - SSAI)- 为什么说采用IAB技术实验室
    服务器端广告插入(SSAI-serversideadinsertion)是在联网(有线)电视上广告竞标行动中的最流行的技术解决方案之一。SSAI是一种在视频流加载到用户设备之前将广告植入在一起的技术。它可以用于任何连接或超顶级(overthetop-OTT)视频环境,包括社交环境,但大部分需求来自CTV的爆......
  • Linux下/etc/profile、~/.bash_profile等几个文件的执行过程
    介绍/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/profile.d目录的配置文件中搜集shell的设置。/etc/bashrc:为每一个运行bashshell的用户执行此文件.当bashshell被打开时,该文件被读取(即每次新开一个终端,都会执行bashrc......
  • 没有有线网卡的笔记本如何在PVE下All in one?—NAS + Linux +win下载机
    没有有线网卡的笔记本在PVE下Allinone|NAS+Linux+Win下载机(保姆级未完成版)  目录:1、前言2、PVE的安装3、PVE联网前的准备工作4、PVE使用无线网卡进行联网5、PVE无线网卡的桥接6、PVE下创建虚拟机:NAS+Linux+Win下载机 1、前言十年前的旧笔记本,吃......