• Linux 权限学习


    Linux  一般将文件的读写权限分为三类: owner / group / others ,并且这三类各有 read / write / execute 等权限。

    owner 文件拥有者

    group 角色

    others 其他人

    特殊的是, root 不受系统权限限制

    Linux 的用户信息记录在 /etc/passwd 文件中

    个人密码存在 /etc/shadow 文件中

    角色记录在 /etc/group 文件中

    使用 ls -al 命令后,输出的内容各列意思是: 权限 、连接数 、 拥有者、角色、文件大小( bytes )、新建或修改日期(不同年份的只显示年月日,不显示 时间)、文件名

    如果要显示完整的时间格式,可以使用 ls -la --full-time

    文件名前面有 . 的,表示是隐藏文件, -a 可以列出隐藏文件( -la 等于 -l -a )

    文件名不要带有 * ? > < ; & ! [ ] | \ / @ ' " ~ ( ) { } ^ 等符号,以免访问时出现异常。

    文件开头也要避免 . - + 等字符( . 表示隐藏文件)

     在权限这一列,每行有 10 个字符,分别表示:

    文件类型, d 目录  - 文件  l 链接  b 可移动设备  c 串口设备(键盘鼠标等)s 接口文件 p 数据传输文件(pipe)

    文件拥有者可读, r 或者  -  , r 可读 - 无权限

    文件拥有者可写,w 或者 -,这个权限不包括删除权限

    文件拥有者可执行,x 或者 -

    角色可读, r 或者  - 

    角色可写,w 或者 -

    角色可执行,x 或者 -

    其他人可读, r 或者  - 

    其他人可写,w 或者 -

    其他人可执行,x 或者 -

    在目录的权限设定上,与文件同样用 rwx 表示,但具体权限稍有不同:

    r 可读取目录及里面文件或目录名称

    w 可在目录下新建文件或目录,可删除目录下的文件或目录,可重命名目录下的文件或目录,可移动目录下的文件或目录

    x 可以将此目录设置为工作目录

    ./ 表示当前目录  

    ../ 表示上一层目录

    - 表示前一个工作目录

    ~ 表示当前用户的工作目录

    ~user 表示 user 家的工作目录

    按 FHS 标准,Linux 的目录结构如下:

      可分享的(shareable) 不可分享的(unshareable)

    不变的

    (static)

    /usr 软件放置处 /etc 配置文件
    /opt 第三方软件 /boot 开机与核心文件

    可变动的

    (variable)

    /var/mail 邮箱 /var/run 程序相关
    /var/spool/news 新闻 /var/lock 程序相关

    还有 / 根目录、 /bin 常用命令、 /boot 开机时使用的文件、/dev 与设备相关的文件、/etc 系统配置文件(通常可读不可写)

    /lib 函式库、/media 媒体库、/mnt 挂载设备、/opt 第三方软件、/run 程序相关、/sbin 系统级命令、/srv 服务、/tmp 临时文件

    /home 用户工作目录、/proc 虚拟内存目录、/sys 虚拟目录

    使用 su root 可以切换用户身份,此时会提示输入 root 用户的密码,成功后会发现只是角色变更,但工作目录还没有切换。

    使用 su - root 就可以切换身份并切换工作目录, su -  也可以(省略了 root )

    使用 exit 可以退出切换的身份,回到原来的身份。

    chgrp  改变文件的角色(change group),修改后的角色要在 /etc/group 中

    chown 改变文件的拥有者,修改后的用户要在 /etc/passwd 中

    chmod 改变文件的权限

    命令加 -R 表示子文件夹中的权限也一起修改

    修改 XXX 文件的角色为 users : chgrp users XXX  

    如果提示:Operation not permitted ,表示不允许的操作,需要用 su 提权

     修改 XXX 文件的拥有者为 mysql : chown mysql XXX

    chown 也能用来修改角色,chown users.root XXX 就是拥有者、角色一起修改的命令

    如果只修改角色,chown .root XXX  /  chown :root XXX 就能达到目的(在这个命令里  .  :都可以用于分隔)

    修改 XXX 文件的权限时,可以用数字或符号来修改: chmod 770 XXX

    数字: r:4  w:2  x:1  ,所以 770 表示 拥有者、角色 有全部权限,其他人无权限,7 = 4 + 2 + 1

    7 可读可写可执行

    6 可读可写

    5 可读可执行

    4 可读

    3 可写可执行

    2 可写

    1 可执行

    0 无权限

    符号: u g o a + - = r w x

    chmod u=rwx,g+rw,o-x XXX 这行命令表示,对 XXX 文件修改权限为:

    拥有者设定为可读可写可执行权限

    角色加上可读可写权限

    其他人移除可执行权限

      改变工作目录: cd 工作目录

      复制文件: cp 来源文件 目标文件( -a 连同权限、修改时间等属性一起复制 )

      移动文件: mv 来源文件 目标文件

      删除文件: rm 目标文件

      显示当前目录: pwd ( -P 参数会显示实际路径 )

      新建一个目录: mkdir ( -m 711 会同时设置权限 -p 如果上层目录不存在,则创建它)

      删除一个空的目录:rmdir (-p 如果上层目录是空的,也删除它)

    Linux 支持环境变量  echo $PATH 可以输出当前设定的环境变量,环境变量可以修改

    ls 命令是最常用的命令,它支持的参数列举如下:

    -a   全部文件,包括 .  .. 隐藏文件

    -A   全部文件,包括 隐藏文件

    -d   只列出文件夹

    -f    直接列出,不按文件名排序

    -F   在文件名前添加类型,* 表示可执行 / 表示目录 = 表示 Socket | 表示FIFO文件

    -h   将文件大小以 KB、GB 换算后显示

    -i    列出 index 

    -l    详细输出(不加 -l 时只输出文件名,加了会输出 权限、用户、角色、修改时间 等信息)

    -n   列出 UID 与 GID 而非用户、角色名称

    -r    反向排序

    -R   展开子目录下的文件列表

    -S   按文件大小进行排序

    -t    按时间排序

    --color=never    不加颜色区分

    --color=always  加上颜色区分

    --color=auto      加上预设的颜色区分

    --full-time          输出完整的时间格式

    --time={ atime , ctime }  输出 access 时间或权限变更时间 ctime 而非内容变更时间 

    basename 路径    返回路径最后的文件名

    dirname    路径     返回路径最后的文件夹名

    cat  \ more \ less 查阅文件

    head 显示头几行

    tail \  tac  显示最后几行

    nl  显示行号

    od  以二进制方式显示 ( od -t xCc XXX 可以输出 hex 样式的内容)

    如果想输出一个字符串的 Ascii ,可以输入命令: echo 字符串 | od -t dCc

    文件有三个时间:modification time 、status time、access time

    内容变更时,mtime(modification time)会随之变化

    权限与属性变更时,ctime (status time)会随之变化

    文件内容被读取时,atime(access time)会随之变化

    可以多个命令用 ; 连接后一次执行: date; ls -l XXX ; ls -l --time=atime XXX ; \

      ls -l --time=ctime XXX

    上面这个命令里,尾部的 \ 表示换行接着输入。这个命令是由四个命令组合到一起的。

    touch -a -c -d -m -t 修改文件时间,这个指令通常还会被用来建立一个空的文件

    umask 可以看到系统的预设权限( 0022 ,表示新的文件或目录会去掉角色可写权限、其他人可写权限),加 -S 会以符号显示

    通常,新建文件时,默认权限是 666,新建目录时,默认权限是 777

    所以新建文件的权限最终是 -rw-r--r-- ( -rw-rw-rw - -----w--w-)

    新建目录的权限最终是 drwxr-xr-x ( drwxrwxrwx - -----w--w-)

    在新建文件或目录前,可以先修改预设权限  umask 002  表示把预设权限改成 新的文件或目录 去掉 其他人可写权限

    除此之外,还有 chattr 和 lsattr  用于修改文件的隐藏权限

     

     此文章中的内容来自:《鸟哥的Linux私房菜-基础篇》第四版

  • 相关阅读:
    【概念】构造函数和析构函数
    【概念】使用Fixed创建固定大小的缓冲区
    Sqoop
    Flume组件
    Hive节点及原理
    Yarn
    Hive数据倾斜
    单例
    工厂设计模式
    JVM对象创建
  • 原文地址:https://www.cnblogs.com/z5337/p/16486083.html
Copyright © 2020-2023  润新知