首页 > 编程知识 正文

linux shell脚本命令,shell设置权限

时间:2023-05-05 23:00:07 阅读:172518 作者:3127

文章目录外壳的结构Linux权限的概念(1)实现用户账户的切换)2)只提高当前命令的权限)3)信任列表Linux权限管理)1)追加一般用户)文件访问者的分类)人)2) 关于访问权限的设定方法(1)改变文件/目录的访问权限)2)改变文件/目录的所有者和所属组)3)改变文件/目录掩码)4)改变目录的访问权限)

壳牌的工作原理

我们知道,Window操作系统通过图形界面与用户交互,而Linux操作系统通过命令行操作与用户交互。 Windows和Linux与用户的交互方式不同,但从操作系统的角度来看本质上是相同的。 图形界面和命令行操作称为操作系统的“shell”

从技术角度看,shell的最简单定义:命令行解释器(command Interpreter )主要包括:

(1) .将使用者的命令翻译成内核进行处理。

)2) .同时,将核心处理结果翻译给用户

与windows GUI相比,操作windows不是直接与windows内核进行操作,而是通过图形界面点击来完成我们的操作。 例如,进入CD驱动器的操作通常是双击CD驱动器号或执行APP。

shell对Linux具有相同的作用。 主要解析我们的指令,向Linux内核解析指令。 反馈结果在内核中执行,并在shell中解析为用户

为了理解外壳的作用,举个例子吧

有个村子,有yjdppx (开了媒人、媒人婚姻介绍所)、kkdbl、如花似玉、忧郁的网络。 有一天,kkdbl的父亲,jddjd对kkdbl说: “kkdbl啊,你也该老了,找女朋友吧! ”kkdbl虽然内心渴望,但作为一个无神、害羞的程序员,不知道该怎么和女孩子交往,对jddjd说:“算了吧,我不会和女孩子交往的。”jddjd一听,就说

几天后,yjdppx来了,kkdbl上有: “kkdbl啊,对她有什么要求吗? ”,kkdbl想想,“我觉得像花一样就好了。 yjdppx,你能说一下吗”,yjdppx去了如花似玉的家,如花般地表达了kkdbl的意思。 听得如花似玉,心里想,这个kkdbl,个子不高,个子也高,赚钱也不算什么。于是yjdppx又告诉kkdbl,如花不同意。 (听了如花之后,心里觉得,kkdbl很帅,个子也很高,工作很好,能赚钱,觉得很好,就同意了) )。

把上面的一个小故事讲完后,可以总结一下

例如花相当于操作系统(kernel )

kkdbl相当于用户

yjdppx相当于壳

(1).为什么kkdbl不自己像花一样去找呢?

(为什么用户不直接使用操作系统呢? )

因为kkdbl不擅长和女孩子交流

(因为用户不擅长使用操作系统)

来自33558www.Sina.com/.kkdbl的诸如花之类的消息和诸如kkdbl之类的消息都通过yjdppx中间媒体传播

故事继续

kkdbl被拒绝了之后,一整天睡不着觉,心里很难受,又请yjdppx去如花似玉的家聊天,这时,有了xrpdym的忧郁网络,yjdppx再也不肯去了

(2).如果从用户传递给OS的命令不正确,shell程序会直接拦截不正确的命令,不会传递给OS

故事还会继续

kdbl是个偏执的人,而且jddjd还是件轻薄的裙子,用yjdppx说又得去花家,yjdppx很头疼。 另一方面,kkdbl的爸爸是轻薄的裙子,我必须给kkdbl工作。 另一方面,就算说不能像花一样看kkdbl,那也一定不会。 那样的话,我该怎么办? 于是yjdppx招募实习生,请实习生帮忙介绍kkdbl。 如果不能工作的话,我可以给实习生摇锅哦

33558 www.Sina.com/. shell程序在系统层面是一个在保护内核安全的同时也必须保护自身安全的过程,所以shell进程招募了子程序(yjdppx是实习生) 子进程出现任何问题都不会影响父进程壳。 (实习生工作做不好,不影响yjdppx的声誉。

注意: shell是所有shell程序的总称,例如centos 7的shell程序名为bash。

Linux权限概念在Linux下有两种用户:超级用户(root )和普通用户。

超级用户:在linux系统上可以做任何事情。 没有限制

普通用户:在linux下做有限的事情。

超级用户命令提示符为“#”,普通用户命令提示符为“$”。

(1) .用户账户切换语法的实现: su用户名

功能:用户切换

1 )从普通用户切换到超级用户时,需要输入超级用户密码

苏或

su root 都可

2). 超级用户切换成普通用户,从超级用户切换成普通用户不需要输入密码,这也说明 root 权限不受限制

su 用户名

(2).仅提升当前指令的权限

但可能某些情况下,你只想提升当前指令的权限,那么不必切换到超级用户。

语法: sudo 指令
功能: 提升当前指令的权限。
例如,我现在要以一名普通用户的身份,修改另一个普通用户的账号密码。

但是我们又发现一个问题,我们当前的普通用户并不在 root 的信任列表里,只有把当前普通用户设置在 root 的信任列表里才可以修改其他普通用户的密码(好比 root 为陶醉的汽车,只有把陶醉的汽车信任的人设置为管理员,管理员才能获得相应的权限)

(3).如何将普通用户添加到信任列表

(1).切换成超级用户
(2).输入 vim /etc/sudoers,翻到文件末尾,找到 Allow People in group wheel to run all command
(3).添加上自己的用户名,保存并退出( :wq! )

Linux权限管理 (1).文件访问者的分类(人)

对于用户来说,权限可以将用户分为三大类:
1).文件拥有者
2).文件所属组
3).其他用户(other) : 文件拥有者和文件所属组之外的用户

注意 :
1).文件拥有者,文件所属组,其他用户是一种角色,root 用户和普通用户是具体的人,可能充当拥有者,所属组,其他用户
2).Linux中,所有的用户都要隶属于某一个组,哪怕这个组只有你一个人(组名就是用户名)

为什么要有组存在 ?
假设有以下情景,某公司有两个小组在同一台Linux服务器上做相同的开发,两个小组明显是竞争关系,你所写的代码肯定不希望被另一个小组的人看到,因此,你可以把other的权限设为- - -,但如果只有文件拥有者和other的话,和你同组的同事想要看你的代码就不可以了(因为和你同组的同事也是other),所以,需要有文件所属组,你可以把你同组的同事设为 rwx

(2).文件类型和访问权限(事物属性)

十个字符表示了文件类型和访问权限,第一个字符表示文件类型,在Linux中,文件类型和后缀名无关,在Window中,是相关的。

d:目录-:普通文件(文本,可执行程序,库)l:软链接(类似Windows的快捷方式)b:块设备文件(例如硬盘、光驱等)p:管道文件c:字符设备文件(例如屏幕,显示器等串口设备)s:套接口文件

后面九个字符,每三个字符为一组,分别表示文件拥有者,文件所属组,其他用户对文件操作的权限

r 读取权限w 写入权限x 可执行权限- 无权限


myproc.c 文件是一个普通文件,拥有者和所属组对应的权限是可读可写的,other对应的权限是可读的

(3).文件权限值的表示方法

1).字符表示方式

r - -仅可读- w -仅可写- - x仅可执行r w -可读可写r - x可读可执行- w x可写可执行r w x可读可写可执行- - -无权限

2).8进制数值表示法

字符表示法二进制八进制数值表示法说明r - -1004仅可读- w -0102仅可写- - x0011仅可执行r w -1106可读可写r - x1015可读可执行- w x0113可写可执行r w x1117可读可写可执行- - -0000无权限 (4).文件/目录访问权限的相关设置方法 (1).改变文件/目录的访问权限

功能: 设置文件/目录的访问权限
格式: chmod [参数] 权限 文件名/目录名

常用选项:
R -> 递归修改目录文件的权限
说明:只有文件/目录的拥有者和root才可以改变文件/目录的权限

① 用户表示符+/-=权限字符
+:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限
=:向权限范围赋予权限代号所表示的权限

用户符号:
u:拥有者
g:拥有者同组用
o:其它用户
a:所有用户
②三位8进制数字

(2).改变文件/目录的拥有者和所属组

语法: chown 选项 用户名 文件名或目录名
功能: 修改文件/目录的拥有者。
常用选项: -R 递归修改目录文件的拥有者。

1). 修改文件/目录的拥有者需要root用户进行操作,若是普通用户则需要进行权限提升。
2).可以使用chown指令同时修改文件/目录的拥有者和所属组,将拥有者和所属组的用户名用冒号隔开即可。

语法: chgrp 选项 用户名 文件名或目录名
功能: 修改文件/目录的所属组。
常用选项: -R 递归修改目录文件的所属组。

注意: 修改文件/目录的所属组也需要进行权限提升。

(3).修改文件/目录掩码

我们在创建一个文件或目录时,都自动带有一个权限,那这个权限是怎么来的呢?

文件的默认权限是0666,目录的默认权限是0777,第一位的0与特殊权限有关,不必深究,但我们创建出来的文件权限却是 664 ,目录权限却是 775,这是为什么呢?

创建出来的文件或目录权限 = 默认权限 & (~umask)

umask
功能:查看或修改文件掩码
格式: umask 权限值
说明:凡是在umask中出现的权限位,都不能在最终权限中出现。超级用户默认掩码值为0022,普通用户默认为0002

(4).目录的权限

说完了文件,那么对于目录来说,读,写,可执行是什么意思呢 ?

注意 : 最基本的权限是可执行权限,没有可执行权限,不能进入目录,自然也无法进行读写操作

1).进入目录需要可执行权限

2).显示目录下面的内容需要读取权限

3).在目录下创建文件需要写入权限

于是, 问题来了~~
换句话来讲, 就是只要用户具有目录的写权限, 用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写权限.这好像不太科学啊, 我kkdbl创建的一个文件, 凭什么被你怡然的红牛可以删掉?

为了解决这个问题,Linux引入了粘滞位的概念

(5).粘滞位

语法: chmod +t 目录名
功能: 给目录加上粘滞位。

当一个用户将某一个目录加上粘滞位后,该目录的权限值的最后一位变为字符“t”。此时另一个用户就算有该目录的可写权限,也无法删除该目录下的文件。

注意 :
1). 当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由
一、超级管理员删除
二、该目录的所有者删除
三、该文件的所有者删除

2).虽然目录被加上了粘滞位,但如果用户有该目录的可写权限,则不影响其在该目录下创建文件

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。