Linux命令详解之链接命令和权限管理命令,命令详解权限管理


前言

上面一篇介绍了目录和文件的处理命令,其实在Linux中都是最常用的。

这一篇给大家介绍的是链接命令和权限管理命令!!!

一、链接命令:ln

1.1 ln命令概述

命令名称:ln 英文原意:link 命令所在路径:/bin/link 执行权限:所有用户 功能描述:生成链接文件 语法: ln -s 【源文件】【目标文件】

-s 创建软链接

不加 -s 创建硬链接 链接又分为硬链接(Hard Link)和软链接(Soft Link)

1.2 ln命令常用参数

必要参数

1)-b 删除,覆盖以前建立的链接

2)-d 允许超级用户制作目录的硬链接

3)-f 强制执行

4)-i 交互模式,文件存在则提示用户是否覆盖

5)-n 把符号链接视为一般目录

6)-s 软链接(符号链接)

7)-v 显示详细的处理过程 选择参数

1)-S “-S<字尾备份字符串> “或 “–suffix=<字尾备份字符串>”

2)-V “-V<备份方式>”或”–version-control=<备份方式>”

3)–version 显示版本信息

1.3 硬链接

硬链接简介

硬链接相当于给文件起别名,当改硬链接文件修改时,对应的源文件内容也会随之更改。

建立硬链接可以防止误删

硬链接不能跨分区

一般对于目录不能建立硬链接 理解硬链接

举例:我们在temp目录下,创建一个a.txt。为a.tx创建软链接b.txt和c.txt。

当我们去删除a.txt发现c.txt和b.txt的内容还在。

[lance@master temp]$ touch a.txt
[lance@master temp]$ ln a.txt b.txt
[lance@master temp]$ ln a.txt c.txt
[lance@master temp]$ vi a.txt
[lance@master temp]$ cat a.txt 
i love java python R Go c c++
[lance@master temp]$ cat b.txt 
i love java python R Go c c++
[lance@master temp]$ cat c.txt 
i love java python R Go c c++
[lance@master temp]$ rm -rf a.txt 
[lance@master temp]$ ll
total 8
-rw-rw-r--. 2 lance lance 30 Mar 30 18:12 b.txt
-rw-rw-r--. 2 lance lance 30 Mar 30 18:12 c.txt
[lance@master temp]$ cat b.txt 
i love java python R Go c c++

我们通过从磁盘内部分析,当我们删除a.txt是,我们依然可以操作b.txt和c.txt,

并且当b.txt中的内容更改是,c.txt中的内容随之更改。

\

注意:b.txt和c.txt并不是一个文件,而是一个指向a.txt的一个数据而已,虽然看起来它是一个文件。

1.4 软链接

软链接简介

软链接相当于Windows文件系统中快捷方式

软链接也叫符号链接(Symbolic)

命令格式:ln [-s] source_file destination_file

说明:加选项“-s”为创建软链接,不加为创建硬链接

理解软链接

举例:我们在lntest中穿件一个soft.txt,然后为它创建一个soft.txt.s的软链接,然后删除soft.txt。

发现软链接是不可用的。

[lance@master ~]$ mkdir lntest
[lance@master ~]$ cd lntest/
[lance@master lntest]$ touch soft.txt
[lance@master lntest]$ ln -s soft.txt soft.txt.s
[lance@master lntest]$ ll
total 0
-rw-rw-r--. 1 lance lance 0 Mar 30 18:17 soft.txt
lrwxrwxrwx. 1 lance lance 8 Mar 30 18:18 soft.txt.s -> soft.txt
[lance@master lntest]$ rm soft.txt
[lance@master lntest]$ ll
total 0
lrwxrwxrwx. 1 lance lance 8 Mar 30 18:18 soft.txt.s -> soft.txt

我们使用绝对路径的soft.txt创建一个软链接为soft.txt.s1。使用ls -l查看发现

两个文件的大小不一样,指向的地址也是 不一样的。

\

当我们从磁盘中去分析时,可以知道,软链接的数据区存放的就是soft.txt的位置信息

\

1.5 总结软链接和硬链接

软链接 前面是 l 开头的(link),而硬链接是 - 开头,表示文件。 软链接所有者和所属组具有全部操作的权限,rwxrwxrwx;而硬链接不是。

也就是软链接的前面都是 lrwxrwxrwx。 软链接类似与 windows 的快捷方式,有一个明显的箭头指向,而指向的是源文件 硬链接文件除了文件名与源文件不一样,其余所有信息都是一样的。

类似于 cp 复制操作。但是又和复制不一样,硬链接可以同步更新。 通过 ls -i 操作,来查看 文件的 i 节点。发现硬链接和源文件的 i 节点是

相同的,而软链接与源文件的 i 节点是不同的。 不允许将硬链接指向目录;不允许跨分区创建硬链接。

二、权限管理命令之更改文件或目录权限命令:chmod

2.1 chmod命令概述

命令名称:chmod 英文原意:change the permissions mode of a file 命令所在路径:/bin/chmod 执行权限:所有用户 功能描述:改变文件或目录权限

语法: chmod 【{ugoa}{+-=}{rwx}】【文件或目录】

mode=421】【文件或目录】

-R 递归修改

【{ugoa}{+-=}{rwx}】解释:由三部分组成分别是:who、op、permissio

1)who({ugoa}):表示用户或组,又分为u、g、o、a
u:代表文件拥有者
g:代表文件所属组
o:代表文件除了拥有者和所属组之外的其他用户以及组
a:表示上面所有的情况,即“a”表示文件的拥有者、所属组以及
除当前拥有者和所属组之外的其他用户以及组。

2)op({+-=}):表示修改用户对于文件权限的运算符,分为=、-、+
“=” 表示设置权限,覆盖原来的权限
“+” 表示当原来没有某个权限时,赋予改权限
“-” 表示移除某个已拥有的权限
注意 :+-依赖以前的权限, =不依赖以前的权限,重新赋权限。
3

)permission(rwx):表示用户或组对于文件的权限,分为r、w、x

举例:

chmod g-r file1
chmod u+x,go+w file2
chmod a=rw file3 

创建三个文件分别为a.txt、b.txt、c.txt,对于这三个文件修改权限为用户本人具有所有权限,

同组人具有读写权限,其他人没有任何权限。

zyh@udzyh1:~/test$ touch a.txt b.txt c.txt
zyh@udzyh1:~/test$ ls -l
total 0
-rw-r--r-- 1 zyh zyh 0 8月  29 14:48 a.txt
-rw-r--r-- 1 zyh zyh 0 8月  29 14:48 b.txt
-rw-r--r-- 1 zyh zyh 0 8月  29 14:48 c.txt
zyh@udzyh1:~/test$ chmod u+x,g+w,o-r a.txt b.txt c.txt
zyh@udzyh1:~/test$ ls -l
total 0
-rwxrw---- 1 zyh zyh 0 8月  29 14:48 a.txt
-rwxrw---- 1 zyh zyh 0 8月  29 14:48 b.txt
-rwxrw---- 1 zyh zyh 0 8月  29 14:48 c.txt
zyh@udzyh1:~/test$

a目录同组人增加写权限,其他人减去一个执行权限:

chomd g+w,o-x a

a.txt让所有人都读写执行的权限

 chmod a=rwx a.txt

注意:

不是每一个Linux用户都有权限更改某个文件或目录权限,能更改文件或目录权限的只有两种用户
- 文件的所有者。我们通过ls命令查看某个文件的详细信息,可以看到该文件的所有者。
- root用户,这不用多说,root用户是linux系统权限最大的用户。别人不能干的事,root用户都能干。

2.2 用八进制表示权限

八进制表示权限的解释:r=4,w=2,x=1

\

由此八进制0到7的权限如下:

7 表示 rwx 6 表示 rw- 5 表示 r-x 4 表示 r– 3 表示 -wx 2 表示 -w- 1 表示 –x 0 表示 —

其中“777”也是由三部分组成:

第一个7表示文件拥有者的读、写、执行权限 第二个7表示文件同组人的读、写、执行权限 第三个7表示文件其他人的读、写、执行权限

举例:

a.txt让所有人都读写执行的权限

chomd 777 a.txt

a自己读写执行,同组人和其他人读执行权限

chomd 755 a

我们还可以递归赋予权限,也就是加上 -R 参数给指定目录下的所有文件或目录赋予指定权限。

给 tmp 目录下所有文件和目录赋予 776 的权限

chmod -R 776 /tmp

三、权限管理命令之改变文件或目录所有者命令:chown

命令名称:chown 英文原意:change file ownership 命令所在路径:/bin/chown 执行权限:所有用户 功能描述:改变文件或目录的所有者 语法: chown 【用户】【文件或目录】

注意:能更改文件或目录的所有者用户是 root

这里我们通过useradd【用户名】命令创建用户,然后通过passwd【用户名】输入密码,

这两个命令后面会将。我们通过这两个命令创建 kevin 用户,密码为kevin的用户!

[root@master lance]# useradd kevin
[root@master lance]# passwd kevin
Changing password for user kevin.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.

然后我们将lance.txt的所有者更改为 kevin 用户:chown kevin lance.txt

\

四、权限管理命令之改变文件或目录所属组命令:chgrp

命令名称:chgrp 英文原意:change file group ownership 命令所在路径:/bin/chown 执行权限:所有用户 功能描述:改变文件或目录的所属组 语法: chgrp【用户组】【文件或目录】

注意:能更改文件或目录的所属组用户是 root

我们用上面创建好的用户,将lance.txt的所属组修改为kevin

\

五、显示、设置文件的缺省权限命令:umask

命令名称:umask 英文原意:the user file-creation mask 命令所在路径:shell 内置命令 执行权限:所有用户 功能描述:显示、设置文件的缺省权限 语法: umask 【-S】

-S 以rwx形式显示新建文件的缺省权限

可能大家不太了解这个命令,那我们执行以下看一下效果:

[lance@master ~]$ umask
0002
[lance@master ~]$ umask -S
u=rwx,g=rwx,o=rx

其中umask 执行显示结果是 0002,第一个0表示特殊权限,后面我们会单独进行讲解有

哪几种特殊权限。002表示权限的掩码值,我们用7 7 7 减去 0 0 2得到775(是每一

位相减),表示的就是下面通过加上-S输出的rwxrwxr-x,这个值用数字表示就是775.

这个意思说明创建一个文件的默认权限所有者为rwx,所属组为rwx,其他人为rx。也就是

说创建一个新文件默认权限为 rwxrwxr-x,我们创建一个文件来验证一下:

[lance@master ~]$ touch test.txt
[lance@master ~]$ ll
-rw-rw-r--. 1 lance lance        0 Mar 30 20:08 test.txt

我们发现使用touch命令创建了一个文件test.txt,然后发现权限并不是rwxrwxr-x,而

是rw-rw-r–。对比发现少了三个x,也就是少了可执行权限。这是为什么呢?

这是因为在Linux系统中,所有新创建的文件都是没有可执行权限的。这是出于Linux系统的

一种自我保护,因为类似的病毒木马程序都是具有可执行权限的。

所以在Linux系统中,新创建的文件是没有可执行权限的。

那么我们如何设置默认权限呢?比如我们想将新创建的文件权限设置为rwxrxr–,也就是754。

我们用777减去754得到023。也就是通过执行 umask 023 来完成默认权限设置。

\

相关内容