一、开源许可证 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安装
首先需要在自己的电脑上安装Vmware Worstation pro(windows)或者VMware Fusion(MAC)。
1.虚拟机配置部分
到此就已经完成了虚拟机的配置工作,接下来就是启动虚拟机来安装Linux系统了。
2. 系统安装
至此系统已经全部安装完成。下面就可以启动使用了(☆_☆)/~~
(二)Rocky8 Linux安装
1. 虚拟机配置部分
此部分方法同centos7.9安装的虚拟机配置部分
2. 系统安装
至此Rocky8安装完成,重启就可以使用啦O(∩_∩)O
(三)、Ubuntu20.04安装
1. 虚拟机配置部分
配置方法可按照centos7.9虚拟机配置部分来操作。
2. 系统安装
至此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
命令。 apropos
和whatis
命令都依靠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手册的目录结构
名称 | 含义 |
---|---|
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 -
:切换到之前访问的目录
ls
和pwd
:查看目录。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
,防止误删
- option:
rmdir
:删除目录用法:
rmdir 目录名
只能删除空目录。mv
:移动或者修改目录名mv a b
:将目录名a改为bmv a ../
:将a目录移动到上一级目录中
cp
:拷贝目录或文件用法:
cp [OPTION]... SOURCE... DIRECTORY
- option:
- -f:强制
- -i:当目标档存在是,覆盖前会询问
- -p:文件的属性一起复制过去,备份常用
- -r:递归复制,复制目录时用
- option:
find
:搜索查找目录或文件用法:
find path [option] 搜索内容
- option:
- 按照文件名搜索
- -name:按文件名搜索
- -iname:不区分大小写
- 按文件大小
- -size [+/-]文件大小:搜索指定大小文件或大于/小于该大小的文件
- 按修改时间
- -atime [+/-]时间:访问时间搜索
- -mtime [+/-]时间:修改时间
- -ctime [+/-]时间:属性修改时间
- 以-mtime为例:-5表示五天内修改的文件,5表示5~6天那一天修改的;+5表示6天前修改的。
- 按照文件名搜索
- option:
2. 文件操作命令
touch
:创建文件用法:
touch 文件名
Tips:
vi 文件名
也可以创建文件,另外还可以编辑文件rm
:删除文件,用法目录操作mv
:移动或重命名,用法同目录操作cp
:拷贝,用法同目录操作cat
:查看文件内容用法:
cat [OPTION]... [FILE]...
- option:
- -b:显示行号,只显示有文字的行,空行不标注行号
- -n:显示行号,是显示全部的行。
- option:
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 usersu 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可以一次性有效