权限管理
进程安全上下文:
-
进程对文件的访问权限应用模型:
- 进程的属主与文件的属主是否相同;如果相同,则应用属主权限;
否则,则检查进程的属主是否属于文件的属组;如果是,则应用属组权限;
否则,就只能应用other的权限;
- 进程的属主与文件的属主是否相同;如果相同,则应用属主权限;
-
权限:
- r:read,读
- w:write,写
- x:excute,执行
- 文件:
- r:可获取文件的数据
- w:可修改文件数据
- x:可将此文件运行为进程
- 目录:
- r:可使用ls命令获取其下的所有文件列表;
- w:可修改此目录下的文件列表;即创建或删除文件;
- x:可cd至此目录中,且可使用ls -l来获取所有文件的详细属性信息;
mode:rwxrwxrwx
ownership:user,group
权限组合机制 | binary | octonary |
---|---|---|
--- | 000 | 0 |
--x | 001 | 1 |
-w- | 010 | 2 |
-wx | 011 | 3 |
r-- | 100 | 4 |
r-x | 101 | 5 |
rw- | 110 | 6 |
rwx | 111 | 7 |
练习:rw-rw-r--, rwxrwxr-x, rwxr-x---, rw------, rwxr-xr-x
664,775,750,600,755
权限管理命令
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=
g=
o=
a=
授权表示法:直接操作一类用户的一个权限位r,w,x;
u+, u-
g+, g-
o+, o-
a+, a-
一般a+,a-可以省略a,但是+w 因为全局写太危险,所以只给属主+w
(2) chmod [OPTION]... OCTAL-MODE FILE...
(3) chmod [OPTION]... --reference=RFILE FILE...
选项:
-R, --recursive:递归修改
注意:用户仅能修改属主为自己的那些文件的权限;
从属关系管理命令:chown, chgrp
chown命令:
chown [OPTION]... [OWNER][:[GROUP]] FILE...
chown [OPTION]... --reference=RFILE FILE...
选项:
-R:递归修改
chgrp命令:
chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE...
注意:仅管理员可修改文件的属主和属组;
思考:用户对目录有写权限,但对目录下的文件没有写权限时,能否修改此文件内容?能否删除此文件?
umask:文件的权限反向掩码,遮罩码;
- 文件:
666-umask - 目录:
777-umask
注意:之所以文件用666去减,表示文件默认不能拥有执行权限;如果减得的结果中有执行权限,则需要将其加1;
umask: 023
666-023=644
-
777-023=754
umask命令: umask:查看当前umask umask MASK: 设置umask
注意:此类设定仅对当前shell进程有效;
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:设定目标文件属组;
mktemp命令:
mktemp - create a temporary file or directory
mktemp [OPTION]... [TEMPLATE]
常用选项:
-d:创建临时目录
注意:mktemp会将创建的临时文件名直接返回,因此,可直接通过命令引用保存起来;
练习:完成以下任务
-
新建系统组mariadb, 新建系统用户mariadb, 属于mariadb组,要求其没有家目录,且shell为/sbin/nologin;尝试root切换至用户,查看其命令提示符;
新建GID为5000的组edu,新建用户gentoo,要求其家目录为/users/gentoo,密码同用户名;
- 新建用户fedora,其家目录为/users/fedora,密码同用户名;
- 新建用户www, 其家目录为/users/www;删除www用户,但保留其家目录;
- 为用户gentoo和fedora新增附加组edu;
-
复制目录/var/log至/tmp/目录,修改/tmp/log及其内部的所有文件的属组为edu,并让属组对目录本身拥有写权限;