(一)权限管理
- ls -l:rwxrwxrwx
- 左三位:属主权限
- 中三位:属组权限
- 右三位:其它权限
- 进程安全上下文
- 进程对文件的访问权限应用模型:
- 检查进程的属主与文件的属主是否相同。如果相同,则应用属主权限(左三位)。
- 否则,检查进程的属主是否属于文件的属组。如果属于,则应用属组权限(中三位)。
- 否则,则应用其它权限(右三位)。
- 进程对文件的访问权限应用模型:
- 权限:
- r:readable,读
- w:writable,写
- x:executable,执行
- 文件:
- r:可获取文件的数据
- w:可修改文件的数据
- x:可将此文件运行为进程,文件内部需要写指令
- 目录:
- r:可使用ls命令获取其下的所有文件列表
- w:可修改此目录下的文件列表,即创建或者删除文件
- x:可cd至此目录中,并且可以使用ls -l命令
- 目录的读权限仅允许我们读目录,获得在该目录中所有文件名的列表,但无法查看目录中文件的内容
- 目录的执行权限不允许我们读取目录的文件列表,但可以查看目录中文件的内容。当一个目录是我们要访问文件的路径名的一个组成部分时,对该目录的执行权限使我们可通过该目录
- 要修改目录中的文件内容,不仅仅需要目录的写权限,还需要目录的执行权限
- cp一个目录中的文件需要对目录具有执行权限
- 权限组合
- ---:000(2进制权限表示法)/0(8进制权限表示法)
- --x:001/1
- -w-:010/2
- -wx:011/3
- r--:100/4
- r-x:101/5
- rw-:110/6
- rwx:111/7
- 权限管理命令
- 三类用户
- u:属主
- g:属组
- o:其它
- a:所有
- chmod
- 用法一,直接给某类用户的权限赋值,例如:chmod ug=rw,o= fstab/rw-rw----
- 用法二,增减某类用户的权限,例如:chmod u-wx,g+w fstab,(u+/u-/g+/g-/o+/o-/a+/a-/+/-,注:直接写+/-和a+/a-大部分情况是一样的,但是有时候不一样,比如,chmod +w fstab,会只给u加w,因为全局写危险,只给属主加)
- 用法三,八进制表示法,例如:chmod 660 fstab
- 用法四,将一个文件的权限设置成和另一个文件一样,例如:chmod --reference=/var/log/messages fstab
- 选项
- -R/--recursive:对于目录来说,如果不加-r则只修改目录本身的权限。一般用于用法一和用法二
- 用户仅能修改那些属主为自己的那些文件的权限
- 三类用户
- 从属关系管理命令
- chown:修改属主和属组
- -R:递归修改,例如:chown -R docker /tmp/skel
- :号用来分隔属主和属组,例如:chown docker:mygrp /tmp/skel。也可以使用“.”
- --reference,例如:chown --reference=/tmp/moosefs /tmp/skel
- chgrp:修改属组,等于chown :group FileName。用法和chown一样
- 仅管理员可以修改文件的属主和属组
- chown:修改属主和属组
思考:如果对目录有写权限,但是对文件没有d写权限,可否删除文件?答案:可以。
- umask:文件权限的反向掩码,遮罩码。创建时:
- 文件:666-umask
- 目录:777-umask
- 注:之所以文件用666去减,表示文件默认不能拥有执行权限,如果减得的结果中有执行权限,则需要将其加1
- umask命令:
- 单独使用,用来查看umask的值,默认值是022
- umask MASK:用来设置umask,但是仅对当前的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 [OPTION]... [-T] SOURCE DEST
- 多源复制:install [OPTION]... SOURCE... DIRECTORY
- 多源复制:install [OPTION]... -t DIRECTORY SOURCE...
- 创建目录:install [OPTION]... -d DIRECTORY... 例如:install -d hello
- -m,--mode=MODE:指定权限,如果不指定,默认复制后的权限为755
- -o,--owner=OWNER:设置目标文件的属主
- -g,--group=GROUP:设置目标文件的属组
- mktemp命令:创建一个临时文件或者目录
- mktemp [OPTION]... [TEMPLATE]
- mktemp /tmp/mytemp.XXXX
- -d:创建临时目录
- -u:只生成名字,不创建文件,测试用
- 注:会将创建的文件名直接返回,因此,可以通过命令引用保存起来