第一周作业总结

一、开源许可证 GPL、BSD、MIT、Mozilla、Apache和LGPL的区别?

讲到开源许可证(Open Source License),首先需要了解什么是开源许可(⊙⊙?)。它其实就是一种法律许可,这样你就可以开源自己的代码,其他人可以免费使用以及修改,不会带来侵权行为。

国际上有上百种开源许可证,其中大致分为两类:宽松式许可证、Copyleft许可证。

主流的开源许可证主要有:GPL、Mozilla(MPL)、LGPL、BSD、MIT、Apache。这六种主流开源许可协议的宽松程度,可参考下图:

许可协议图解

1. GPL许可证

  • GPL是GNU通用公共许可协议,由自由软件基金会公布的。最显著的特征就是强制继承性。也就是说只要在一个软件中使用了GPL,那么该软件必须采用GPL。所以商业软件以及对代码保密要求高的部门就不适合集成或采用作为类库以及二次开发的基础。
  • GPL许可证允许源代码公开并被随意支配修改,从而衍生出自己的作品。但也就意味着自身的作品也必须开源随意任别人支配。

2. MPL

  • MPL是Mozilla公共许可证,由Mozilla基金会发布。因为Netscape公司认为GPL许可证不能很好的平衡开发者对源代码的需求以及利用源代码获得利益。
  • MPL一个特点就是不像GPL许可证那么强制性,它允许与其他许可证授权的文件混合。也就是说一个遵循MPL许可的软件可以对MPL源代码再度开发,但是引用MPL的部分以及修改的部分必须是MPL许可的;额外的部分可以不用受MPL许可证强制对外许可了。
  • MPL既不像MIT和BSD那样允许派生作品完全转化为私有,也不像GPL那样要求所有的派生作品包括新的组件在内的作品全部必须保持GPL。
  • MPL协议通过允许在派生项目中存在私有模块,同时保证核心文件的开源,同时激励了商业及开源社区来参与帮助开发核心软件。该协议融合BSD和GPL的特性,追求平衡专有软件和开源软件开发者之间的顾虑。

3. LGPL

  • 是GNU宽通用公共许可证。
  • 专门用于类库使用的开源协议,他允许商业软件通过类库引用方式使用LGPL类库,但不用开源商业软件代码。这样就可以将采用LGPL的开源代码用于商业用途。
  • LGPL协议适合于那些将LGPL协议的开源代码作为第三方类库来使用,不适合将开源代码修改和衍生的再度开发的软件使用,因为所有修改的代码、设计修改部分的额外代码和衍生的代码都必须采用LGPL协议。

4. BSD许可协议

  • 由加州大学伯克利分校发布和维护,是自由软件中使用最广泛的许可协议之一。
  • 它赋予使用者很大的自由,可以自由使用、修改源代码,最主要的是修改后的代码可以开源也可专有发布
  • 这么大权限的背后也是有限制的,若你发布使用BSD协议的代码或以BSD协议代码为基础再度开发的产品,须满足三点:
    • 若再发布的产品包含源代码,则在源代码中必须带有代码中的BSD协议。
    • 若再发布的只是二进制类库或软件,则需要在类库或软件的文档和版权声明中包含原来代码的BSD协议。
    • 不可以用开源代码的作者或机构名字和原来产品的名字做市场推广。

5. MIT

  • 来源于麻省理工学院,又称X许可证X11许可证。是许多软件许可条款中广泛使用之一。MIT协议是比较宽松的软件许可协议,赋予软件被许可人更大的权利更少的限制
  • 被许可人有权使用、修改、合并、出版发行软件,授予供应人同等权利。但是在软件和软件的所有副本中都必须包含以上著作权声明和本许可声明。
  • MIT的内容可依照软件代码著作权者的需求更改内容。
  • 也可与其他许可协议共存

6. Apache许可证协议

  • 由Apache软件基金会发布。与BSD类似,鼓励代码共享和尊重原作者著作权
  • 未修改的部分应用相同许可,并且在每个许可文件中,必须保留原代码中的任何原始著作权专利商标归属通知。(若声明文件作为原始作品发布,衍生产品必须包含)
  • 更改的文件中,必须加一条说明,标明对该文件进行了修改。
  • 不强制要求派生的产品使用相同的许可协议来发布。

7. 概括总结

  • 这几种开源许可证有宽松到严谨依次为MIT许可证、BSD许可证、Apache许可证、LGPL许可证、Mozilla许可证以及GPL许可证。
  • MIT、BSD许可证源自大学,体现了简单开放和包容的特点。
  • MIT、BSD、Apache都支持闭源的后续开发。
  • LGPL、Mozilla、GPL转染性开源,编译的代码里采用这些许可的,都必须开源。

对于开发人员在将自己软件代码开源时,一定要选择合适的许可证。

参考:

二、各发行版系统安装

(一)、centos7.9安装

下载地址:https://mirrors.tuna.tsinghua.edu.cn/centos/

首先需要在自己的电脑上安装Vmware Worstation pro(windows)或者VMware Fusion(MAC)。

1.虚拟机配置部分

1.打开VMware软件,按照图中标注点击创建新的虚拟机

2.选择典型,进行下一步

3.选择稍后安装操作系统,下一步

4.选择虚拟机操作系统

5.设置虚拟机名称以及存放位置

6.指定虚拟机的磁盘大小,这个大小是之后安装的Linux系统而磁盘大小,不是真正而占用自己电脑的大小,所以不用担心自己硬盘大小不够的情况

7.点击自定义硬件

8.首先选择内存,将内存分配2G,这个要根据自己电脑内存的大小来确定,不要设置的太大

9.选择处理器的数量

10.指定Linux系统镜像文件所在的位置。然后点击关闭

11.点击完成

到此就已经完成了虚拟机的配置工作,接下来就是启动虚拟机来安装Linux系统了。

2. 系统安装

1.点击开启此虚拟机

2.默认光标是在检测镜像文件及安装上,可以按键盘上键来选择直接安装,选择后按Enter键

3.正在检查镜像文件,等待Checking达到100%

4.选择系统的语言

5.设置时区,进去后选择Shanghai

6.安装系统类型

7.选择命令行模式,最小安装,Sever with GUI是窗口界面模式,就像windows一样,但是该模式占用内存比较大

8.安装磁盘

9.选择磁盘

10.连接网络

11.打开网络开关,可以修改下下方的Hostname以便后期方便辨别

12.配置好上面步骤就可以开始安装了

13.在安装界面有账户设置点进去,设置root账户的密码

14.设置完root账户密码后,退到安装界面设置一个用户账户,输入用户名以及密码

15.进度条显示安装完成,点击Finish configuration

16.重启

至此系统已经全部安装完成。下面就可以启动使用了(☆_☆)/~~

(二)Rocky8 Linux安装

1. 虚拟机配置部分

此部分方法同centos7.9安装的虚拟机配置部分

2. 系统安装

1.选择直接安装

2.选择语言

3.选择安装的系统模式

选择安装命令行模式

4.选择磁盘

5.开启网络配置

6.设置root密码

7.添加用户

8.配置完成开始安装

9.安装完成,重启

至此Rocky8安装完成,重启就可以使用啦O(∩_∩)O

(三)、Ubuntu20.04安装

1. 虚拟机配置部分

配置方法可按照centos7.9虚拟机配置部分来操作。

2. 系统安装

1.开启虚拟机

2.按空格键选定English语言

3.空格键选定继续不更新

4.默认就好,按空格键下一步

5.分配ip地址,等到ip地址显示了,按空格键下一步

6.默认,按空格键下一步

7.按Tab键,将光标切换到Mirror address一栏,输入阿里云镜像源,然后按Tab键到Done,按空格键下一步

8.默认,按Tab键跳到Done,按空格键下一步

9.默认

选择Continue

10.设置用户名及密码

11.默认

12.按空格键选中标注位置,一定要选择,然后下一步

13.默认,下一步

14.安装,等待完毕

至此Ubuntu安装完毕,重启。Ubuntu默认不开启root账号,所以需要用刚才安装时创建的用户账号登录,然后输入sudo -i,根据提示输入用户密码,就可以切换到 root用户了,然后vim /etc/ssh/sshd_config,在/etc/ssh/sshd_config文件中找到#PermitRootlogin prohibit-passqword,将其改成PermitRootlogin yes,然后保存退出。最后利用systemctl restart sshd,重启ssh服务就可以以root账户登录了。

三、man命令总结

(一)、通过一个简短的关键字,来获取相关命令,例如awk

  • man命令行中有两个参数可以从系统说明文件中,将包含查找关键字(例如awk)的全部列出来。
  • 第一个参数就是-k,用法man -k 关键字。该参数就是利用关键字在说明文件中模糊查找关键字。这个命令参数相当于apropos命令。
  • 第二个参数就是-f,用法man -f 关键字。该参数是在说明文件中查找以关键字开头的索引信息。相当于whatis命令。
  • aproposwhatis命令都依靠whatis数据库,没有建立的系统需要利用root用户身份执行mandb命令来创建这个数据库。

(二)、通过命令的描述,选择一个命令,获取命令的man文档

  • 通过man -k awk
[10:35:56 root@centos7 ~]$ man -k awk
a2p (1)              - Awk to Perl translator
awk (1)              - pattern scanning and processing language
dgawk (1)            - pattern scanning and processing language
English (3pm)        - use nice English (or awk) names for ugly punctuation variables
gawk (1)             - pattern scanning and processing language
igawk (1)            - gawk with include files
pgawk (1)            - pattern scanning and processing language
  • -后面就是对命令的描述信息,根据这些信息选择awk(1),利用man awk就可以查看该命令的man文档。

(三)、解读man文档,man分几个部分?man每个部分的解释,特别是语法部分。

[11:02:18 root@centos7 ~]$ man mkdir

man文档内容

man手册的目录结构

名称 含义
NAME 名称
SYNOPSIS 命令语法(摘要)
DESCRIPTION 命令完整描述
AYTHOR 作者
REPORTION BUGS 报告的错误
COPYRIGHT 版权
SEE ALSO 查看相关信息
  • 进入文档后第一行看到的就是MKDIR(1),那么(1)是什么意思呢?man手册有9个section,每个section对应的含义:
section序号 含义
1 可执行文件或者shell命令
2 系统调用(内核提供的函数)
3 库函数
4 特别的文件(通常在/dev)
5 文件格式,例/etc/passwd
6 游戏
7 杂项(包括宏包)
8 系统管理员命令(通常为root用户使用)
9 内核例程(非标准例程)
  • NAME:解释命令的名称含义
  • SYNOPSIS:命令语法

mkdir [option]... DIRECTORY..,表示的是这个命令的用法。其中[]表示的是这个参数不是必须的,可选的...表示这些参数可以重复出现多次。有的命令的语法格式中可能还包括<>,这表示必须提供的参数。a|b表示二选一,或多选一。

例:ls操作

[11:56:41 root@centos7 ~]$ ls --help
Usage: ls [OPTION]... [FILE]...
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.

Mandatory arguments to long options are mandatory for short options too.
  -a, --all                  do not ignore entries starting with .
  -A, --almost-all           do not list implied . and ..
      --author               with -l, print the author of each file
  -b, --escape               print C-style escapes for nongraphic characters
      --block-size=SIZE      scale sizes by SIZE before printing them; e.g.,
                               '--block-size=M' prints sizes in units of
                               1,048,576 bytes; see SIZE format below
  -B, --ignore-backups       do not list implied entries ending with ~
  ........省略好多选项

# 从ls的帮助文档可以得知ls的用法。
[11:56:41 root@centos7 ~]$ ls -l a/ 
total 0
-rw-r--r-- 1 root root 0 Jul 31 12:02 a1.txt
-rw-r--r-- 1 root root 0 Jul 31 12:02 a2.txt
-rw-r--r-- 1 root root 0 Jul 31 12:02 a3.txt
-rw-r--r-- 1 root root 0 Jul 31 12:02 a4.txt

[12:03:57 root@centos7 ~]$ ls -l b/
total 0
-rw-r--r-- 1 root root 0 Jul 31 12:03 b1.txt
-rw-r--r-- 1 root root 0 Jul 31 12:03 b2.txt
-rw-r--r-- 1 root root 0 Jul 31 12:03 b3.txt
-rw-r--r-- 1 root root 0 Jul 31 12:03 b4.txt

[12:03:57 root@centos7 ~]$ ls -l -h a/ b/ #ls的[option]...表示可以写多个参数,-l -h就是两个参数。[FILE]...表示可以写多个文件,后面我跟了两个目录a b。
a:
total 4.0K
-rw-r--r-- 1 root root 175 Jul 31 12:05 a1.txt
-rw-r--r-- 1 root root   0 Jul 31 12:02 a2.txt
-rw-r--r-- 1 root root   0 Jul 31 12:02 a3.txt
-rw-r--r-- 1 root root   0 Jul 31 12:02 a4.txt

b:
total 0
-rw-r--r-- 1 root root 0 Jul 31 12:03 b1.txt
-rw-r--r-- 1 root root 0 Jul 31 12:03 b2.txt
-rw-r--r-- 1 root root 0 Jul 31 12:03 b3.txt
-rw-r--r-- 1 root root 0 Jul 31 12:03 b4.txt
  • DESCRIPTION:命令描述

该部分会具体的描述该命令的作用,以及可选的参数有哪些以及对应的参数含义是什么

  • AUTHOR:展示命令的作者
  • REPORTING BUGS:描述报告出BUG信息
  • COPYRIGHT:版权信息
  • SEE ALSO:查看相关信息的位置

四、fstab文件的详细信息

/etc/fstab文件存放了系统的存储设备以及文件系统的信息。它是个文本文件,启动时的配置文件,只有root用户才能编辑它。它决定了一个硬盘(分区)被怎样使用或者说整合到整个系统中的文件。也就是说:用fstab可以自动挂载各种文件系统格式的硬盘、分区、可以动设备等,磁盘手动挂载之后必须把挂载信息写入该文件中,否则下次开机启动时仍然需要重新挂载。实际上挂载记录到/etc/mtab和/proc/mounts文件中。

/etc/fstab文件中的参数详解

[01:22:50 root@rocky8 ~]# cat /etc/fstab #查看fstab文件内容

#
# /etc/fstab
# Created by anaconda on Sat Jul 30 10:32:24 2022
#
# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
# 
/dev/mapper/rl-root     /                       xfs     defaults        0   0
UUID=393f8543-de0e-40ff-a95e-7797b7fb448d /boot                   xfs     defaults        0   0 
/dev/mapper/rl-home     /home                   xfs     defaults        0      0
/dev/mapper/rl-swap     none                    swap    defaults        0      0
# <file systems>        <mountpoint>            <type>    <options>        <dump> <pass>

以第一行/dev/mapper/rl-root / xfs defaults 0 0为例来讲解:

  • <file systems>:挂载设备,展示设备(分区)的名字。例如/dev/mapper/rl-root

  • <mountpoint>:挂载点,告知分区挂载到哪里。例如挂载到/目录。

  • <type>:文件系统的类型,Linux支持很多文件系统:ext2、ext3、xfs、jfs、ntfs、swap和auto等。auto不是一个文件系统,而是让mount命令自动判断文件类型,特别是对于可以动设备、软盘、DVD驱动器,因为可能每次挂载的文件类型不一致。例如xfs

  • <options>:文件系统参数,这是最有用的设置。使所挂载的设备在开机时自动加载、使中文不显示乱码限制对挂载分区读写权限。例如default。常用参数:

    • defaults:使用默认设置,等同于rw、suid、dev、exec、auto、nouser、async。
    • auto:启动时或mount -a 时自动挂载。
    • exec:允许执行此分区的二进制文件。
    • ro:以只读模式挂载文件系统。
    • rw:以读写模式挂载文件系统。
    • user:允许任意用户挂载文件系统。
    • users:允许所有users组中的用户挂载系统
    • nouser:只允许root挂载
    • ower:允许设备所有者挂载
    • sync:I/O同步进行
    • async:I/O异步进行
    • dev:解析文件系统上的块特殊设备
    • suid:允许suid操作和设定sgid位。通常用于一些特殊任务,使一般用户运行程序时临时提升权限。
  • <dump>:备份命令,用数字来决定是否对这个文件系统进行备份。允许的数字是0和1,0表示忽略;1表示进行备份。本例为0。

  • <pass>:这个数值决定需要检查的文件系统的检查顺序。允许的数字是0,1,2。根目录应当获得最高的优先权1,其它所有需要被检查的设备设置2,0表示设备不被fsck检查。

五、FHS结构

FHS(Filesystem Hierarchy Standard, 文件系统层次结构标准),FHS定义了系统中每个区域的用途、所需要的最小构成的文件和目录。定义了两层规范,第一层是/下面的各个目录应该要放什么文件数据。第二层则是针对/usr/var这两个目录的子目录来定义。

六、文件管理,用户管理,组用户,权限管理

(一)、文件管理

1. 目录操作命令

  • cd:切换目录,用法cd 目录名。一些特殊目录格式:

    • cd /:切换到根目录
    • cd ~:切换到当前用户的家目录
    • cd ..:切换到上一级目录
    • cd -:切换到之前访问的目录
  • lspwd:查看目录。

    • ls 目录名:列出目录下的文件。ls -l 目录名以列表形式显示文件;ls -a 目录名将隐藏文件也列出来。
    • pwd查看当前目录的绝对路径
  • mkdir:创建目录

    用法:mkdir [OPTION]... DIRECTORY...

    • -p:递归创建目录
    • 例:mkdir -p a/b会在当前目录下创建a目录,然后在a目录下创建b目录。
  • rm:删除目录或文件

    用法:rm [OPTION]... [FILE]...

    • option:
      • -f:强制删除
      • -i:删除之前会询问是否要删除
      • -r:删除目录
    • Tips:不要轻易使用rm,防止误删
  • rmdir:删除目录

    用法:rmdir 目录名只能删除空目录。

  • mv:移动或者修改目录名

    • mv a b:将目录名a改为b
    • mv a ../:将a目录移动到上一级目录中
  • cp:拷贝目录或文件

    用法:cp [OPTION]... SOURCE... DIRECTORY

    • option:
      • -f:强制
      • -i:当目标档存在是,覆盖前会询问
      • -p:文件的属性一起复制过去,备份常用
      • -r:递归复制,复制目录时用
  • find:搜索查找目录或文件

    用法:find path [option] 搜索内容

    • option:
      • 按照文件名搜索
        • -name:按文件名搜索
        • -iname:不区分大小写
      • 按文件大小
        • -size [+/-]文件大小:搜索指定大小文件或大于/小于该大小的文件
      • 按修改时间
        • -atime [+/-]时间:访问时间搜索
        • -mtime [+/-]时间:修改时间
        • -ctime [+/-]时间:属性修改时间
        • 以-mtime为例:-5表示五天内修改的文件,5表示5~6天那一天修改的;+5表示6天前修改的。

2. 文件操作命令

  • touch:创建文件

    用法:touch 文件名

    Tipsvi 文件名也可以创建文件,另外还可以编辑文件

  • rm:删除文件,用法目录操作

  • mv:移动或重命名,用法同目录操作

  • cp:拷贝,用法同目录操作

  • cat:查看文件内容

    用法:cat [OPTION]... [FILE]...

    • option:
      • -b:显示行号,只显示有文字的行,空行不标注行号
      • -n:显示行号,是显示全部的行。
  • tac:与cat相反,从最后一行开始显示

  • more:一页页显示文件

    • 空格键:向下翻页
    • Enter:向下一行
    • /字符串: 向下搜索
    • q:退出
  • less:一页页翻动显示

    • less -S 文件某行显示不完时,不自动换行,这样看的更清晰更直观。
  • head:默认显示前十行

    • -n num:指定显示几行
  • tail:从最后一行显示,与head相反

(二)用户管理

UID:用户ID号,唯一标识号。

所属用户组:一个用户必须有它的用户组,创建用户时不指定就会自动创建一个同名的而用户组

1. 用户创建

  • useradd:用于创建新的用户

    用法:useradd [option] 用户名

    option:

    • -u:指定用户uid
    • -g:指定用户所属的用户组
    • -G:所属附加组
    • -s:登录的shell解释器
    • -m:创建加目录,用于系统用户
    • -M:不创建加目录,用于非系统用户

​ 例如:useradd yanlinux:添加新用户yanlinux

useradd -g root -s /sbin/nologin yanlinux:添加新用户并将其指定到root用户所属组,登录的shell类型是nologin

2. 设置密码

  • passwd:设置用户的登录密码

​ 用法:passwd [options] [username]passwd后面加username就是设定指定用户的密码,不加username的话就是设置当前用户的密码。

  • options:
    • -d:删除密码
    • -l:锁定用户
    • -u:解锁用户
    • -n:指定最短使用期限
    • -x:指定最大使用期限
    • –stdin:从标准输入接受用户密码。Ubuntu没有该选项

例:passwd:设置当前用户密码

passwd yanlinux:设置yanlinux用户的密码

echo '123456'|passwd --stdin yanlinux:非交互式修改用户密码

  • chage:可以修改用户密码策略

    用法:chage [option]... username

    option:

    • -d:LAST_DAY 更改密码的时间
    • -w:距离密码过期多少天之前提示
    • -I:密码过期后的宽限期
    • -E:用户的有效期

3. 用户属性修改

  • usermod

    用法:usermod [option] 用户名

    option:

    • -u:修改用户uid
    • -g:修改所属用户组
    • -G:修改附加组
    • -s:shell类型
    • -e YYYY-MM-DD:指定用户帐号过期日期

4. 删除用户

  • userdel

    用法userdel [option] 用户名

    option:

    • -f:强制
    • -r:删除用户家目录和邮箱

5. 查看用户ID信息

  • id:可以查看用户的UID、GID等信息

    用法:id [option]... [USER]

    option:

    • -u:
    • -g
    • -G

6. 切换用户或以其他用户身份执行命令

  • SU: switch user

    su username非登录式切换,不会读取目标用户的配置信息,不改变工作目录。

    su - username登录式切换,切换至自己的家目录。

    切换后用exit切换回原来用户。

    su - yanlinux -c 'touch test.txt'表示切换为yanlinux用户后立马执行新建test.txt文件。

(三)组管理

1. 添加组

  • groupadd

    用法:groupadd [option]... groupname

    option:

    • -g: GID
    • -r:创建系统组,ID<1000。

    例:

    groupadd -g 48 -r apache

2. 修改组

  • groupmod:修改组属性

    用法:groupmod [option]... group

    option:

    • -n groupName:修改新名字
    • -g GID:新的GID

    例:

    [root@localhost ~]$ groupmod testgroup userg #修改用户组userg的组名为testgroup

3. 删除组

  • groupdel

    用法:groupdel [option] GROUP

    option:

    • -f:强制
    [root@localhost ~]# groupdel test

4. 更改组成员和密码

  • gpasswd:更改组密码,也可修改附加组成员关系

    用法:gpasswd [option] group

    • -a user:将user添加到指定组
    • -d user:从指定附加组移除用户
    • -A user1,user2,…:设置有管理权限的用户列表

    例:

    [05:59:02 root@rocky8 ~]# groupadd admins
    [09:47:11 root@rocky8 ~]# id yanlinux
    uid=1000(yanlinux) gid=1000(yanlinux) groups=1000(yanlinux)
    [09:47:16 root@rocky8 ~]# gpasswd -a yanlinux admins
    Adding user yanlinux to group admins
    [09:47:38 root@rocky8 ~]# id yanlinux 
    uid=1000(yanlinux) gid=1000(yanlinux) groups=1000(yanlinux),1001(admins)
    
    [09:47:45 root@rocky8 ~]# gpasswd -d yanlinux admins
    Removing user yanlinux from group admins
    [09:48:51 root@rocky8 ~]# id yanlinux 
    uid=1000(yanlinux) gid=1000(yanlinux) groups=1000(yanlinux)
    

5. 更改和查看组成员

  • groupmems:管理附加组的成员关系

    用法:groupmems [option] [action]

    option:

    • -g,–group groupName:更改为指定组,只能是root
    • -a,–add userName:指定用户加入组
    • -d,–delete userName:删除用户
    • -p,–purge:清楚所有成员
    • -l:显示组成员列表
    [09:55:31 root@rocky8 ~]# groupmems -a yanlinux -g admins
    [09:55:59 root@rocky8 ~]# groupmems -l -g admins
    yanlinux 
    [09:56:01 root@rocky8 ~]# id yanlinux 
    uid=1000(yanlinux) gid=1000(yanlinux) groups=1000(yanlinux),1001(admins)
    [09:56:48 root@rocky8 ~]# groupmems -d yanlinux -g admins
    [09:57:10 root@rocky8 ~]# groupmems -l -g admins
    [09:57:13 root@rocky8 ~]# id yanlinux 
    uid=1000(yanlinux) gid=1000(yanlinux) groups=1000(yanlinux)
  • groups:查看用户组关系

    用法:groups [option]. [username]...

(四)权限管理

1. 文件所有者和属组属性操作

  • chown:修改文件的属主,也可以修改文件属组。

    用法:chown [option]... [owner][:[group]] file...

    chown [option]... --reference=RFILE file...

    owner:只修改所有者
    owner:group:同时修改所有者和属组
    :group 只修改属组,冒号可用.替换
    --reference=RFILE  参考指定的文件属性修改
    -R: 递归,慎用!!!

    例:

    [10:16:20 root@rocky8 ~]# ll
    total 8
    -rw-------. 1 root root 1266 Jul 30 06:37 anaconda-ks.cfg
    -rw-r--r--. 1 root root  655 Jul 31 10:16 a.txt
    
    [10:16:41 root@rocky8 ~]# chown yanlinux a.txt 
    [10:17:46 root@rocky8 ~]# ll
    total 8
    -rw-------. 1 root     root 1266 Jul 30 06:37 anaconda-ks.cfg
    -rw-r--r--. 1 yanlinux root  655 Jul 31 10:16 a.txt
    [10:17:49 root@rocky8 ~]# chown :admins a.txt 
    [10:18:27 root@rocky8 ~]# ll
    total 8
    -rw-------. 1 root     root   1266 Jul 30 06:37 anaconda-ks.cfg
    -rw-r--r--. 1 yanlinux admins  655 Jul 31 10:16 a.txt
  • chgrp:修改文件的属组

    用法:chgrp [OPTION]... GROUP FILE...

    chgrp [OPTION]... --reference=RFILE FILE...

    例:

    [10:18:29 root@rocky8 ~]# ll
    total 8
    -rw-------. 1 root     root   1266 Jul 30 06:37 anaconda-ks.cfg
    -rw-r--r--. 1 yanlinux admins  655 Jul 31 10:16 a.txt
    [10:21:24 root@rocky8 ~]# chgrp root a.txt 
    [10:21:50 root@rocky8 ~]# ll
    total 8
    -rw-------. 1 root     root 1266 Jul 30 06:37 anaconda-ks.cfg
    -rw-r--r--. 1 yanlinux root  655 Jul 31 10:16 a.txt

2. 文件的权限

linux文件的管理者分为:

  • 所有者:文件的创建者。owner 属主, u
  • 所属组:创建文件后,该用户所在的组就是文件的默认组。group 属组, g
  • 其他组:other 其他, o

用户的最终权限,是从左向右顺序匹配。

文件信息

①表示文件类型,-表示普通文件,d表示目录,l表示软连接,c字符设备,b块文件

②三个一组,分别是所有者,所属组,其他组。

  • r:数字表示法用4代表。对文件表示可查看;对于目录表示可查看文件夹中的文件列表。
  • w:数字法表示用2代表。对文件表示可以修改文件内容。对于目录表示可以在这个目录中创建和删除文件。
  • x:数字表示法用1表示。对文件表示可以执行此文件;对于目录可以cd进入,可以用ls -l查看目录中文件的元数据。对于知道文件名的文件也可查看文件内容。

③目录就是目录个数,文件就是软连接个数

④文件所有者

⑤文件所属组

⑥文件大小

⑦文件创建时间

⑧文件名称

  • chmod:修改文件权限

    用法:

    chmod [OPTION]... MODE[,MODE]... FILE...
    chmod [OPTION]... OCTAL-MODE FILE...
    #参考RFILE文件的权限,将FILE的修改为同RFILE
    chmod [OPTION]... --reference=RFILE FILE...
    # 修改文件的权限
    # 1.模式法
    [root@rocky ~]# chmod who opt per file
    who:u;g;o;a
    opt:+;-;=
    per:r;w;x
    
    # 例如:给属组添加写的权限
    [root@rocky ~]# chmod g+w a.txt 
    [root@rocky ~]# ll a.txt
    -rw-rw-r--. 1 lgq root 292 Jul  9 17:16 a.txt
    
    # 2.数字法
    r--:100==4
    -w-:010==2
    --x:001==1
    
    # 例如:修改权限为:rwxrw---- a.txt
    [root@rocky ~] # chmod 760 a.txt
    -rwxrw----. 1 lgq root 292 Jul  9 17:16 a.txt

3. 新建文件和目录的默认权限

  • umask的值用来保留在创建文件权限

    • 新建文件的默认权限是666减去umask值,若所得结果某位存在奇数,则将其权限加1,偶数不变

    • 新建目录的默认权限是777减去umask值

    • 普通用户umask默认是002

    • root用户是022

    umask 123 #修改默认umask为123
    # 文件的默认权限
    # 系统的默认umask是0022,文件的权限是666-022=644,如果利用umask修改为123,则文件的权限就改为了666-123=543,但是为了不赋予执行权限,所以所得的奇数都加1,所以他的权限为644。目录的权限为777-123=654。
    # 只实现临时性的文件权限为 000
    
    # 三种方法
    
    [root@rocky ~]$ touch a.txt;chmod 000 a.txt
    [root@rocky ~]$ umask 777;touch a.txt;umask 022
    [root@rocky ~]$ (umask 777;touch a.txt) #小括号内的umask可以一次性有效 

  转载请注明: 焱黎的博客 第一周作业总结

  目录