• Linux学习笔记


    ====程序====

    Linux中没有注册表的概念,理论上,只要拷贝所有相关文件,就可以执行程序
     
    按照传统,一个软件通常分别拷贝到bin、etc、lib、share等文件夹中
    • bin:存放可执行文件,有时候直接放在 /bin或者/usr/bin下。
    • etc:存放配置文件,大部分程序的配置文件都放在 /etc(根目录下面的),方便集中修改
    • lib:库文件,集中在一起方便共享给不同的软件,比起不同的软件单独存放库文件,可以节省空间
    • share:程序所需要的其他资源,例如图标、文本,这部分是专用的,不需要共享,混放在一起比较混乱,所以一般都单独存放在一个文件夹里,这个文件夹一般也位于/share或者/usr/share。
     
    ====文件====
     
    cd ~  :进入用户目录
    ls -a :查看当前目录下的全部文件的列表,包括隐藏文件
    ls -l :查看当前目录下所有文件的详细信息列表
     
     
    共显示了七列信息,从左至右依次为:权限、文件数、归属用户、归属群组、文件大小、创建日期、文件名称
     
    ====权限====
    上图中的第一列表示权限,一共有10个位置,可以分成4组
    比如drwxr-xr-x,分成:   d rwx r-x r-x
    • 第一组
      • d —— 文件夹
      • - ——普通文件
      • l —— 链接
      • b —— 块设备文件
      • c —— 字符设备文件
    • 剩下的三组分别表示归属用户、归属群组、其他用户或群组对该文件的权限
      • r 表示可读
      • w 表示可写,只是写文件的内容,所以不包括权限
      • x 表示可执行(对文件),以及可否进入(对目录)
      • 以上三种权限的顺序不能颠倒
      • 如果某一位为“-",则表示不具有相应的权限
          ==二进制表示==
    使用二进制数字来描述一组权限,虽然非常直观,但是3组权限需要用9位数来表示,使用不够方便。因此我们将三组权限使用3位8进制数字来表示。它们的对应关系为:
        r 100 4
        w 010 2
        x 001 1
    将这三位8进制数字相加的结果,就可以表示该组权限的具体内容,例如:
        7=4+2+1=rwx
        5=4+1=rx
        755=4+2+1 4+1 4+1=rwx r-x r-x
     
       ==a/u/g/o表示==
    还可以使用 a 、 u 、 g 、 o 表示归属关系,使用 = 、 + 、 - 表示权限变化,使用 r 、 w 、 x 表示权限内容
        a 所有用户; u 归属用户; g 归属群组; o 其它用户
        = 具有权限(等于赋值); + 增加权限; - 去除权限
        r 可读权限 w 可写权限 x 可执行权限
    例如:
        a+x 给所有用户增加可执行权限
        go-wx 将归属群组和其它用户的可写、可执行权限去掉
        u=rwx 归属用户具有可读、可写、可执行权限
     
         ==更改权限== 
    chmod <权限表达式> <文件|目录>:更改文件的权限。权限的表达式可以使用三位8进制数字表示,或者使用 augo +-= rxw-s 来表示
        -R 递归
        -v 显示过程
        -c 类似“-v”,仅显示更改部分
        --reference=<参考文件或目录> 以指定文件为参考更改权限
    例如:
          chmod -R a+x path
          chmod -Rv 755 path
     
    chown <归属用户>[:归属群组] <文件|目录>:更改文件的归属用户。可以使用用户名或者UID
        -R 递归
        -v 显示过程
        -c 类似 -v ,仅显示更改部分
        --reference=<参考文件或目录> 以指定文件为参考更改权限
      示例:
        chown user:admin path
        chown -R user:admin path
        chown user path
     
    chgrp <归属群组> <文件|目录>:更改文件的归属群组。可以使用群组名或者GID
     
          ==SUID、SGID、Sticky bit:==
    • 归属用户的可执行权限位使用 s ,表示SUID
    • 归属群组的可执行权限位使用 s,表示SGID
    • 任何用户或群组都拥有 其它用户 的权限,所以不需要以 其它用户 身份执行文件,其它用户的可执行
      权限位便不会出现 s 。该权限位可能出现的属性为 t,也就是粘着位Sticky bit。
    当用户执行了权限设置有SUID的文件,执行者就暂时获得了该文件的所有者的权限能够以该文件所有者的权限做其他的命令,比如暂时以root的权限做系统方面的操作。
     
    SUID、SGID、Sticky bit也可以像权限一样,使用一个八进制数表示,如下:
        4 SUID
        2 SGID
        1 Sticky bit
      通过在“chmod”命令中使用4个八进制数的表达式,如 4755 ,用第一位表示SUID、SGID、或Sticky bit,便能够为文件设置这些特殊权限。示例:
      chmod -R 4755 path
     
    ====执行命令的身份====
    默认情况下,命令提示符末尾是 $ ,表示当前以普通用户身份执行命令
     
    可以使用su(switch user)来切换其他用户
    例如用 su root 切换到root(管理员)身份,会提示你输入密码,成功后就会发现$变成了#,将以管理员的身份执行命令。
    ubuntu系统会随机设置系统的root密码,这样会更安全一些,这时可以执行sudo命令,输入当前用户的密码后,暂时以root用户的身份执行命令,前提是sudoer列表中包含当前用户的ID,在安装ubuntu系统时创建的用户会被默认地加入到sudoer列表中
    格式:sudo 命令名 参数 对象
     
    使用man 命令名可以在线查看Linux命令的文档。
     
     
    ====权限文件====
    /etc/passwd:记录了root的相关信息
    /etc/shadow:记录了个人的账号信息和密码等,默认的shell也可以在这里设置,总之就是包括了个人用户的信息
    /etc/group:Linux所有的群组名称都记录在这里
     
     
    ====使用权限的场合====
    1. 拷贝文档、目录的时候:拷贝过去的文档、目录的权限设置没有改变,如果是拷贝给其他用户,最好就要改变一下权限,比如改变文档、目录所有者
    2. 设置只有一个群组内的成员才可以对文档、目录进行操作:这时就只要设置所有者、群组具有rwx的权限,而其他用户的权限为---。
  • 相关阅读:
    慕课网-安卓工程师初养成-2-6 Java中的数据类型
    慕课网-安卓工程师初养成-2-5 如何命名Java变量
    慕课网-安卓工程师初养成-2-4 变量是什么
    慕课网-安卓工程师初养成-2-3 练习题
    慕课网-安卓工程师初养成-2-2 认识Java标识符
    慕课网-安卓工程师初养成-2-1 Java中的关键字
    慕课网-安卓工程师初养成-1-10 练习题
    Java编程——万年历
    排队购票
    猴子爬山
  • 原文地址:https://www.cnblogs.com/amghost/p/3572155.html
Copyright © 2020-2023  润新知