• Linux用户和权限学习笔记


    认识root用户

    什么是root用户

    无论是Windows、MacOS、Linux均采用多用户的管理模式进行权限管理。

    • 在Linux系统中,拥有最大权限的账户名为:root(超级管理员)
    • 而在前期,我们一直使用的账户是普通账户:itheima

    如果对Linux有所了解,那么提到root用户并不陌生,这是Linux的最高权限,Linux是一个多用户模式,那么必然有一个用户可管理这些用户,那么这个用户就是root

    虽然Windows、MacOS也有这个功能,但是我不知道,我没用过。

    我在Linux上的用户就是huan。

    [huan@localhost home]$从这里就可以看出来。huan

    root用户拥有最大的系统操作权限,而普通用户在许多地方的权限都是受限的

    • 普通用户的权限,一般在其HOME目录内是不受限的
    • 一旦出了HOME目录,大多数地方,普通用户仅有只读和执行权限,无修改权限。
    [huan@192 ~]$ mkdir /test
    mkdir: 无法创建目录"/test": 权限不够
    
    • 1
    • 2

    我用普通用户在根目录场景一个文件夹,会提示我权限不够

    [root@192 ~]# mkdir /test
    [root@192 ~]# ls /
    bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  test  tmp  usr  var
    
    • 1
    • 2
    • 3

    如果是管理员用户,那么就不会提示。

    普通用户只能在自己的家目录内工作,那么就是/home/huan/

    用户切换命令

    在前面,我们接触过su没了来切换到root账户,

    su没了就是用于账户切换的系统命令,其来源英文单词:Switch User

    语法:su [-] [用户名]

    • -符号是可选的,表示是否在切换用户后加载环境变量(后续讲解),建议带上
    • 参数:用户名,表示要切换的用户,用户名可以也省略,省略表示切换到root
    • 切换用户后,可以通过exit命令退回到上一个用户,也可以使用快捷键:ctrl+d
    • 使用普通用户,切换到其他用户需要输入密码,如root用户
    • 使用root用户切换到其他用户,无需密码,可以直接切换
    [huan@192 ~]$ su -
    密码:
    上一次登录:二 11月 15 14:27:03 CST 2022pts/0 上
    [root@192 ~]#
    
    • 1
    • 2
    • 3
    • 4

    切换到root用户,需要输入密码,注意输入密码时不显示,不要误以为自己没按上。

    [root@192 ~]# exit
    登出
    [huan@192 ~]$
    
    • 1
    • 2
    • 3

    退出root用户,如果是快捷键ctrl+d,提示是这样的

    [root@192 ~]# 登出
    
    • 1

    root切换到其他用户不需要密码,那我好奇,在以后的工作中管理员会不会通过root用户来查看下面的人都在干什么,那岂不是就没有隐私了。但是话又说回来,我们也就是用Linux进行开发把,不可能日常使用吧

    sudo命令

    在我们得知root密码的时候,可以通过su命令切换到root得到最大权限。

    但是我们不建议长期使用root用户,避免带来系统损坏。

    我们可以使用sudo命令,为普通的命令授权,临时以root身份执行

    语法:sudo 其他命令

    • 在其他命令之前,带上sudo,即可以为这一条命令临时赋予root授权
    • 但是并不是所有的用户,都有权力使用sudo,我们需要为普通用户配置root认证

    上一章节中提到一个删除的命令,一条命令就可以把这个Linux系统搞瘫痪。你说我不执行不就好了吗,可是万一呢,不小心哪一天就

    使用root用户不要长期使用

    sudo就是个临时授权,今天我有事,你帮我看一下。临时让你看一下。临时给命令一个权力

    但不是每一个用户都有这个权力,需要root认证。

    突然想起来,乌班图里面好像执行su命令会报错,我一直用的是sudo,这是为什么。

    怎么授权root认证

    • 切换到root用户,执行visudo命令,会自动通过vi编辑器打开:/etc/sudoers

    • 在文件的最后添加

      itheima ALL=(ALL)	NOPASSWD:ALL
      
      • 1
      • 其中最后添加的NOPASSWD:ALL表示使用sudo命令,无需输入密码
    • 最后通过wq保存

    授权的事情一定是root用户干的

    先看一下没有root授权会是什么结果

    [huan@192 ~]$ mkdir /huan
    mkdir: 无法创建目录"/huan": 权限不够
    
    • 1
    • 2

    不加sudo,是直接告诉你权限不够。

    [huan@192 ~]$ sudo mkdir /huan
    
    我们信任您已经从系统管理员那里了解了日常注意事项。
    总结起来无外乎这三点:
    
        #1) 尊重别人的隐私。
        #2) 输入前要先考虑(后果和风险)。
        #3) 权力越大,责任越大。
    
    [sudo] huan 的密码:
    huan 不在 sudoers 文件中。此事将被报告。
    
    [huan@192 ~]$ ls /
    bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  test  tmp  usr  var
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    加上sudo,让我输入密码,发出一个警告,还是没有创建

    现在授权

    首先是打开这个文件,

    [root@192 ~]# visudo
    [root@192 ~]# vi /etc/sudoers
    
    • 1
    • 2

    两种打开方式

    然后在最后一行添加

    huan ALL=(ALL)          NOPASSWD: ALL
    
    • 1

    huan是我的用户名

    wq,现在就可以进行测试

    ctrl+d退出root

    [huan@192 ~]$ mkdir /huan
    mkdir: 无法创建目录"/huan": 权限不够
    
    • 1
    • 2

    如果不加sudo,还是回提示权限不够

    [huan@192 ~]$ sudo mkdir /huan
    [huan@192 ~]$ ls /
    bin  boot  dev  etc  home  huan  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  test  tmp  usr  var
    
    • 1
    • 2
    • 3

    创建成功

    用户、用户组管理

    用户、用户组的概念

    Linux系统中可以:

    • 配置多个用户
    • 配置多个用户组
    • 用户可以加入到多个用户组中

    这个没有什么可解释的,多用户操作系统

    但是用户一多,就采用组的方式管理比较舒服,一个团队有开发组、项目组、销售组等等,一个人也可以在多个组,可能是多劳多得。

    Linux中关于权限的管控级别有2个级别,分别是:

    • 针对用户的权限控制
    • 针对用户组的权限控制

    比如,针对某文件,可以控制用户的权限,也可以控制用户组的权限

    所以,我们需要学习在Linux中进行用户、用户组管理的基础命令,为后面学习权限控制打下基础

    用户是在组里面的,管理用户是管理一个人,对个人有用,为了方便,可以同时管理多个人,这是就需要多个组了,

    权限,那就是你有没有这个权限去干这件事,打开文件、下载东西

    这个我就想到了一个例子,比如发朋友圈,我可以想让谁看就让谁看,不让老师看见,那么因为我加了好几个老师的微信,所以送可以给是老师的好友加上标签,直接给这个标签设置一个权限,就可以了。

    用户、用户组管理的命令

    执行这些命令肯定需要root权限啦

    用户组管

    • 创建用户组:groupadd 用户组名
    • 删除用户组:groupdel 用户组名
    [root@192 ~]# groupadd testgr
    [root@192 ~]# groupdel testgr
    
    • 1
    • 2

    这是一个最基本的用户组添加与删除操作

    [root@192 ~]# groupadd gop
    
    • 1

    为了学习,我创建一个用户组gop

    用户管理

    • 创建用户:user [-g -d] 用户名

      • 选项:-g指定用户的组,不指定-g,会创建同名组并自动加入,指定-g需要组已经存在,如已存在同名组,必须使用-g
      • 选项:-d指定用户的HOME路径,不指定,HOME目录默认在:/home/用户名
      [root@192 ~]# useradd u2
      
      • 1

      在没有指定任何选项的时候,一起默认创建。会先创建一个u2的用户组,然后他的工作目录是/home/u2

      [root@192 ~]# ll /home/
      总用量 4
      drwx------. 16 huan huan 4096 11月 16 13:21 huan
      drwx------.  3 u1   u1     78 11月  4 20:02 u1
      drwx------.  3 u2   u2     78 11月 16 14:14 u2
      
      • 1
      • 2
      • 3
      • 4
      • 5

      我想起来了我之前创建过一个u1,所以现在home里有三个,当然肯定有我们刚刚创建的u2

      [root@192 ~]# useradd -g gop -d /home/uesr/ u3
      
      • 1

      这样,我指定了参数,指定的的用户组是gop,就是刚刚创建的,目录是/home/uesr/ u3

      我们也可以看一下

      [root@192 ~]# su - u3
      [u3@192 ~]$ pwd
      /home/uesr/
      
      • 1
      • 2
      • 3

      切换到u3这个用户,看看当前位置,如果不指定目录,应该是/home/u3。

      可以对比一下我的家目录

      [huan@192 ~]$ pwd
      /home/huan
      [u2@192 ~]$ pwd
      /home/u2
      
      • 1
      • 2
      • 3
      • 4

      可以看出来指定了用户的家目录就是不一样

    • 删除用户:userdel [-r] 用户名

      • 选项:-r,删除用户的HOME目录,不使用-r,删除用户时,HOME目录保留
      [root@192 ~]# userdel u3
      [root@192 ~]# ls /home/
      huan  u1  u2  uesr
      
      • 1
      • 2
      • 3

      不指定-r,用户已经被删除了。但是u3的家目录user还没有被删除

      [root@192 ~]# userdel u3
      [root@192 ~]# ls /home/
      huan  u1  u2  uesr
      
      • 1
      • 2
      • 3

      用户已经被删除了,那么他的家目录留着也没有用了,这时需要手动删除

      [root@192 ~]# userdel -r u2
      [root@192 ~]# ls /home/
      huan  u1
      
      • 1
      • 2
      • 3

      带上-r,家目录连用户一起删除

    • 查看用户所属组:id [用户名]

      参数:用户名,被查看的用户,如果不提供查看自身

      [root@192 ~]# id
      uid=0(root) gid=0(root) 组=0(root) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
      
      • 1
      • 2

      不写任何参数,查看自己,uid应该是用户id,gid应该是组id

      [root@192 ~]# useradd u -g gop
      [root@192 ~]# su - u
      [u@192 ~]$ id
      uid=1003(u) gid=1002(gop) 组=1002(gop) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
      
      • 1
      • 2
      • 3
      • 4

      我又创建了一个用户u,指定了用户组为gop,会发现有明显的变化,用户id是1003,组id是1002,是gop组的

      [root@192 ~]# id u
      uid=1003(u) gid=1002(gop) 组=1002(gop)
      
      • 1
      • 2

      也可以在root下查看其他id

    • 修改用户所属组:usermod [-aG 用户组 用户名]

      将指定用户加入指定组

      `[root@192 ~]# useradd u4
      [root@192 ~]# id u4
      uid=1004(u4) gid=1004(u4) 组=1004(u4)
      [root@192 ~]# usermod -aG gop u4
      [root@192 ~]# id u4
      uid=1004(u4) gid=1004(u4) 组=1004(u4),1002(gop)
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6

      创建一个用户u4,没有指定组,那么就会自动创建一个同名组,通过id也可以查到

      id是1004,组id是1004,在u4组

      然后我把u4添加到了gop组,

      用户id没有变,组id也没有没变化,唯独组里面是有两个组,一个用户可以在两个组

    getent

    使用getent命令,可以查看当前系统中有哪些用户

    语法:getent passwd

    [root@192 ~]# getent passwd
    
    • 1

    输入这个命令,会出来一大堆内容,这个就是系统中的所有用户。

    我一开始打开会有一个疑问,为什么一下子这么多用户,我感觉加上root用户、我自己的用户,还有一些练习时创建的也就不超过10个呀。

    这样是系统自己创建的

    共有7份信息

    用户名;密码(x):用户ID:组ID:描述信息(无用):HOME目录:执行终端(默认bash)

    我们随便摘出来一个,就以我的用户为例把

    huan:x:1000:1000:huan:/home/huan:/bin/bash
    
    • 1

    可以看出来用户名是huan,密码是X,密码都是X,密码不可以明文显示等等

    [root@192 ~]# getent group
    
    • 1

    查看系统中有哪些组

    huan:x:1000:huan
    
    • 1

    包括2分信息,组名称:组认证(显示为X):组ID

    查看权限控制

    掌握查看Linux文件的权限管控信息

    ls -l这个命令不陌生把,他是把文件的内容以一个列表展开,展示了详细信息。

    image

    这里展示了部分信息,

    在前面我们用这个只是看了这个文件的小大,

    接下来,我们要知道其余几个表达的什么含义

    • 序号1:文件、文件夹的权限控制信息
    • 序号2:文件、文件夹所属用户
    • 序号3:文件、文件夹的所属用户组

    在这里要注意一个问题,有两个huan,但是他们表达的含义不一样,第一个代表所属用户,第二代表所属组。

    至于为什么有两个huan,前面说到过,在创建用户指定组时,会自动创建一个同名组。正好huan这个 用户时系统创建的所以也就出来一个huan的用户组

    接下来,我们分析一下这部分是什么drwxrwxr-x

    权限细节总共分为10个槽位

    举例:-drwxr-xr-x,表示

    • 这是一个文件夹,首字母d表示
    • 所属用户的权限是:有r有w有x,rwx
    • 所属用户组的权限是:有r无w有x,r-x(-表示无此权限)
    • 其他用户的权限是:有r无w有x,r-x

    image

    一共有10个槽位,我怎么看呢,

    一个字母,有很多变化

    • -:表示文件
    • d:表示文件夹
    • -l:软连接
    • b:设备文件
    • c:字符设备文件
    • p:管道文件

    这么多可能记不住,目前我们的重点应该放在文件与文件夹的区分上,文件(-);文件夹(d)

    drwxrwxr-x. 4 huan huan  26 11月  9 15:00 test1
    
    • 1

    drwxrwxr中d开头,那么表示一个文件夹

    -rw-rw-r--. 1 huan huan   0 11月 13 12:22 test.txt
    
    • 1

    -rw-rw-r--中-开头,那么是一个文件

    一共是个槽位,第一个槽位已经知道了,还剩下9个,正好,他们3个一组。

    image

    三个一组,分别对应了不同的权限,用户、用户组,其他用户。

    image

    权限控制信息刚好与ls -l展开的信息有呼应。

    所属用户权限对应序号2,所属用户组权限对应序号3

    image

    现在举个例子说明

    drwxr-xr-x. 4 huan huan  94 11月 17 09:01 桌面
    
    • 1

    这是个目录,第一个huan表示用户,可以看出huan这个用户对这个目录有rwx权限,

    第二个huan表示用户组,有r-x权限,

    其他用户,那就是不在huan这个用户组里面的用户,只有r-x权限

    dr-xr-x---.  16 root root 4096 11月 17 18:16 root
    
    • 1

    root用户有r-x权限,root组用户也是有r-x权限,其他用户没有权限

    drwxr-xr-x. 2 u1 gop 6 11月 18 17:32 test
    
    • 1

    这个呢,用户名和用户组名不一样了。

    u1是用户,对这个文件夹有rwx权限,用户组gop对这个文件有r-x权限,其他用户也只有r-x权限

    在这里要说一下用户和用户组的关系,用户组包括这个用户,

    那么就是u1所在的用户组就是rop

    huan所在的用户组就是huan

    掌握读、写、执行三种权限的含义

    那么,rwx到底代表什么呢

    • r表示读权限
    • w表示写权限
    • x表示执行权限

    针对文件、我文件夹的不同,rwx的含义有细微差别

    • r,针对文件可以查看文件内容
      • 针对文件夹,可以查看文件夹的内容,如ls
    • w,针对文件可以修改此文件
      • 针对文件夹,可以在文件夹内:创建、删除、改名等操作
    • x,针对文件表示可以将文件作为程序执行
      • 针对文件夹,表示可以更改工作目录到此文件夹,即cd进入

    Linux说起来很难,其实就这个一个权限,就只有三种,可读、可写、可执行。

    drwxr-xr-x. 4 huan huan  94 11月 17 09:01 桌面
    
    • 1

    huan这个用户对文件夹可读可写可执行,而huan用户所在的用户组huan对这个文件是可读可执行不可写;其他用户也是,可读可执行不可写。

    dr-xr-x---.  16 root root 4096 11月 17 18:16 root
    
    • 1

    这个呢,root用户和root用所在的组可以对文件夹进行可读可执行,但是不可以写,其他用户没有权限

    drwxr-xr-x. 2 u1 gop 6 11月 18 17:32 test
    
    • 1

    u1用户可以对这个文件夹可读可写可执行,而u1所在的gop用户组里的成员和其他用户可以对这个文件夹可读可执行,不可写

    root这个文件夹是root用户家目录的文件夹,其他用户没有任何权限,那么我现在用我的用户huan进入这个文件夹,看看会怎么样

    [huan@192 /]$ cd root
    -bash: cd: root: 权限不够
    
    • 1
    • 2

    权限不够

    修改权限控制 - chmod

    使用chmod修改权限信息

    我们可以使用chmod命令,修改文件、文件夹的权限信息。

    注意,只有文件、文件夹的所属用户或root用户可以修改。

    语法:chmod [-R] 权限 文件或文件夹

    • 选项:-R,对文件夹内部的全部内容应用同样的操作。

    权限不是一成不变的。可以修改,可以让别人对这个文件有可读可写可执行的权限。

    但是修改的时候,必须是文件、文件夹的所属用户和root用户可以修改。

    [huan@192 桌面]$ ll
    总用量 0
    drwxrwxr-x. 2 huan huan 6 11月 19 10:17 test
    -rw-rw-r--. 1 huan huan 0 11月 19 10:17 test.txt
    
    • 1
    • 2
    • 3
    • 4

    为了方便学习,我在桌面创建了一个文件夹test和一个文件test.txt,

    先分析一下他们现在的权限

    • test文件夹,用户huan和huan所在的用户组都是可读可写可执行,其他用户可读可执行不可以写
    • test.txt文件,用户huan和huan所在的用户组都是可读可写不可执行,其他用户可读不可写不可执行

    现在,改变他们的权限。

    [huan@192 桌面]$ chmod u=rwx,g=r,o=r test.txt
    
    • 1

    chmod命令,可以修改权限,根据语法,我们可以看到要修改成的权限是u=rwx,g=r,o=r 要进行权限修改的文件是test.txt

    现在我们分析一下u=rwx,g=r,o=r是什么意思, rwx不必多说,对应读、写、执行。那么u、g、o呢

    • u:user,表示用户,所属用户权限
    • g:group,表示组,是所属用户组权限
    • o:other,表示其他。其他用户权限

    那么对应这条命令就是

    我要修改这个test.txt文件,让这个文件的所属用户有可读可写可执行的权限,让用户组和其他用户,只有可读权限

    -rwxr--r--. 1 huan huan 0 11月 19 10:17 test.txt
    
    • 1

    也可以查看一下,刚好对应

    修改文件夹权限。

    在修改文件夹权限之前,我在文件夹里面有创建了一个文件和一个文件夹

    [huan@192 桌面]$ ll test
    总用量 0
    drwxrwxr-x. 2 huan huan 6 11月 19 10:35 test1
    -rw-rw-r--. 1 huan huan 0 11月 19 10:35 test1.txt
    
    • 1
    • 2
    • 3
    • 4

    重点放在权限上。

    然后修改test文件夹权限

    [huan@192 桌面]$ chmod u=rwx,g=rwx,o=rwx test
    
    • 1

    这条命令,对所属用户、所属用户组和其他用户都有可读可写可执行。

    drwxrwxrwx. 3 huan huan 36 11月 19 10:35 test
    
    • 1

    改过来了,然后我们再查看一下文件夹里面的内容,权限有没有改变

    [huan@192 桌面]$ ll test
    总用量 0
    drwxrwxr-x. 2 huan huan 6 11月 19 10:35 test1
    -rw-rw-r--. 1 huan huan 0 11月 19 10:35 test1.txt
    
    • 1
    • 2
    • 3
    • 4

    文件夹里面的文件和文件夹的权限是没有有=改变的

    这是因为我们没有加上-R选项

    -R选项就是对这个文件夹内部的文件都赋予同一个权限

    [huan@192 桌面]$ chmod -R u=rwx,g=rwx,o=rwx test
    [huan@192 桌面]$ ll test
    总用量 0
    drwxrwxrwx. 2 huan huan 6 11月 19 10:35 test1
    -rwxrwxrwx. 1 huan huan 0 11月 19 10:35 test1.txt
    
    • 1
    • 2
    • 3
    • 4
    • 5

    文件夹里面的内容和文件夹都是一个权限了。

    总结

    • chomd命令就是起到了一个修改权限的目的,但是在修改权限之前要明白只有文件的所属用户或者管理员可以修改,其他用户和用户组里的成员不可以修改,要是可以修改,那岂不是乱了套,你的钱我可以花?
    • 在修改权限的时候,u(user 用户)、r(group 组)、o(other 其他)需要更改谁的控制权限,就直接在=后面加上对应得rex权限,没有权限可以不写
    • 如果是文件夹,那么就要考虑带不带-R,是否要让里面的内容都用同一个权限。

    使用数字序号标记权限

    权限可以用3未数字来表示,第一位数字表示用户权限,第二位数字表示用户组权限,第三位数字表示其他用户权限。

    数字的细节如下:r记为4,w记为2,x记为1,可以有:

    • 0:无任何权限,即—
    • 1,仅有x权限,即–x
    • 2,仅有w权限,即-w-
    • 3,有w和x权限,即-wx
    • 4,仅有r权限,即r–
    • 5,有r和x权限,即r-x
    • 6,有r和w权限,即rw-
    • 7,有全部权限,即rwx

    这个的出现就是为了方便我们偷懒,

    [huan@192 桌面]$ chmod u=rwx,g=r,o=r test.txt
    
    • 1

    这是我们在刚才修改权限用的方法,一大长串。那么有没有更方便的,那就是数字序号

    如果把上面的这段代码改成数字序号,那就是

    [huan@192 桌面]$ chmod 744 test.txt
    
    • 1

    744,那就是rwx(7) r–(4) r–(4)

    这么一看,代码量一下子少了

    现在我创建一个1.txt文件,

    -rw-rw-r--. 1 huan huan  0 11月 19 11:13 1.txt
    
    • 1

    采用数字的方法修改权限

    [huan@192 桌面]$ chmod 744 1.txt
    
    • 1

    我们看一下修改后的权限

    -rwxr--r--. 1 huan huan  0 11月 19 11:13 1.txt
    
    • 1

    rwx(7) r–(4) r–(4)一一对应

    案例

    将hello.txt的权限修改为:r-x–xr-x,数字序号为:

    chmod 515 hello.txt
    
    • 1

    将hello.txt的权限修改为:-wx-w-rw-,数字序号为:

    chmod 326 hello.txt
    
    • 1

    序号123代表的权限是:

    --x-w--wx

    总结

    • 数字权限就是为了偷懒,三位数字对应的三种用户的权限控制。
    • r记为4,w记为2,x记为1,会有8中变化。

    修改权限控制命令 - chown

    使用chown命令,可以修改文件、文件夹的所属用户和用户组

    普通用户无法修改所属为其他用户或组,所以此命令只适用于root用户执行

    语法:chown [-R] [用户] [:] [用户组] 文件或文件夹

    • 选项,-R,同chmod,对文件夹内部全部内容对用相同规则
    • 选项,用户,修改所属用户
    • 选项,用户组,修改所属用户组
    • :用于分隔用户和用户组

    chmod命令可以修改文件的权限信息,谁可以访问,谁不可以访问,

    那么chown命令可以修改文件的所属信息,这个文件改成你的,或者改成他的。

    这项操作只能说只有root用户可以操作

    • 仅修改所属用户

      [root@192 桌面]# chown root 1.txt
      
      • 1

      修改1.txt文件的所属用户为root。

      -rwxr--r--. 1 root huan  0 11月 19 11:13 1.txt
      
      • 1
    • 仅修改用户组

      [root@192 桌面]# chown :root 1.txt
      
      • 1

      单独修改文件的所属用户组。修改为root

      注意:要加上,作为用户和用户组的区分

    • 修改所属用户和用户组

      [root@192 桌面]# chown u1:gop 1.txt
      
      • 1

      所属用户和用户组都修改

      -rwxr--r--. 1 u1   gop   0 11月 19 11:13 1.txt
      
      • 1
    • -R选项

      [root@192 桌面]# chown -R u1:gop test
      
      • 1

      那就是文件夹连同文件夹里面的内容都被修改

      [root@192 桌面]# ll test
      总用量 0
      drwxrwxrwx. 2 u1 gop 6 11月 19 10:35 test1
      -rwxrwxrwx. 1 u1 gop 0 11月 19 10:35 test1.txt
      
      • 1
      • 2
      • 3
      • 4

    总结

    • 这条命令起到了什么作用,就是这个文件本来是我的,现在,我通过命令可以把这个文件夹改成是你的,提前说我必须是管理员
    • 注意:,如果要写改组,那么必须要加上:,作为用户个组的分隔。

    总结

    以上就是全部内容,这部分主要在说Linux多用户是如何使用的

    用户的创建、删除等操作,组的操作

    权限的修改。

    但是这篇笔记都在演示记录,并没有具体的是如何操作他们。我想试着把课上老师给我们演示的方法我复现一遍。具体看看权限改了,这个用户是不是访问不了了。

    我先把我系统中创建的用户和组全部删除了。

    getent passwd命令可以查看当前系统中有哪些用户

    ...
    huan:x:1000:1000:huan:/home/huan:/bin/bash
    u1:x:1001:1002::/home/u1:/bin/bash
    
    • 1
    • 2
    • 3

    huan是系统中第一个普通用户,那么,huan下面的用户应该都是我创建的用户。

    userdel删除

    getent group查看有哪些组,

    ...
    huan:x:1000:huan
    gop:x:1002:
    
    • 1
    • 2
    • 3

    同样我把huan以下的全部删除

    然后我重新创建一个组group1和用户user1,然后user1应该在group1组里面。

    创建用户useradd、创建组groupadd,为了方便,先创建组,然后用useradd的-g选项直接把用户创建进去

    在这里,我在用默认参数创建一个用户uesr2,然后用usermod添加到group1里面把。我也想看看所属用户组真的有这些权限?

    [root@192 桌面]# id
    uid=0(root) gid=0(root) 组=0(root) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
    
    [root@192 桌面]# id huan
    uid=1000(huan) gid=1000(huan) 组=1000(huan)
    
    [root@192 桌面]# id user1
    uid=1001(user1) gid=1001(group1) 组=1001(group1)
    
    [root@192 桌面]# id user2
    uid=1002(user2) gid=1002(user2) 组=1002(user2),1001(group1)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    现在是4个用户,三个组。

    [root@192 /]# mkdir test
    
    • 1

    我现在是root用户,我在根目录创建了一个test文件夹

    drwxr-xr-x.   2 root root    6 11月 19 14:19 test
    
    • 1

    他的权限是root用户可读可写可执行,root组用户和其他用户只能读和执行,那就是不能写,除了root用户,所有人都不可以在这个文件夹里面创建、删除、改名等操作,可以读,那就是可以ls,那我在往里面创建几个文件

    可以执行,那就是可以cd到里面,

    [root@192 test]# ll
    总用量 0
    drwxr-xr-x. 2 root root 6 11月 19 14:25 a
    drwxr-xr-x. 2 root root 6 11月 19 14:25 b
    drwxr-xr-x. 2 root root 6 11月 19 14:25 c
    
    • 1
    • 2
    • 3
    • 4
    • 5

    我又在test里面创建了三个文件夹,都是root。现在我们开始实验

    [huan@192 /]$ ll test/
    总用量 0
    drwxr-xr-x. 2 root root 6 11月 19 14:25 a
    drwxr-xr-x. 2 root root 6 11月 19 14:25 b
    drwxr-xr-x. 2 root root 6 11月 19 14:25 c
    
    • 1
    • 2
    • 3
    • 4
    • 5

    现在我用的是huan这个用户,我可以ll查看文件夹里面的内容,这也就是读。

    [huan@192 /]$ cd test/
    [huan@192 test]$ pwd
    /test
    
    • 1
    • 2
    • 3

    cd可以进入到这个文件夹,

    [huan@192 test]$ mkdir d
    mkdir: 无法创建目录"d": 权限不够
    
    • 1
    • 2

    我想创建一个d文件夹,提示我权限不够,

    那我现在修改这个文件的放权限,让其他用户可以对这个文件进行可读可写可执行,现在可以可读可写了,

    [root@192 /]# chmod 757 test/
    
    • 1

    这里我用的是权限数字,757对应的7(rwx) 5(r-x) 7(rwx),让其他的用户有读写执行的能力

    drwxr-xrwx.   5 root root   33 11月 19 14:25 test
    
    • 1

    现在的权限。

    [huan@192 test]$ mkdir d
    [huan@192 test]$ ls
    a  b  c  d
    
    • 1
    • 2
    • 3

    huan这个用户一开始是不能在test文件夹里面创建文件,现在有权限了,

    证明,权限生效了。

    drwxrwxr-x. 2 huan huan 6 11月 20 09:40 d
    
    • 1

    这是我创建的文件夹,他的权限是我自己和我的组成员都可以可读可写可执行,其他用户不能写。

    [user1@192 d]$ mkdir e
    mkdir: 无法创建目录"e": 权限不够
    
    • 1
    • 2

    这个是情理之中。

    那如果我把这个文件的所属组改成group1,那是不是user1和user2进行可读可写可执行了。试试

    chown命令,修改文件所属信息,如果修改组,要有:,

    [root@192 test]# chown :group1 d
    
    • 1

    对应这条命令,

    drwxrwxr-x. 2 huan group1 6 11月 20 09:40 d
    
    • 1

    这是我们想要的结果,现在文件夹d的属于group1组,group1组对文件夹有可读可写可执行的权限。

    [user1@192 d]$ mkdir 1
    [user1@192 d]$ ll
    总用量 0
    drwxr-xr-x. 2 user1 group1 6 11月 20 10:06 1
    
    • 1
    • 2
    • 3
    • 4

    果不其然,修改了所属组,现在这个组里的成员都可以对这个文件夹访问了。

    但是这个文件夹其他用户没有写的权限,同组用户也没有写的权限

    [huan@192 1]$ mkdir 111
    mkdir: 无法创建目录"111": 权限不够
    [huan@192 1]$ [user1@192 d]$ mkdir 1
    
    • 1
    • 2
    • 3

    用户huan权限不够,

    [user2@192 1]$ mkdir 2
    mkdir: 无法创建目录"2": 权限不够
    
    • 1
    • 2

    也是权限不够。

    现在我们修改权限,

    [user1@192 d]$ chmod o=rwx 1
    [user1@192 d]$ ll
    总用量 0
    drwxr-xrwx. 2 user1 group1 6 11月 20 10:06 1
    
    • 1
    • 2
    • 3
    • 4

    修改完,看权限

    [huan@192 1]$ mkdir 111
    [huan@192 1]$ ll
    总用量 0
    drwxrwxr-x. 2 huan huan 6 11月 20 10:16 111
    [huan@192 1]$ pwd
    /test/d/1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    huan用户可以创建文件了。

    [user2@192 1]$ mkdir 2
    mkdir: 无法创建目录"2": 权限不够
    
    • 1
    • 2

    user2还是没有权限,我们看一下现在1文件夹的权限

    drwxr-xrwx. 3 user1 group1 17 11月 20 10:16 1
    
    • 1

    虽然其他用户的权限是rwx,但是可以看成user2算作用户组的权限,不能写,现在我把文件夹的所属用户改成user2,那就可以了

    [root@192 d]# chown user2 1
    [root@192 d]# ll
    总用量 0
    drwxr-xrwx. 3 user2 group1 17 11月 20 10:16 1
    
    • 1
    • 2
    • 3
    • 4

    修改后,现在,文件夹属于user2,user2可以进行rwx,但是user1安照group1对待,r-x

    [user2@192 1]$ mkdir 222
    [user2@192 1]$ ll
    总用量 0
    drwxrwxr-x. 2 huan  huan  6 11月 20 10:16 111
    drwxrwxr-x. 2 user2 user2 6 11月 20 10:23 222
    
    • 1
    • 2
    • 3
    • 4
    • 5
    [user1@192 1]$ mkdir 333
    mkdir: 无法创建目录"333": 权限不够
    [user1@192 1]$
    
    • 1
    • 2
    • 3

    end

    这篇的学习总结有点多。

    权限还是有些难度的。因为目前处于学习阶段,这个Linux就只是我一个人用的。如果在工作,那是不是就是管理

    主要还是要理清楚,我在实验的时候也是翻前面的笔记,然后做的。

    好了,我的笔记到此结束。

    里面肯定有许许多多的bug,欢迎大家指出!毕竟这样成长更快。

    也感谢大家可以看到这样,如果帮到了你,是我的荣幸。

    谢谢大家!
    er1@192 d]$ ll
    总用量 0
    drwxr-xrwx. 2 user1 group1 6 11月 20 10:06 1

    
    修改完,看权限
    
    
    • 1
    • 2
    • 3

    [huan@192 1]$ mkdir 111
    [huan@192 1]$ ll
    总用量 0
    drwxrwxr-x. 2 huan huan 6 11月 20 10:16 111
    [huan@192 1]$ pwd
    /test/d/1

    
    huan用户可以创建文件了。
    
    
    • 1
    • 2
    • 3

    [user2@192 1]$ mkdir 2
    mkdir: 无法创建目录"2": 权限不够

    
    user2还是没有权限,我们看一下现在1文件夹的权限
    
    
    • 1
    • 2
    • 3

    drwxr-xrwx. 3 user1 group1 17 11月 20 10:16 1

    
    虽然其他用户的权限是rwx,但是可以看成user2算作用户组的权限,不能写,现在我把文件夹的所属用户改成user2,那就可以了
    
    
    • 1
    • 2
    • 3

    [root@192 d]# chown user2 1
    [root@192 d]# ll
    总用量 0
    drwxr-xrwx. 3 user2 group1 17 11月 20 10:16 1

    
    修改后,现在,文件夹属于user2,user2可以进行rwx,但是user1安照group1对待,r-x
    
    
    • 1
    • 2
    • 3

    [user2@192 1]$ mkdir 222
    [user2@192 1]$ ll
    总用量 0
    drwxrwxr-x. 2 huan huan 6 11月 20 10:16 111
    drwxrwxr-x. 2 user2 user2 6 11月 20 10:23 222

    
    
    • 1

    [user1@192 1]$ mkdir 333
    mkdir: 无法创建目录"333": 权限不够
    [user1@192 1]$

    
    end
    
    这篇的学习总结有点多。
    
    权限还是有些难度的。因为目前处于学习阶段,这个Linux就只是我一个人用的。如果在工作,那是不是就是管理
    
    主要还是要理清楚,我在实验的时候也是翻前面的笔记,然后做的。
    
    > 好了,我的笔记到此结束。 
    >
    > 里面肯定有许许多多的bug,欢迎大家指出!毕竟这样成长更快。
    >
    > 也感谢大家可以看到这样,如果帮到了你,是我的荣幸。
    >
    > 谢谢大家!
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
  • 相关阅读:
    【力扣每日一题】2023.9.10 课程表Ⅱ
    MySQL事务
    华清 Qt day2 9月18
    西门子——好用的通讯仿真通讯工具NetToPLCsim
    资源分享--Docker从入门到实践
    【开源】基于正点原子alpha开发板的第三篇系统移植
    Delphi 开发过程中简单的版本管理与回退
    使用argparse进行调参
    前端面试题:在浏览器输入url回车后发生什么?浏览器渲染页面详细流程
    04.在谷歌浏览器中安装模拟浏览器ChromeDriver的详细步骤
  • 原文地址:https://blog.csdn.net/qq_45348840/article/details/127946081