-
id – 显示用户身份号
-
chmod – 更改文件模式
-
umask – 设置默认的文件权限
-
su – 以另一个用户的身份来运行 shell
-
sudo – 以另一个用户的身份来执行命令
-
chown – 更改文件所有者
-
chgrp – 更改文件组所有权(类似chmod 使用chomd就OK了)
-
passwd – 更改用户密码
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对于小组来说它也是可读可写可执行,第四组---证明对于访客它不可读不可写不可执行。
我想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
举个例子:
- chmod +x 等价 chmod a+x
- chmod u+rwx 单单给用户添加模式
- chmod o-rw 删除访客的读写模式
- chomd o=rw 给访客赋予rw之前的之前访客的所有模式统统淘汰。
第三点跟八进制是一样的,其实八进制就相当于=模式,并且我认为八进制更好玩,不用管什么添加还是减少还是赋值,直接给数字,就OK了,例如600 666 777多爽
设置默认权限。(等我好好看看再更新。。。)
-
setuid 位(八进制4000)。当应用到一个可执行文件时,它把有效用户 ID 从真正的用户(实际运行程序的用户)设置成程序所有者的 ID
-
setgid 位(八进制2000),这个相似于 setuid 位,把有效用户组 ID 从真正的 用户组 ID 更改为文件所有者的组 ID
-
setgid 位(八进制2000),这个相似于 setuid 位,把有效用户组 ID 从真正的 用户组 ID 更改为文件所有者的组 ID
也就是说其实权限分为普通型和特殊型上面这三个是特殊权限。
更改权限。
-
su -l user 更改用户,通常省略的话就是超级用户。
-
su -c 'command' 仅仅引号里的命令执行超级用户。
准确来说sudo也是实现了超级用户,只不过,它并没有开启新的shell只是让普通用户获得了超级用户的权限罢了,日常生活中我们也是经常使用sudo,系统不会让我们使用su
改变文件的user和group。
chown user:group fileName举例子:
chown bob:coastroad README.md
chown :coast Readme.MD
chown bod: reddd.md
也就是说user 和 group并不是非要都有的,你可以只有一个。
passwd user用法就是这样。
另外关于权限的最常见的就是chmod和umask所以说这两个学好还是比较重要的,至于更多的命令,看心情。心情好了,我以后在这个文件中可能会多写几个命令。但是估计我通常使用chmod就够了。