权限管理

(一)权限管理

  • 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一样
    • 仅管理员可以修改文件的属主和属组

思考:如果对目录有写权限,但是对文件没有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:只生成名字,不创建文件,测试用
    • 注:会将创建的文件名直接返回,因此,可以通过命令引用保存起来
原文地址:https://www.cnblogs.com/jacky1982/p/7626999.html