什么是shell外壳呢?首先我们应该知道,用户和操作系统内核是不能直接接触的,因为首先操作系统本身就很难去操作,另一方面也是为了操作系统安全考虑,不能让用户直接去操作内核。
于是这时候,在内核和用户之间就有一个“屏障”负责传话,就是将用户的需求或指令传达给内核,将内核的执行结果翻译给用户。对于Windows操作系统来说就是图形化界面,对于Linux操作系统来说就是命令行。出于安全考虑,对于一些有危险的操作,在shell外壳这一阶段就拦截了用户的危险操作。
那么它是怎么实现的呢?shell外壳本质上也是一个执行起来的程序(也叫做进程),只要有用户使用就一直存在;没有用户的使用就不存在,因为根本没有存在的意义。它对于一些有危险或者用户自定义的指令,它会去创建子进程让其去执行。
在Linux操作系统中,这个shell外壳的名字就叫bash,他就是一个进程,我们也可以看到他正在运行
Linux操作系统有两种用户,一种叫root,一种叫普通用户,我们如果想让普通用户转换为root+可以
可以用这两条指令,它们的区别是前者是以root身份重新登录一次,后者只是用户身份的变化,它们都需要输入root的密码,按CTRL+d可以退出
如果想让root用户转换为普通用户就需要
并且是不用输入密码的
如果想普通用户1转成普通用户2,就需要输入普通用户2的密码
那假如我们不想转换成root账号,但是我们需要root的权限去执行一些命令,这时我们就可以用root账号将普通用户加入到下面这个文件中
首先我们要明白两点,就是权限是限制人的,更准确来说是限制角色。就跟你看电影要充会员一样,因为你不是会员,所以才会限制你。对于我们的Linux操作系统来说,角色共有三种,所有者(user),所属组(group)和other
另一点是操作对象一定要有满足人需求的属性,比如不能在csdn上看电影,因为他根本就没有这个属性,同理,在Linux操作系统上文件属性也只有三种:读(r),写(w)和执行(x)
既然只有这三种角色,那我们之前说的root和普通用户是怎么回事呢?root和普通用户这属于是具体的人,每个人都可以扮演多种角色。
于是这样我们就能理解下面的图片了
我们看最左边这一组东西
它一共有十列,除去最左边的这一列一共有九列,其中三三一组,分别表示拥有者所属组和other的读写执行权限,有字母就表示有这个权限,是横杠就表示没有这个权限
再看这两列,左边表示拥有者,右边表示所属组,凡是不属于这两个的就叫做other
如何修改权限呢?
user简写为u,group简写为g,other简写为o,all简写为a
chmod a/u/g/o +/- r/w/x filename
比如说
确定一个人的角色时,从u到g到o,只要确定了就不再判断后边
因为一个角色的权限有还是没有就两种情况,可以看作二进制,而每种角色有三种权限,这就可以看作八进制,比如111就是7,那么我们在改权限时就可以用八进制,比如
就是给所有角色加上所有权限,别的以此类推