Skip to content

Latest commit

 

History

History
173 lines (119 loc) · 5.95 KB

File metadata and controls

173 lines (119 loc) · 5.95 KB

权限

基本概念

  • id – 显示用户身份号

  • chmod – 更改文件模式

  • umask – 设置默认的文件权限

  • su – 以另一个用户的身份来运行 shell

  • sudo – 以另一个用户的身份来执行命令

  • chown – 更改文件所有者

  • chgrp – 更改文件组所有权(类似chmod 使用chomd就OK了)

  • passwd – 更改用户密码

id

id 命令可以显示出来你本机上的各种”用户”(包括你本身,各种程序占用的用户,超级管理员用户,访客用户等)我们看一下例子:

id

uid=501(thomashuke) gid=20(staff) groups=20(staff)...

这个例子中我们可以看出在我的mac上用户这个普通的用户是501一般来说普通用户的id都是从500开始,乌班图是从1000开始计算的。

我们看文件类型

ls -l 
# 可以显示出具体的内容

drwxrwxrwx    4 thomashuke  staff     136 Sep 23  2016 Adlm

我们先看drwxrwxrwx中第一个字符d,它的含义就是一个目录文件。(unix中一切皆是文件)下面给出常见的类型分布:

  • - 普通文件
  • d 目录
  • l 符号链接。注意对于符号链接文件,剩余的文件属性总是"rwxrwxrwx",而且都是 虚拟值。真正的文件属性是指符号链接所指向的文件的属性。
  • c 字符设备文件。这种文件类型是指按照字节流,来处理数据的设备。 比如说终端机,或者调制解调器
  • b 块设备文件。这种文件类型是指按照数据块,来处理数据的设备,例如一个硬盘,或者 CD-ROM 盘。

剩下的九个字符,叫做文件模式,代表着文件所有者,文件组所有者,和其他人的读,写,执行权限。

  • r 允许打开并读取文件内容。 允许列出目录中的内容,前提是目录必须设置了可执行属性(x)。

  • w 允许写入文件内容或截断文件。但是不允许对文件进行重命名或删除,重命名或删除是由目录的属性决定的。 允许在目录下新建、删除或重命名文件,前提是目录必须设置了可执行属性(x)。

  • x 允许将文件作为程序来执行,使用脚本语言编写的程序必须设置为可读才能被执行。 允许进入目录,例如:cd directory 。

drdxr--r--

dxxx

这三个x分别代表了 用户+小组+访客例子中就是说是此目录仅仅可以用户读写执行小组只可以读,访客不可读。

备注:文件一共有10个字符,(当然如果是-也算)来举个例子:

-rwxrwx---

我们看,文件是有十个字符的分别是:

  • -
  • rwx
  • rwx
  • ---

我把这三组分别解释一下:第一个- 证明它是一个普通文件,第二组rwx证明对于用户而言它可读可写可执行,第三组rwx对于小组来说它也是可读可写可执行,第四组---证明对于访客它不可读不可写不可执行。

chmod

我想chomd你不会陌生的把,一个shell script的执行离不开chomd(chmod +x ./fileName

chomod,这个命令是更改文件的权限,比如shell执行的时候如果某个脚本没有执行的权限的话,那么chmod就派上用场了。

不过要记得只有用户和超级用户才有更改的权限,小组和访客是无法更改的。

chomd使用八进制数字更改或者是符号更改。

八进制就是逢八进一,就跟逢十进一是一样的,当然还有16进制2进制等等。

八进制模式

八进制数字 代表的模式
0 ---
1 --x
2 -w-
3 -wx
4 r--
5 r-x
6 rw-
7 rwx
# 第一步先设置模式为600

chmod 600 README.md

# -l后观察

ls -l README.md 

# 果然文件模式已经是600的模式了。成功。

-rw-------  1 thomashuke  staff  629 Sep 11 00:24 README.md

符号模式

符号模式更加灵活,但是我本人貌似更喜欢八进制,😀。无所谓啦~~~

  • + 意思是添加一个谁

  • -意思是减去一个谁

  • = 意思是重新赋值。

  • u user

  • g group

  • o others

  • a all

举个例子:

  1. chmod +x 等价 chmod a+x
  2. chmod u+rwx 单单给用户添加模式
  3. chmod o-rw 删除访客的读写模式
  4. chomd o=rw 给访客赋予rw之前的之前访客的所有模式统统淘汰。

第三点跟八进制是一样的,其实八进制就相当于=模式,并且我认为八进制更好玩,不用管什么添加还是减少还是赋值,直接给数字,就OK了,例如600 666 777多爽

umask

设置默认权限。(等我好好看看再更新。。。)

  • setuid 位(八进制4000)。当应用到一个可执行文件时,它把有效用户 ID 从真正的用户(实际运行程序的用户)设置成程序所有者的 ID

  • setgid 位(八进制2000),这个相似于 setuid 位,把有效用户组 ID 从真正的 用户组 ID 更改为文件所有者的组 ID

  • setgid 位(八进制2000),这个相似于 setuid 位,把有效用户组 ID 从真正的 用户组 ID 更改为文件所有者的组 ID

也就是说其实权限分为普通型和特殊型上面这三个是特殊权限。

su 和 sudo

更改权限。

  • su -l user 更改用户,通常省略的话就是超级用户。

  • su -c 'command' 仅仅引号里的命令执行超级用户。

准确来说sudo也是实现了超级用户,只不过,它并没有开启新的shell只是让普通用户获得了超级用户的权限罢了,日常生活中我们也是经常使用sudo,系统不会让我们使用su

chown

改变文件的user和group。

chown user:group fileName

举例子:

chown bob:coastroad README.md

chown :coast Readme.MD

chown bod: reddd.md

也就是说user 和 group并不是非要都有的,你可以只有一个。

passwd

passwd user

用法就是这样。

另外关于权限的最常见的就是chmod和umask所以说这两个学好还是比较重要的,至于更多的命令,看心情。心情好了,我以后在这个文件中可能会多写几个命令。但是估计我通常使用chmod就够了。