Shell命令和Linux权限

权限

  • shell命令及其运行原理
  • Linux权限
    • 用户
    • 权限
      • 文件访问者的分类
      • 文件的属性
      • 权限的设置
    • 粘滞位

shell命令及其运行原理

出于易用程度和安全考虑,是不允许用户直接访问操作系统的,而是通过一个外壳程序Shell来间接访问操作系统,Shell外壳可以拦截非法指令及驳回一些不合理的指令,同时对有风险或用户自定义的指令会创建一个子进程让其去执行,从而保护内核安全。Shell外壳程序可以简单的定义成是命令行解释器,是所有外壳程序的总称,而bash和sh则是具体的命令行解释器,其可以将用户的命令翻译给核心处理,同时将核心的处理结果翻译反馈给用户。

Linux权限

用户

Linux有两种用户,超级用户(root)和普通用户,超级用户可以在Linux下做任何事情,不受权限限制,其命令提示符为’#‘,普通用户做事情则会受到权限限制,其命令提示符为’$'。
su命令可以进行用户的切换

su username//root用户切换成普通用户username,不需要得到普通用户的账号密码
su root//普通用户切换成root用户,需要root账号密码,root可以省略,即直接su

su -也可以切换到root用户,该指令会以root用户身份重新登录一次Shell,而su是将身份切换成root。

权限

在Linux下,一切皆可看成文件,用户的权限就是用户对文件的访问权限。
基本权限:
①r:读权限,对普通文件来说,具有读取该文件的内容的权限,对目录来说,具有查看该目录的内容的权限
②w:写权限,对普通文件来说,具有修改该文件内容的权限,对目录来说,具有删除和移动该目录内的文件及在该目录下创建新文件的权限
③x:执行权限,对普通文件来说,具有执行该文件的权限,对目录来说,具有进入该目录的权限
④-:表示不具有该项权限

文件访问者的分类

对文件的访问者可以分成三类:
①文件和文件目录的所有者:u(user)
②文件和文件目录的所有者所在的组的用户:g(group)
③其他用户(不属于①和②的用户):o(other)
Linux会按ugo依次匹配用户相对该文件的身份,一旦匹配成功就不再匹配,如一旦匹配到用户对该文件的身份是u,即使用户属于该文件的所属组,也不会拥有g身份。

文件的属性

我们想要访问某个文件进行某项操作,首先该文件得有这个属性(如可以被执行的属性),其次用户拥有该权限才能成功操作。
我们使用ll命令可以看到文件的属性
Shell命令和Linux权限_第1张图片
文件类型:
①d:文件夹
②-:普通文件(包括文本文件、源代码文件、图片文件、可执行文件等)

③l:软链接文件(类似于Windows的快捷方式)
④b:块设备文件(如硬盘等)
⑤p:管道文件
⑥c:字符设备文件
⑦s:套接口文件

权限的设置

一:chmod指令
具有设置文件的访问权限的功能(只有文件的拥有者和root用户可以修改文件的权限)
常用选项:
①-R:递归修改目录文件的权限

修改权限的格式有两种:
1.chmod 用户标识符 +/-/= 权限字符 文件
用户标识符:
①u:文件所有者
②g:文件所属组用户
③o:其他用户
④a:所有用户

+/-/=含义:

①+:增加权限
②-:去除权限
③=:赋予权限

chmod u=r file.dat//将文件file.dat的文件所有者的权限位设为r--
chmod u+r file.dat//将文件file.dat的文件所有者的权限增加了r权限

2.chmod 3位8进制数字 文件名
1表示拥有该位权限,0表示不拥有该位权限,如r-w可以表示为101,即5

chmod 717 file.dat//将file.dat的u、g、o用户权限设为rwx--xrwx

二:chown指令
用于修改文件的所有者

chown user1 file.dat//将文件file.dat的文件所有者修改为用户user1

三:chgrp指令
用于修改文件的所属组

chgrp group1 file.dat//将文件file.dat的文件所属组修改为用户组group1

四:umask指令
用于查看或修改文件掩码
新建普通文件的默认权限是666,新建目录的默认权限是777,但实际建立的文件的权限还受到掩码umask的的影响,假设新建文件的默认权限为mask,则最后的权限为:
~umask & mask
即权限掩码按位取反再与上默认权限(要去除掩码中出现的权限位)
普通用户的掩码默认值为002,超级用户的掩码默认值为022

umask//查看权限掩码
umask 111//修改权限掩码为111

五、sudo指令
用于暂时为用户提权,以进行更高权限的操作,使用时只需要在正常指令前加上sudo即可。
只有用户名已加入文件/etc/sudoers的用户才可以提权,而只有root用户有权修改该文件。

粘滞位

由前面的写权限可知,只要用户拥有文件所处目录的写权限,那么用户就有权删除该目录下的所有文件,而不管该文件的所有者是谁,换句话说,一个文件本身能否被删除,取决于文件所处的目录而不是文件本身的权限。这就引发了一个问题:当多个用户在同一个目录下建立文件时,这些用户可以任意删除不属于自己的文件,为了解决这个问题,产生了粘滞位。
当一个目录被设有粘滞位后,则该目录下的文件只能由以下用户删除
①超级管理员
②该目录的所有者
③该文件的所有者

chmod +t dir//为目录dir添加粘滞位

你可能感兴趣的:(linux,运维,服务器)