栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Linux【shell命令以及运行原理】【权限】

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Linux【shell命令以及运行原理】【权限】

目录

一、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.文件的权限 

对角色和文件操作

权限:

是什么? 针对人的,事物的基本属性决定权限相关的概念的-->文件权限-->一件事情是否允许被你“做”。

权限的核心:“人”+事物属性

认识一下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掩码

粘滞位 

文件被删的权限并不是文件自身的权限​​​​​​​​​​​​​​,而是文件目录的权限

大家所有用户都在同一个共同的路径下,对该目录拥有读写执行权限的情况下

,就如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指令了

​​​​​​​

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1019980.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号