Linux--文件权限与shell外壳的理解
目录
一.Linux的用户与用户切换,提权
Linux下由两种用户:超级用户(root),普通用户
超级用户:可以再 linux 系统下做任何事情,不受限制普通用户:在 linux 下做有限的事情。超级用户的命令提示符是 “#” ,普通用户的命令提示符是 “$
?命令:
su [用户名]
功能:切换用户
例如,要从 root 用户切换到普通用户 user ,则使用 su user 。 要从普通用户 user 切换到 root 用户则使用 su root( root 可以省略),此时系统会提示输入 root 用户的口令
命令:su -
功能:切换到root
su [用户名]:是单纯的用户切换,切换后路径不变su - :让root账号重新登录,切换后到root的家目录
普通用户指令短暂提权至root
sudo 指令
注:使用sudo提权时,需要将当前普通用户添加到etc/sudoer中,sudo可以将后面的指令提权为root,在启动后第一次使用,需要输入当前用户的密码。接下来的几分钟再使用就不用再输密码。
为什么普通用户使用sudo提权,要输入当前用户密码,而非root密码?
我们知道,root用户可以无视一切权限,进行任意的操作。一旦root密码被非管理人员知道就可能造成一些未知的危险,因此为了让某些被信任的用户,可以执行一些需要root权限才可以做的事情,使用输入当前用户密码。同时这样也可以在遭受危险时,对人进行精准定责。
二.对文件权限的理解
1.文件权限=角色的权限+文件属性
对于Linux中的文件权限,有的角色对文件有读,写,执行的权限,而有的角色却什么都没有。这是人的权限。
注:对于可执行文件来说,只有他的具有可执行权限,并且文件内容为可执行内容。它才可以执行。
2.Linux中的三种角色
owner? ? ? ? ? (拥有者)grouper? ? ? ?(所属组)other? ? ? ? ? ? (其他人)
3.为什么会存在所属组这个角色
4.文件属性的意义
4.1.第一个字母的意义
第一个字母代表的时文件类型。
在Windows系统中,区分文件类型是,通过文件名后缀,而Linux中,文件类型由文件属性的一个字母决定,与文件后缀无关。(Linux下为了方便我们快速区分文件类型,我们还是建议写上后缀。)
注:在使用一些工具时,文件必须加上对应的后缀。(如使用gcc编译文件时,文件必须以.c结尾)
d :文件夹- :普通文件l :软链接(类似 Windows 的快捷方式)b :块设备文件(例如硬盘、光驱等)p :管道文件c :字符设备文件(键盘,显示器等串口设备)s :socket套接口文件
4.2 第2——第10个字母的意义
他们三三为一组,共分为三组,分别代表着拥有者,所属组,其他用户的权限。r读权限,w写权限,x可执行权限,- 代表没有对应的权限
4.3修改文件权限的方法
+: 向权限范围增加权限代号所表示的权限-: 向权限范围取消权限代号所表示的权限角色:??u :拥有者g :拥有者同组用o :其它用户a :所有用户
chmod u-r test //将test文件拥有者的读权限取消
chmod g+x test //将test文件所属组加上可执行权限
chmod o+rwx //将test文件其他用户加上读,写,可执行权限
chmod u+r,g-w,o+x //对多个角色权限操作的组合
chmod a+rwx //对所有角色的权限进行读,写,可执行权限的取消
chmod 三位八进制数? 文件名
功能:修改文件所有角色的权限
使用三个八进制数的原因:
三个:一共三个角色。
八位:文件有读,写,可执行三个权限,我们可以用二进制1表示拥有该权限,0表示无该权限。每个角色所有权限最大位7.
chmod 000 test //将test文件所有角色的权限全部取消
只有文件的拥有者和root才可以对文件角色的权限进行修改
角色的修改
sudo chown wzy test //将test的拥有者修改为wzy
sudo chgrp wzy test //将test的所属组修改为wzy
sudo chown wzy:wzy test //将test的拥有者,所属组修改为wzy
拥有者,所属组更改之后,other(其他用户)也会改变,所以不用特意去该。
三.目录权限
目录r权限:能否查看目录中的文件目录w权限:能否在目录中创建,删除文件。目录x权限:能否进入,执行目录中的文件。
四.权限的初始化与权限掩码umask
原因: 权限=起始权限&umask
?
umask 0888 //将umask的值修改位0888
五.粘滞位
在使用Linux时,我们可能需要多个用户共同操作或访问一个文件,但是一个用户的文件不能被其他用户访问(root除外),因此为了实现这个要求,在所有用户中创造了一个所有用户都共享的文件(tmp),一般文件的拥有者是root。在这个目录里,所有用户都可以删除,创建文件。为了防止用户创造的文件被其他用户删除引入了粘滞位。
注:粘滞位是针对的other(其他用户)
添加粘滞位:
chmod + t 目录名
一、超级管理员删除二、该目录的所有者删除三、该文件的所有者删除
六.shell外壳
将使用者的命令翻译给核心( kernel )处理。同时,将核心的处理结果翻译给使用者。
对比 windows GUI ,我们操作 windows 不是直接操作 windows 内核,而是通过图形接口,点击,从而完成我们的操作(比如进入 D 盘的操作,我们通常是双击 D 盘盘符 . 或者运行起来一个应用程序)。shell 对于 Linux ,有相同的作用,主要是对我们的指令进行解析,解析指令给 Linux 内核。反馈结果在通过内核运 行出结果,通过shell 解析给用户。
1.拒绝用户非法请求,保护内核当用户输入非法指令,shell不会询问内核,直接拒绝用户请求。2.派生子进程执行用户指令shell 使用户与操作系统沟通的唯一通道,一般shell不会直接执行指令,而是创造一个子进程,让这个子进程去执行指令。这样即使指令执行失败,shell让然不受影响。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!