上一篇将一些用户和组管理命令写完,接下来是权限管理shell
权限管理:
centos
每个目录或文件都有相应的权限位来限制用户是否有权限能够"使用"安全
进程安全上下文:
ide
进程对文件的访问权限应用模型:centos7
进程的属主与文件的属主是否相同;若是相同,则应用属主权限;spa
不然,则检查进程的属主是否属于文件的属组;若是是,则应用属组权限;orm
不然,就只能应用other的权限;递归
解:当某一个用户访问文件时,会判断用户是否属于文件属主、属组、其它人;依次进行判断,对应某个权限位时,则使用其权限。进程
首先看一下文件权限位对应的意义:it
[root@test7_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=四、w=二、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...
示例:
[root@test7_1 sh]# chmod u+w test.txt
[root@test7_1 sh]# chmod a-w test.txt
(2)chmod [OPTION]... OCTAL-MODE FILE...
[root@centos7 ~]# chmod 777 anaconda-ks.cfg
(3)chmod [OPTION]... --reference=RFILE FILE..(参考anaconda-ks.cfg权限,受权到hello文件上)
[root@centos7 ~]# chmod --reference=anaconda-ks.cfg hello
注意:用户仅能修改属主为本身的那些文件的权限;
从属关系管理命令:chown, chgrp
chown命令:修改全部者和组
chown [OPTION]... [OWNER][:[GROUP]] FILE...
两种方式:
[root@centos7 ~]# chown kwang:kwang hello
[root@centos7 ~]# chown kwang.kwang hello
chown [OPTION]... --reference=RFILE FILE...
参考一个文件全部者和组的属性,受权到指定文件上
选项:
-R:递归修改
chgrp命令:修改组属性
chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE...
示例:
[root@test7_1 sh]# chgrp test2 test.txt
注意:仅管理员可修改文件的属主和属组;
umask:文件的权限反向掩码
当建立文件和目录时,都将有反向掩码和权限位相减为初始权限
文件:
666-umask
目录:
777-umask
注意:之因此文件用666去减,表示文件默认不能拥有执行权限;若是减得的结果中有执行权限,则须要将其加1,只能用在文件上;
umask: 022
666-022=644
777-022=755
umask命令:
umask:查看当前umask
umask MASK: 设置umask
[root@centos7 ~]# umask 022
注意:此类设定仅对当前shell进程有效;
练习:
一、新建系统组mariadb, 新建系统用户mariadb, 属于mariadb组,要求其没有家目录,且shell为/sbin/nologin;尝试root切换至用户,查看其命令提示符;
二、新建GID为5000的组mageedu,新建用户gentoo,要求其家目录为/users/gentoo,密码同用户名;
三、新建用户fedora,其家目录为/users/fedora,密码同用户名;
四、新建用户www, 其家目录为/users/www;删除www用户,但保留其家目录;
五、为用户gentoo和fedora新增附加组mageedu;
六、复制目录/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,:建立目录
示例:
[root@centos7 ~]# install -d /sh/install
drwxr-xr-x 2 root root 6 Mar 20 18:03 /sh/install/
[root@centos7 ~]# install -m 640 -o kwang -g kwang /etc/issue /sh/
-rw-r----- 1 kwang kwang 23 Mar 20 18:02 issue
注:/etc/issue是要复制文件 /sh是复制目标路径