Linux权限

目录

Linux下有两种用户:超级用户(root)、普通用户。

Linux下文件类型的区分方式

r,w,x的定义

chmod

chown

sudo

sudo重定向(sudo失效)

添加用户到信任列表的方式:

umask(权限掩码)


Linux下有两种用户:超级用户(root)、普通用户。

超级用户:可以再linux系统下做任何事情,不受限制
普通用户:在linux下做有限的事情。
超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。
su [用户名 ],用于切换用户。例如,要从root 用户切换到普通用户 user ,则使用 su user 。 要从普通用户 user 切换到 root 用户则使用 su root( root 可以省略),此时系统会提示输入 root 用户的口令。

Linux下文件类型的区分方式

Linux下不以文件后缀名区分文件类型,后缀名在系统层面没有意义,但对用户有意义,所以是可以使用后缀名让用户自己区分文件类型的。 注意这里说的是Linux操作系统不以后缀名区分,但有些Linux机器上的软件,像gcc是需要以后缀名区分文件类型的,如gcc只能编译后缀名是  .c的文件。那Linux是怎么区分文件类型的呢?往下看。

 如上图中红框部分,Linux是以红框部分的第一个字符区分文件类型。

d:目录文件。

-:普通文件。

p:管道文件。

b:块设备。 如磁盘设备。

c:字符设备。 如键盘和显示器。

l:链接文件。(类似Windows的快捷方式)

拥有者:文件属于谁。

所属组:文件属于哪一个组。

other:不属于上面两个的任意一个就是other。

r,w,x的定义

Read读,对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限。
Write写,对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限。
execute可执行,对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限。

对于上图红框部分,除去第一个符号-,第一个rwx表示拥有者的权限,第二个r-x代表所属组的权限,第三个r-x代表other的权限。r代表读,w代表写,x代表执行。

 对于上图中的第一个root是拥有者,第二个root是所属组。

chmod

用于修改用户对文件的权限。

u :拥有者(user)
g :拥有者同组用户(group)
o :其它用户(other)
a :所有用户(all)
+: 向权限范围增加权限代号所表示的权限
-: 向权限范围取消权限代号所表示的权限
=: 向权限范围赋予权限代号所表示的权限。
方式一:chmod u-rwx file.txt。
由于每个用户的三种权限rwx只有拥有和不拥有两种状态,所以可以用0和1表示每种权限,如111代表rwx,101代表r-x,而111作为二进制又可以代表十进制的7,所以三个用户(user,group,other)可以用三个八进制数代表各自用户的每种权限。如八进制数777代表三个用户的权限都是rwx,八进制数501代表三个用户的权限为r-x --- --x。
方式二:chmod 1 file.txt。(前面的1实际是001,shell会自动补0)

chown

用于修改文件的拥有者。将一个文件送给别人是需要经过别人同意的,因为这个文件不一定是“好东西”,所以说普通用户作为文件拥有者没办法将自己文件送给别人,只有root有权限修改文件的拥有者,或者修改文件的所属组。

1.chown user1 file1 (只修改拥有者)

2. chown user1 :user1 file1 (可以同时修改拥有者和所属组)

常用选项:-R 递归修改文件或目录的拥有者。

chgrp

1.chgrp user1 file1 (只修改所属组,和chown不一样,不可以同时修改拥有者和所属组)

注意事项

1.权限只会认定一次,什么意思呢?比如说一个文件的拥有者和所属组都是user1,将拥有者的权限全部关闭,但所属组的权限全部打开,此时user1是否可以通过所属组的权限对文件进行操作呢?答案是不能,权限只会认定一次,首先判断用户是谁,比如user1是拥有者,那就认定user1是拥有者,只验证拥有者的权限,而无视所属组的权限。

2.进一个目录需要的是读权限r吗?答案:并不是,需要的是可执行x权限,目录文件的读r权限只能让用户将目录下的文件ls打印在显示器上,但如果没有x权限,是进不了目录的。

sudo

普通用户被添加到信任列表就可以用普通用户的权限去把自己文件送给别人,sudo用于强制执行sudo后面的指令,注意:虽然表面上这里是用普通用户的账号以root的权限级别执行指令,输入密码时也是输入普通用户的密码即可,但本质上就是用root的账号进行操作,只是不需要切换成root账号。因为用普通账号sudo创建文件时,最终文件的拥有者和所属组都是root。

sudo重定向(sudo失效)

如果尝试将sudo命令的输出重定向(>)到用户没有写权限的文件,则会收到权限拒绝的错误消息。即sudo失效。

添加用户到信任列表的方式:

首先登陆root账号,注意必须是root,然后输入上面的指令。然后进入底行模式输入/%wheel 快速找到下图中的文本,然后进入插入模式并添加光标所在的一行即可,注意修改用户名。

如上图:创建一个目录文件时默认的最终权限就是rwx rwx r-x(775),普通文件默认的最终权限是rw-rw-r--(664), 为什么呢?往下看。

umask(权限掩码)

umask用于过滤默认的起始权限,通过计算得到最终权限。

上图中的0002就是权限掩码,权限掩码的第一位不用关注,只需看后三位,如上图中的后三位是002,002是个八进制数。用于辅助计算最终的权限。

计算时需要遵守下面两条规则:

1.在Linux下一个目录文件被创建时的起始权限是777,普通文件的起始权限是666。

(注意这里的777是目录默认的起始权限,而上面的755是默认的最终权限,两者不一样。)

2.凡是在权限掩码中出现的权限,都不应在最终权限中出现!

下面以计算目录文件的默认最终权限为例子:

777八进制数转换成二进制为111 111 111,而此时umask后三位为八进制数002,转换成二进制为000 000 010。由于上面的计算规则2,umask即002的二进制从低位开始的第二个数字是1,此时777的二进制从低位开始的第二个数字就不该是1,所以最终权限是111 111 101,即八进制数775

接下来以计算普通文件的默认最终权限为例子:

666八进制数转换成二进制为110 110 110,而此时umask为八进制数002,转换成二进制为

000 000 010。由于上面的计算规则2,umask即002的二进制从低位开始的第二个数字是1,

此时666的二进制从低位开始的第二个数字就不该是1,所以最终权限为110 110 100,即八进制数664.

那规则2是怎么实现的呢?

很简单,假如权限掩码后三位为002,那么八进制数002的二进制为000 000 010,然后按位取反,为111 111 101。为什么取反?取反前的1就代表掩码中出现了该权限,取反后为0,然后又因为任何数字和0相与都为0,也就使得在掩码中出现的权限不可以在最终权限中出现。比如让111 111 111和111 111 101(掩码后三位002的二进制取反得到)进行与运算,得到结果为111 111 101即八进制数775.

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值