上一篇将一些用户和组管理命令写完,接下来是权限管理
权限管理:
每一个目录或文件都有相应的权限位来限制用户是否有权限可以"使用"
进程安全上下文:
进程对文件的访问权限应用模型:
进程的属主与文件的属主是否相同;如果相同,则应用属主权限;
否则,则检查进程的属主是否属于文件的属组;如果是,则应用属组权限;
否则,就只能应用other的权限;
解:当某一个用户访问文件时,会判断用户是否属于文件属主、属组、其它人;依次进行判断,对应某个权限位时,则使用其权限。
首先看一下文件权限位对应的意义:
[[email protected]_1 sh]# ll test.txt
-rwxrwxrwx 1 root root 1186 Apr 16 15:22 test.txt
rwxrwxrwx:
左三位:定义user的权限,UID
中三位:定义group的权限;GID
右三位:定义other的权限
权限:
r:readable, 读
w:writable, 写
x:excutable,执行
目录:
r:可使用ls命令获取其下的所有文件列表;
w: 可修改此目录下的文件列表;即创建或删除文件;
x: 可cd至此目录中,且可使用ls -l来获取所有文件的详细属性信息;
文件:
r:可获取文件的数据;
w: 可修改文件的数据;
x:可将此文件运行为进程;
注:目录权限与文件权限是两码事。不是有目录权限后,里面的文件就可以读、改等操作
权限组合机制:
--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7
简单的来说:r=4、w=2、x=1,‘-’=0
权限管理命令:
chmod命令:
chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
chmod [OPTION]... --reference=RFILE FILE...
三类用户:
u:代表属主
g:代表属组
o:代表其它
a: 代表所有
(1)chmod [OPTION]... MODE[,MODE]... FILE...
MODE表示法:
赋权表示法:直接操作一类用户的所有权限位rwx;
u=rwx
g=rwx
o=rwx
a=rwx
授权表示法:直接操作一类用户的一个权限位r,w,x;
u+, u-:u+r、u+w、u+x,u-r...
g+, g-:g+r...,u-r...
o+, o-:o+r...,o-r...
a+, a-:a+r...,a-r...
示例:
[[email protected]_1 sh]# chmod u+w test.txt
[[email protected]_1 sh]# chmod a-w test.txt
(2)chmod [OPTION]... OCTAL-MODE FILE...
[[email protected] ~]# chmod 777 anaconda-ks.cfg
(3)chmod [OPTION]... --reference=RFILE FILE..(参考anaconda-ks.cfg权限,授权到hello文件上)
[[email protected] ~]# chmod --reference=anaconda-ks.cfg hello
注意:用户仅能修改属主为自己的那些文件的权限;
从属关系管理命令:chown, chgrp
chown命令:修改所有者和组
chown [OPTION]... [OWNER][:[GROUP]] FILE...
两种方式:
[[email protected] ~]# chown kwang:kwang hello
[[email protected] ~]# chown kwang.kwang hello
chown [OPTION]... --reference=RFILE FILE...
参考一个文件所有者和组的属性,授权到指定文件上
选项:
-R:递归修改
chgrp命令:修改组属性
chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE...
示例:
[[email protected]_1 sh]# chgrp test2 test.txt
注意:仅管理员可修改文件的属主和属组;
umask:文件的权限反向掩码
当创建文件和目录时,都将有反向掩码和权限位相减为初始权限
文件:
666-umask
目录:
777-umask
注意:之所以文件用666去减,表示文件默认不能拥有执行权限;如果减得的结果中有执行权限,则需要将其加1,只能用在文件上;
umask: 022
666-023=644
777-023=755
umask命令:
umask:查看当前umask
umask MASK: 设置umask
[[email protected] ~]# umask 022
注意:此类设定仅对当前shell进程有效;
练习:
1、新建系统组mariadb, 新建系统用户mariadb, 属于mariadb组,要求其没有家目录,且shell为/sbin/nologin;尝试root切换至用户,查看其命令提示符;
2、新建GID为5000的组mageedu,新建用户gentoo,要求其家目录为/users/gentoo,密码同用户名;
3、新建用户fedora,其家目录为/users/fedora,密码同用户名;
4、新建用户www, 其家目录为/users/www;删除www用户,但保留其家目录;
5、为用户gentoo和fedora新增附加组mageedu;
6、复制目录/var/log至/tmp/目录,修改/tmp/log及其内部的所有文件的属组为mageedu,并让属组对目录本身拥有写权限;
额外一个命令,可在复制文件同时设置其权限及属主等
install命令:
install - copy files and set attributes(复制文件和设置文件属性)
单源复制:
install [OPTION]... [-T] SOURCE DEST
多源复制:
install [OPTION]... SOURCE... DIRECTORY
install [OPTION]... -t DIRECTORY SOURCE...
创建目录:
install [OPTION]... -d DIRECTORY...
常用选项:
-m, --mode=MODE:设定目标文件权限,默认为755;
-o, --owner=OWNER:设定目标文件属主;
-g, --group=GROUP:设定目标文件属组;
-d,:创建目录
示例:
[[email protected] ~]# install -d /sh/install
drwxr-xr-x 2 root root 6 Mar 20 18:03 /sh/install/
[[email protected] ~]# install -m 640 -o kwang -g kwang /etc/issue /sh/
-rw-r----- 1 kwang kwang 23 Mar 20 18:02 issue