权限【TLCL】
用户帐户 定义在/etc/passwd 文件里面,用户组定义在/etc/group 文件里面。
/etc/shadow 包含了关于用户密码的信息
文件属性:
属性 | 文件类型 |
---|---|
- | 一个普通文件 |
d | 一个目录 |
l | 一个符号链接。注意对于符号链接文件,剩余的文件属性总是"rwxrwxrwx",而且都是 虚拟值。真正的文件属性是指符号链接所指向的文件的属性。 |
c | 一个字符设备文件。这种文件类型是指按照字节流来处理数据的设备。 比如说终端机或者调制解调器 |
b | 一个块设备文件。这种文件类型是指按照数据块来处理数据的设备,例如一个硬盘或者 CD-ROM 盘。 |
权限属性:
属性 | 文件 | 目录 |
---|---|---|
r | 允许打开并读取文件内容。 | 允许列出目录中的内容,前提是目录必须设置了可执行属性(x)。 |
w | 允许写入文件内容或截断文件。但是不允许对文件进行重命名或删除,重命名或删除是由目录的属性决定的。 | 允许在目录下新建、删除或重命名文件,前提是目录必须设置了可执行属性(x)。 |
x | 允许将文件作为程序来执行,使用脚本语言编写的程序必须设置为可读才能被执行。 | 允许进入目录,例如:cd directory 。 |
更改文件模式——chmod
只有文件的所有者或者超级用户才 能更改文件或目录的模式
chmod 命令支持两种不同的方法来改变文件模式:八进制数字表示法或 符号表示法。
chmod 命令符号表示法
u | "user"的简写,意思是文件或目录的所有者。 |
g | 用户组。 |
o | "others"的简写,意思是其他所有的人。 |
a | "all"的简写,是"u", "g"和“o”三者的联合。 |
执行的操作可能是一个“+”字符,表示加上一个权限, 一个“-”,表示删掉一个权限,或者是一个“=”,表示只有指定的权限可用,其它所有的权限被删除。
权限由 “r”、“w”和 “x” 来指定。
umask
0002
先忽略掉开头的三个零,掩码中若出现一个数字1,则删除文件模式中和这个1在相同位置的属性
其中之一是 setuid 位(八进制4000),这种操作通常会应用到 一些由超级用户所拥有的程序。
第二个是 setgid 位(八进制2000),这个相似于 setuid 位,把有效用户组 ID 从真正的 用户组 ID 更改为文件所有者的组 ID。
如果设置了一个目录的 setgid 位,则目录中新创建的文件 具有这个目录用户组的所有权,而不是文件创建者所属用户组的所有权。
第三个是 sticky 位(八进制1000)。这个继承于 Unix,在 Unix 中,它可能把一个可执行文件 标志为“不可交换的”。
在 Linux 中,会忽略文件的 sticky 位,但是如果一个目录设置了 sticky 位, 那么它能阻止用户删除或重命名文件,除非用户是这个目录的所有者,或者是文件所有者,或是 超级用户。
chmod u+s program 授予一个程序 setuid 权限。
chmod g+s dir 授予一个目录 setgid 权限。
chmod +t dir 授予一个目录 sticky 权限
su [-[l]] [user]
如果包含"-l"选项,那么会为指定用户启动一个需要登录的 shell。这意味着会加载此用户的 shell 环境, 并且工作目录会更改到这个用户的家目录。
选项"-l"可以缩写为"-",这是经常用到的形式。
如果不指定用户,那么就假定是 超级用户。
输入"exit",则返回到原来的 shell
su -c 'command'
使用这种模式,命令传递到一个新 shell 中执行。把命令用单引号引起来很重要,因为我们不想 命令在我们的 shell 中展开,但需要在新 shell 中展开。
sudo - 以另一个用户身份执行命令
su 和 sudo 之间的一个重要区别是 sudo 不会重新启动一个 shell,也不会加载另一个 用户的 shell 运行环境。
chown - 更改文件所有者和用户组
chown [owner][:[group]] file...
chown 命令被用来更改文件或目录的所有者和用户组。
参数 | 结果 |
---|---|
bob | 把文件所有者从当前属主更改为用户 bob。 |
bob:users | 把文件所有者改为用户 bob,文件用户组改为用户组 users。 |
:admins | 把文件用户组改为组 admins,文件所有者不变。 |
bob: | 文件所有者改为用户 bob,文件用户组改为用户 bob 登录系统时所属的用户组。 |
chgrp - 更改用户组所有权
更改用户密码
passwd [user]