• 权限管理


    (一)权限管理

    • 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:只生成名字,不创建文件,测试用
      • 注:会将创建的文件名直接返回,因此,可以通过命令引用保存起来
  • 相关阅读:
    【python】python读写文件,都不乱码
    【python】python读取文件报错UnicodeDecodeError: 'gbk' codec can't decode byte 0xac in position 2: illegal multibyte sequence
    【python】python编码方式,chardet编码识别库
    【IntelliJ IDEA】idea设置UTF-8的位置
    【IntelliJ IDEA】idea或者JetBrains公司所有编辑器,设置其软件的字体样式
    【java】判断某段字符串的编码方式,并按照新的编码方式输出
    editplus多行合并成一行
    java解决手机上传竖拍照片旋转90180270度问题
    利用exif.js解决手机上传竖拍照片旋转90180270度问题
    win10下搭建storm环境
  • 原文地址:https://www.cnblogs.com/jacky1982/p/7626999.html
Copyright © 2020-2023  润新知