在前一章当中我们讲述了用户和组的管理命令,以及对安全的安全上下文,介绍了如何添加用户以及删除和修改用户,对于组来说也亦是如此,添加或修改用户或组之后,我们可以设置其用户密码或组密码来认证其用户,最后我们讲述了如何进行切换用户,那么在这一章中我们开始讲述权限管理。
一、补充上一章的命令
在上一章中有一些命令没有说完,在这章节中我们将它们一一详解,首先我们来说chsh命令。
chsh命令是用于改变用户的登录shell,如果没有指定其shell,该命令就会相应的提示。格式为:
# chsh [OPTIONS] /PATH/TO/SHELL
该命令选项为:
-s, --shell:指定用户所登录的shell; -l, --list-shells:显示/etc/shells中的shell列表; -u, --help:显示帮助; -v, --version:显示其版本信息;
chfn,更改你的用户信息,存放在/etc/passwd文件中。finger命令是用户信息查找的程序。
whoami显示当前的登录用户是哪一个。
pwck是验证系统认证文件/etc/passwd和/etc/shadow的内容和格式的完整性。语法格式为:
# pwck [OPTIONS] [passwd [shadow]]
该命令的选项如下:
-q:仅报告错误信息; -s:以用户ID排序文件; -r:只读方式运行指令;
接下来是grpck命令,该命令是用户验证组文件的完整性,在验证之前需要锁定/etc/group和/etc/shadow这两个文件,之后该命令检查数据是否正确存放。有两个参数可以记一下:
-r:只读模式; -s:排序组ID。
二、权限管理
权限管理就是用户的访问权限进行了其控制,我们使用CentOS中我们使用ll命令可以在该目录下详细查看文件权限、属主属组、大小和日期等,而在Debian中,ll命令是不存在的,因为ll是一个别名在CentOS中,要想查看用ls -l命令才可以,那么我们执行该命令之后,我们看到一列字符,由rwx组成,那便是权限的组成。
rwxrwxrwx
我们看到一共有九个字符串来组成,左边这三位是定义用户的权限,中间这三位是定义组的权限,最后的三位是定义其他人的权限,那么我们来总结一下权限的定义。
rwxrwxrwx: 左三位:定义user(owner)的权限; 中三位:定义group的权限; 右三位:定义other的权限;
对于用户来说,访问某个目录下的文件时就会发起某一个命令进程,比如说发起一个cat命令,这个命令也是个程序,用户发起时它也是形成为一个进程来去运行,如果发起该进程的用户与该文件所定义的用户相同,就可以行使该用户的权限来查看文件内容。但如果用户发起的进程不属于这个用户的话,而是这个进程的用户是属于这个组的话,我们就可以行使该文件的属组权限来查看该文件。但如果这以上既不属于这个用户,又不属于这个组,就只能找其它人的权限来应用。所以,我们来总结一下进程的安全上下文:
进程安全上下文: 进程对文件的访问权限的应用模型: 进程的属主与文件的属主是否相同;如果相同,则应用属主权限; 否则,则检查进程的属主是否属于文件的属组;如果是,则应用属组权限; 否则,就只能应用other权限;
我们知道了rwx的组成就代表了其权限的组成,其中r就是读权限(readable),w就是写的权限(writesble),x就是其执行的权限(excuteable),这些权限的组成对于文件和目录的意义是不一样的,我们先说一下对于文件的意义。
对于文件来说,rwx的权限组成的意义为:
r:可获取文件的数据; w:可修改文件的数据; x:可将此文件运行为一个进程;
对于目录来说,rwx的权限组成的意义为:
r:可以使用ls命令获取其下列所有的文件以及目录的列表; w:可以修改此目录下列的文件列表;比如创建或删除及重命名文件; x:可以cd至此目录中还可以使用ls -l来获取所有的文件信息属性的信息;
需要注意的是,对于一个普通文件来说,x的权限是不应该拥有的,如果对普通的文本文件赋予x权限并且运行的话,瞬间就会给系统造成极大的负担,很有可能会损坏其系统。但是对于目录来说,x的权限是必须要有的,因为你得要进去该目录才能修改其目录下的目录或文件等。除非有特殊的需要,不然的话是必须得有。
权限的组合是由u,g,o来组成,分别对于属主、属组和其他人,所以它的模式(mode)每一个都由rwx可以组成多样的权限。不过还有另一种的组合权限方法是由八进制组成的,范围由0到7,称之为权限组合机制,示例如下:
权限组合机制: --- 000 0 --x 001 1 -w- 010 2 -wx 011 3 r-- 100 4 r-x 101 5 rw- 110 6 rwx 111 7
对于权限的管理的命令为chmod命令,该命令的语法格式如下:
chmod [OPTION]... MODE[,MODE]... FILE chmod [OPTION]... OCTAL-MODE FILE chmod [OPTION]... --reference=RFILE FILE...
主要针对的以上的三类用户,这三类用户我们也讲过,分别是:
三类用户: u:属主 g:属组 o:其他 a:所有
我们先来说第一种格式,第一种格式为:
chmod [OPTION]... MODE[,MODE]... FILE...
其中的MODE表示的方法有两种,第一种为赋权表示法,其意思就是直接操作一类用户的所有权限位rwx:例如:u=w, g=w, o=。
u= g= o= a=
第二种方法为授权表示法:就是直接操作一类用户的其中一个的权限位r,w,x。
u+, u- g+, g- o+, o- a+, a-
其次我们说一下第二个命令的格式,第二种命令的格式为:
chmod [OPTION]... OCTAL-MODE FILE...
这个并不是以上用字符,而是用数字,例如:
# chmod 660 fstab
最后一个命令主要是将源文件的权限递归到目标文件当中去,格式为:
chmod [OPTIONS]... --reference=RFILE FILE...
例如:
# chmod --reference=/var/log/message fstab
该命令的选项为:
-R, --recursive:递归修改(不建议使用,除非只是目录) # chmod -R go= skel/ 这时才有用
需要注意的是:用户仅能修改属主为自己下列其文件的权限。
三、从属关系管理命令
从属关系管理的命令为chown和chgrp这两个命令,一个更改属主,另一个更改属组,前者不止可以改属主,还可以改属组,而后者就不可以,chown语法格式为:
chown [OPTION]... [OWNER[:GROUP]] FILE... chown [OPTION]... --reference=RFILE FILE...
该命令的选项为:
-R:递归修改
语法示例:
# chown user1.user1 fatab # chown --reference anaconda-ks.cfg fatab
我们现在介绍chgrp命令,该命令是修改属组的命令,不过chown命令也可以修改其属组的命令,这个命令简单了解一下就好。
chgrp [OPTION]... GROUP FILE chgrp [OPTION]... --reference=RFILE FILE...
接下来是umask命令,这个名师文件权限的反向掩码,我们称为遮罩码,对于文件和目录来说,遮罩码的赋予的权限是不一样的,从文件来说默认是666,而对目录来说默认是777,这个值得注意,之所以文件文件用666去减,表示文件默认不能用于其执行权限;如果减得中间有执行权限,默认是要加一位数字的。
umask命令:直接默认查看当前umask,如果设置umask的格式为:
umask MASK
值得注意的是:此类设定仅对当前shell进程有效。
mktemp命令是建立随机目录的命令,命令格式:
mktemp [OPTIONS]... [TEMPLATE]
常用选项:
-d:创建临时目录;
注意:mktemp会将创建的临时文件名直接返回,因此,可直接通过命令引用保存起来。
还有一个命令也是复制命令,叫做install命令,复制文件的同时还可以设置属性,有多种复制方法。
单源复制:
install [OPTION]... [-T] SOURCE DEST
多源复制:
install [OPTION]... SOURCE... DIRECTORY install [OPTION]... -t DIRECTORY SOURCE...
创建目录:
install [OPTION]... -D DIRECTORY...
该命令的常用选项为:
-m, --mode=MODE:设mktemp [OPTION]... [TEMPLATE]定目标文件权限,默认为755; -o, --owner=OWNER:设定目标文件属主; -g, --group=GROUP:设定目标文件属组;
转载于:https://blog.51cto.com/tianxie/2043639