目录
一、shell命令以及运行原理
二、权限
1.用户的权限
2.文件的权限
3.权限的相关操作
第一种方法
第二种方法
改变所有者和所属组
常见的权限问题
1.目录的权限:
2.umask
粘滞位
如何将用户添加到信任列表赋予sudo权限
一、shell命令以及运行原理
1.人不善于直接使用操作系统
2.如果让人直接访问操作系统a.操作成本特别高b.人会犯错,会带来不安全因素。
所以操作系统设计者不会让人直接操作操作系统。
那么我们是如何访问操作系统的呢?那么图形化界面和指令操作究竟是什么东西呢?
外壳程序的意义:
1.是用户和操作系统交互的中间软件层
2.可以在一定程度起到保护操作系统的作用。
Shell的最简单定义:命令行解释器(command Interpreter)主要包含:
>将使用者的命令翻译给核心(kernel)处理。
>同时,将核心的处理结果翻译给使用者。
二、权限
1.用户的权限
Linux下有两种用户:超级用户(root)、普通用户。
超级用户:可以再linux系统下做任何事情,不受限制(root只有一个,具有Linux下的最高权限,一般不受权限的约束。)
普通用户:在linux下做有限的事情。(可以有多个,要受权限的约束)
超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。
Linux下可以同时存在多个用户,Linux是一个多用户操作系统。
命令: su [用户名]
功能:切换用户。(潜台词就是在切换当前的权限。)
用户该如何进行身份切换呢?
例如,要从root用户切换到普通用户user,则使用 su user。 要从普通用户user切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的口令。
这里我们创建了一个新用户烛渊,我们发现root用户切换为普通用户可以不输入普通用户的密码。
但是普通用户切换为root用户需要输入root用户的密码
普通用户切换为另一个普通用户需要输入要切换的那个用户的root密码。
下面我们又创建了一个普通用户芊樱,她切换为烛渊的账户就需要输入烛渊的密码。
2.文件的权限
对角色和文件操作
权限:
是什么? 针对人的,事物的基本属性决定权限相关的概念的-->文件权限-->一件事情是否允许被你“做”。
权限的核心:“人”+事物属性
1.人不善于直接使用操作系统
2.如果让人直接访问操作系统a.操作成本特别高b.人会犯错,会带来不安全因素。
所以操作系统设计者不会让人直接操作操作系统。
那么我们是如何访问操作系统的呢?那么图形化界面和指令操作究竟是什么东西呢?
外壳程序的意义:
1.是用户和操作系统交互的中间软件层
2.可以在一定程度起到保护操作系统的作用。
Shell的最简单定义:命令行解释器(command Interpreter)主要包含:
>将使用者的命令翻译给核心(kernel)处理。
>同时,将核心的处理结果翻译给使用者。
1.用户的权限
Linux下有两种用户:超级用户(root)、普通用户。
超级用户:可以再linux系统下做任何事情,不受限制(root只有一个,具有Linux下的最高权限,一般不受权限的约束。)
普通用户:在linux下做有限的事情。(可以有多个,要受权限的约束)
超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。
Linux下可以同时存在多个用户,Linux是一个多用户操作系统。
命令: su [用户名]
功能:切换用户。(潜台词就是在切换当前的权限。)
用户该如何进行身份切换呢?
例如,要从root用户切换到普通用户user,则使用 su user。 要从普通用户user切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的口令。
这里我们创建了一个新用户烛渊,我们发现root用户切换为普通用户可以不输入普通用户的密码。
但是普通用户切换为root用户需要输入root用户的密码
普通用户切换为另一个普通用户需要输入要切换的那个用户的root密码。
下面我们又创建了一个普通用户芊樱,她切换为烛渊的账户就需要输入烛渊的密码。
2.文件的权限
对角色和文件操作
权限:
是什么? 针对人的,事物的基本属性决定权限相关的概念的-->文件权限-->一件事情是否允许被你“做”。
权限的核心:“人”+事物属性
Linux下有两种用户:超级用户(root)、普通用户。
超级用户:可以再linux系统下做任何事情,不受限制(root只有一个,具有Linux下的最高权限,一般不受权限的约束。)
普通用户:在linux下做有限的事情。(可以有多个,要受权限的约束)
超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。
Linux下可以同时存在多个用户,Linux是一个多用户操作系统。
命令: su [用户名]
功能:切换用户。(潜台词就是在切换当前的权限。)
用户该如何进行身份切换呢?
例如,要从root用户切换到普通用户user,则使用 su user。 要从普通用户user切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的口令。
这里我们创建了一个新用户烛渊,我们发现root用户切换为普通用户可以不输入普通用户的密码。
但是普通用户切换为root用户需要输入root用户的密码
普通用户切换为另一个普通用户需要输入要切换的那个用户的root密码。
下面我们又创建了一个普通用户芊樱,她切换为烛渊的账户就需要输入烛渊的密码。
对角色和文件操作
权限:
是什么? 针对人的,事物的基本属性决定权限相关的概念的-->文件权限-->一件事情是否允许被你“做”。
权限的核心:“人”+事物属性
认识一下Linux文件的权限
每一行中的时间为文件最后修改的时间
ll显示的第一列的第一个字符,表名该文件的文件类型
d:目录
-:普通文件
p:管道文件
b:块设备(磁盘设备)
c:字符设备(键盘或者显示器)
(Linux下,不以文件后缀来区分文件类型,但并不代表不可以使用,但在系统层面没有意义,给自己看的。)
注:gcc是Linux环境下的一个软件,gg!=linux系统,是区分后缀的。
下面的代码我们创建了一个hello.c的简单的C语言程序,在gcc下是可以编译的,但是如果我们将其重命名为hello.txt,就不可以编译了。
人:可以认为是一种角色或者身份。
拥有者:文件属于谁
所属组:文件属于哪一个组
other:不属于上面两个中的任意一个,就是other
linux不会记录other是谁,只会记录拥有者和所属组
在下面这张图中,第一个root代表着文件的拥有者,第二个root代表着所属组
每一行的第一个字母表示文件的所属类型
后面的字母每三个为一组,分别为owner,gooup,other的权限
r为read就是读取的权限,w为write就是写入的权限,x为可执行
如果没有某一个权限,则为"-"
基本权限
i.读(r/4): Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
ii.写(w/2): Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
iii.执行(x/1): execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
iv.“—”表示不具有该项权限
3.权限的相关操作
如何操作?
改人
改属性
第一种方法
使用chmod来改变文件的权限
a)chmod
功能: 设置文件的访问权限
格式: chmod [参数] 权限 文件名
R -> 递归修改目录文件的权限
说明:只有文件的拥有者和root才可以改变文件的权限
root用户不受权限的约束,无视文件的权限。
用户符号:
u:拥有者
g:拥有者同组用
o:其它用户
a:所有用户
① 用户表示符+/-=权限字符
+:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限
=:向权限范围赋予权限代号所表示的权限
chmod u+x hello.txt就可以给我们的使用者赋予执行hello.txt文件的权限
chmod u-x hello.txt就可以去除当前使用者读取hello.txt文件的权限,以此类推。
chmod u+rwx hello.txt就可以给我们的使用者赋予读取,写入和执行的权限
chmod g+x hello.txt就可以给我们的所属组加上执行hello.txt文件的权限
使用逗号可以执行多个权限修改
chmod a-r hello.txt就可以删掉使用者,所属组和其他的写入文件的权限。
如果没有权限就会产生以下的报错。
第二种方法
如何表示一个文件的权限:
可以使用rwx表示,也可以使用111来表示。
所以一个权限可以用一个八进制数来表示。
所有者,所属组和其他用户的权限可以用三个八进制数来表示
所以7转换成111,也就是拥有读取,写入和执行的权限,在下面的代码中
chmod 777 hello.txt
就是赋予所有者,所属组和其他用户读取,写入和执行的权限
改变所有者和所属组
普通用户不能直接把文件赋予别的普通用户,或者把文件取回来。
但是root用户可以强制操作。
使用chown改变文件的所有者
b)chown
功能:修改文件的拥有者
格式: chown [参数] 用户名 文件名
使用chgrp改变文件的所属组
c)chgrp
功能:修改文件或目录的所属组
格式: chgrp [参数] 用户组名 文件名
常用选项: -R 递归修改文件或目录的所属组
普通用户可以在命令前加上sudo,就是执行以下命令,要以root的权限执行,仅限这一次,输入的密码为普通用户自己的密码。
但是用户想进行sudo操作,需要用户再信任列表里面才可以执行sudo操作。
而添加用户到信任列表是需要root身份的。
如果不在信任列表里面就会产生下面的报错。
因为other是不确定的,所以Linux并没有提供方法去秀给other的所属。
常见的权限问题
我们如果是文件的拥有者,又属于文件的所属组,但是我们被root设定了没有文件的读取权限,但是我们的所属组有文件的读取权限,我们依然无法读取文件。
因为权限只认定一次。
1.目录的权限:
可执行权限: 如果目录没有可执行权限, 则无法cd到目录中
可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容.
可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件.
目录的可执行权限是表示你可否在目录下执行命令。
如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。
2.umask
为何我们创建一个目录或者文件,默认权限是你所看到的样子?
Linux默认:
一个目录被创建,起始权限为777
一个普通文件被创建默认的权限位666
最终权限==起始权限??
umask为权限掩码,凡是在umask中出现的权限,都不应该在最终权限中出现!
如果我们的初始权限位777,umask权限掩码为002,就表示权限掩码对前两个不做影响,2为010,7为111, 010按位取反就是101,101与111按位与为101,也就是我们所看到的最终权限
d)umask
功能:
查看或修改文件掩码
新建文件夹默认权限=0666
新建目录默认权限=0777
但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是: mask & (~umask)
就是对我们的umask按位取反,然后再和umask按位与操作。
格式: umask 权限值
说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用户默认为0002。
修改umask掩码
如何操作?
改人
改属性
使用chmod来改变文件的权限
a)chmod
功能: 设置文件的访问权限
格式: chmod [参数] 权限 文件名R -> 递归修改目录文件的权限
说明:只有文件的拥有者和root才可以改变文件的权限root用户不受权限的约束,无视文件的权限。
用户符号:
u:拥有者
g:拥有者同组用
o:其它用户
a:所有用户① 用户表示符+/-=权限字符
+:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限
=:向权限范围赋予权限代号所表示的权限
chmod u+x hello.txt就可以给我们的使用者赋予执行hello.txt文件的权限
chmod u-x hello.txt就可以去除当前使用者读取hello.txt文件的权限,以此类推。
chmod u+rwx hello.txt就可以给我们的使用者赋予读取,写入和执行的权限
chmod g+x hello.txt就可以给我们的所属组加上执行hello.txt文件的权限
使用逗号可以执行多个权限修改
chmod a-r hello.txt就可以删掉使用者,所属组和其他的写入文件的权限。
如果没有权限就会产生以下的报错。
第二种方法
如何表示一个文件的权限:
可以使用rwx表示,也可以使用111来表示。
所以一个权限可以用一个八进制数来表示。
所有者,所属组和其他用户的权限可以用三个八进制数来表示
所以7转换成111,也就是拥有读取,写入和执行的权限,在下面的代码中
chmod 777 hello.txt
就是赋予所有者,所属组和其他用户读取,写入和执行的权限
改变所有者和所属组
普通用户不能直接把文件赋予别的普通用户,或者把文件取回来。
但是root用户可以强制操作。
使用chown改变文件的所有者
b)chown
功能:修改文件的拥有者
格式: chown [参数] 用户名 文件名
使用chgrp改变文件的所属组
c)chgrp
功能:修改文件或目录的所属组
格式: chgrp [参数] 用户组名 文件名
常用选项: -R 递归修改文件或目录的所属组
普通用户可以在命令前加上sudo,就是执行以下命令,要以root的权限执行,仅限这一次,输入的密码为普通用户自己的密码。
但是用户想进行sudo操作,需要用户再信任列表里面才可以执行sudo操作。
而添加用户到信任列表是需要root身份的。
如果不在信任列表里面就会产生下面的报错。
因为other是不确定的,所以Linux并没有提供方法去秀给other的所属。
常见的权限问题
我们如果是文件的拥有者,又属于文件的所属组,但是我们被root设定了没有文件的读取权限,但是我们的所属组有文件的读取权限,我们依然无法读取文件。
因为权限只认定一次。
1.目录的权限:
可执行权限: 如果目录没有可执行权限, 则无法cd到目录中
可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容.
可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件.
目录的可执行权限是表示你可否在目录下执行命令。
如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。
2.umask
为何我们创建一个目录或者文件,默认权限是你所看到的样子?
Linux默认:
一个目录被创建,起始权限为777
一个普通文件被创建默认的权限位666
最终权限==起始权限??
umask为权限掩码,凡是在umask中出现的权限,都不应该在最终权限中出现!
如果我们的初始权限位777,umask权限掩码为002,就表示权限掩码对前两个不做影响,2为010,7为111, 010按位取反就是101,101与111按位与为101,也就是我们所看到的最终权限
d)umask
功能:
查看或修改文件掩码
新建文件夹默认权限=0666
新建目录默认权限=0777
但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是: mask & (~umask)
就是对我们的umask按位取反,然后再和umask按位与操作。
格式: umask 权限值
说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用户默认为0002。
修改umask掩码
如何表示一个文件的权限:
可以使用rwx表示,也可以使用111来表示。
所以一个权限可以用一个八进制数来表示。
所有者,所属组和其他用户的权限可以用三个八进制数来表示
所以7转换成111,也就是拥有读取,写入和执行的权限,在下面的代码中
chmod 777 hello.txt
就是赋予所有者,所属组和其他用户读取,写入和执行的权限
普通用户不能直接把文件赋予别的普通用户,或者把文件取回来。
但是root用户可以强制操作。
使用chown改变文件的所有者
b)chown
功能:修改文件的拥有者
格式: chown [参数] 用户名 文件名使用chgrp改变文件的所属组
c)chgrp
功能:修改文件或目录的所属组
格式: chgrp [参数] 用户组名 文件名
常用选项: -R 递归修改文件或目录的所属组普通用户可以在命令前加上sudo,就是执行以下命令,要以root的权限执行,仅限这一次,输入的密码为普通用户自己的密码。
但是用户想进行sudo操作,需要用户再信任列表里面才可以执行sudo操作。
而添加用户到信任列表是需要root身份的。
如果不在信任列表里面就会产生下面的报错。
因为other是不确定的,所以Linux并没有提供方法去秀给other的所属。
常见的权限问题
我们如果是文件的拥有者,又属于文件的所属组,但是我们被root设定了没有文件的读取权限,但是我们的所属组有文件的读取权限,我们依然无法读取文件。
因为权限只认定一次。
1.目录的权限:
可执行权限: 如果目录没有可执行权限, 则无法cd到目录中
可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容.
可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件.
目录的可执行权限是表示你可否在目录下执行命令。
如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。
2.umask
为何我们创建一个目录或者文件,默认权限是你所看到的样子?
Linux默认:
一个目录被创建,起始权限为777
一个普通文件被创建默认的权限位666
最终权限==起始权限??
umask为权限掩码,凡是在umask中出现的权限,都不应该在最终权限中出现!
如果我们的初始权限位777,umask权限掩码为002,就表示权限掩码对前两个不做影响,2为010,7为111, 010按位取反就是101,101与111按位与为101,也就是我们所看到的最终权限
d)umask
功能:
查看或修改文件掩码
新建文件夹默认权限=0666
新建目录默认权限=0777
但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是: mask & (~umask)
就是对我们的umask按位取反,然后再和umask按位与操作。
格式: umask 权限值
说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用户默认为0002。
修改umask掩码
我们如果是文件的拥有者,又属于文件的所属组,但是我们被root设定了没有文件的读取权限,但是我们的所属组有文件的读取权限,我们依然无法读取文件。
因为权限只认定一次。
1.目录的权限:
可执行权限: 如果目录没有可执行权限, 则无法cd到目录中
可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容.
可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件.
目录的可执行权限是表示你可否在目录下执行命令。
如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。
2.umask
为何我们创建一个目录或者文件,默认权限是你所看到的样子?
Linux默认:
一个目录被创建,起始权限为777
一个普通文件被创建默认的权限位666
最终权限==起始权限??
umask为权限掩码,凡是在umask中出现的权限,都不应该在最终权限中出现!
如果我们的初始权限位777,umask权限掩码为002,就表示权限掩码对前两个不做影响,2为010,7为111, 010按位取反就是101,101与111按位与为101,也就是我们所看到的最终权限
d)umask
功能:
查看或修改文件掩码
新建文件夹默认权限=0666
新建目录默认权限=0777
但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是: mask & (~umask)
就是对我们的umask按位取反,然后再和umask按位与操作。
格式: umask 权限值
说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用户默认为0002。
修改umask掩码
粘滞位
文件被删的权限并不是文件自身的权限,而是文件目录的权限
大家所有用户都在同一个共同的路径下,对该目录拥有读写执行权限的情况下
,就如tmp目录存储所有用户的临时文件。
1.当多个用户共享一个目录,需要在该目录下进行读写,创建删除文件
2.但是满足自己只能删除自己的,而不能删除别人的要求(w:可以互删的,但是不满足条件),所以产生了粘滞位。
1.粘滞位只能给目录设置。
2.粘滞位一般是谁来添加,还需要谁来去除(root无视)。
3.粘滞位只能给other设置。
[root@localhost ~]# chmod +t /home/ # 加上粘滞位
我们看到mytmp的最后一个字符为T,也就是x的一种特殊的形式。
[root@localhost ~]# ls -ld /home/
drwxrwxrwt. 3 root root 4096 9月 19 16:00 /home/
[root@localhost ~]# su - litao
[litao@localhost ~]$ rm /home/abc.c #litao不能删除别人的文件
rm:是否删除有写保护的普通空文件 "/home/abc.c"? y
rm: 无法删除"/home/abc.c": 不允许的操作当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由
一、超级管理员删除
二、该目录的所有者删除
三、该文件的所有者删除
如何将用户添加到信任列表赋予sudo权限
如果我们的普通用户没有在信任列表里面是不能使用sudo暂时升级权限的
此时我们需要切换到root用户,输入下面的指令,也就是打开我们的sudoers文件
打开之后也就是我们下面的页面
将我们的光标移动到大约114行,找到root ALL的那一行,在这一行的下面写入我们的信任用户,下面就是将zhuyuan添加到信任列表里面。
接着我们的烛渊也可以使用sudo指令了
如果我们的普通用户没有在信任列表里面是不能使用sudo暂时升级权限的
此时我们需要切换到root用户,输入下面的指令,也就是打开我们的sudoers文件
打开之后也就是我们下面的页面
将我们的光标移动到大约114行,找到root ALL的那一行,在这一行的下面写入我们的信任用户,下面就是将zhuyuan添加到信任列表里面。
接着我们的烛渊也可以使用sudo指令了



