资讯专栏INFORMATION COLUMN

[Note] Linux学习笔记1-4 文件相关

cartoon / 2560人阅读

摘要:它接受用户输入的命令,并把它们送到内核运行。内部命令是通过执行自己代码中对应部分来完成的。外部命令的代码则存放在一些二进制的可执行文件或者脚本中。外部命令的搜索路径保存在一个变量中。后三位则对应三种用户分类的权限。

Note 1 Linux 和 Shell 简介 Linux系统

是多进程、多用户和交互式的计算环境。
Linux系统的运行级别从0-6共7个:

0:停机,关闭系统

1:单用户模式,类似win下的安全模式

2:多用户模式,但是没有NFS支持

3:完整的多用户模式,是标准的运行级别

4:保留

5:X Windows系统

6:重新启动

Shell

是Linux系统的用户界面,提供了用户与内核进行交互的接口。它接受用户输入的命令,并把它们送到内核运行。
shell的命令可以分为内置命令和外部命令。内部命令是shell通过执行自己代码中对应部分来完成的。外部命令的代码则存放在一些二进制的可执行文件或者shell脚本中。
外部命令的搜索路径保存在一个shell变量:PATH 中。使用echo $PATH 可以打印查看。PATH保存在主目录的.profile或者.login中。
其他一些比较有用的环境变量如下:

HISTFILE:储存历史命令

HISTSIZE:历史命令列表的大小

HOME:当前用户的主目录

OLDPWD:前一个工作目录

PATH:bash寻找可执行文件的搜索路径

PS1:命令行的一级提示符

PS2:命令行的二级提示符

PWD:当前工作目录

SECONDS:当前shell开始后经过的时间,单位为秒

Note 2 Linux文件系统 文件分类

Linux中,文件是一个字节序列。
Linux文件可以分为:普通文件、目录文件、字符设备文件、块设备文件、符号链接文件、管道文件、socket文件,具体如下:

普通文件:文本文件等

目录文件:文件系统中一个目录所包含的目录项组成的文件

设备文件:Linux把对设备的I/O作为对文件的读取/写入操作

符号链接文件:提供了共享文件的一种方法

管道文件:用于在进程之间传递数据

socket文件:套接字文件

标准目录

Linux有一些标准的目录和文件

/sbin:用来存放系统管理员的系统管理程序

/home:存放用户的主目录,比如,建立一个名为xiaoming的用户,那么在/home目录下就有一个对应的/home/xiaoming路径,作为用户的主目录

/lib:存放系统动态链接库

/mnt:用来临时装载文件系统

/opt:存放附加软件包

/proc:存放进程和系统的信息

/root:root用户的主目录

/tmp:存放不同程序执行时产生的临时文件

/usr:是linux最大的目录之一,存放可以在不同主机间共享的只读数据

/lost+found:存放所有和其他目录没有关联的文件

/var:存放在系统运行过程中可能会不断变化的数据,比如,/var/log存放系统日志

Note 3 Linux文件安全 权限机制

Linux属于多用户操作系统,使用基于权限的文件保护机制
文件的所有者可以设置特定的访问权限来限制哪些用户可以对某文件进行哪些操作

文件的权限设置针对三个对象:所有者、组、其他人
用户可以属于一个组,系统中所有用户组的信息记录在/etc/group中
root用户可以访问所有文件

Linux中文件有三种访问权限:

r:read,允许读某个文件

w:write,允许写、修改和删除某个文件

x:execute,允许执行某个文件

对于目录文件,含义稍微有所不同:

r:允许用户列出目录内容,如ls

w:允许用户在目录下创建、删除文件

x:允许用户搜索这个目录,如果没有x权限,则不能用ls-l和cd

使用ls -l命令时,第一个字段的10位符号的含义:

第1位:表式文件类型,-为普通文件、d为目录文件、b为块设备文件、c为字符设备文件、l为链接文件、p为管道文件、s为socket文件

2-4位,5-7位,8-10位分别表示该文件对于所有者、组、其他人的权限,三位按顺序分别表示rwx三种权限

例如:drwxr-x--- 表示一个目录文件,所有者有rwx三种权限,用户组有r和x权限,而其他人没有任何权限

使用chmod可以修改文件的访问权限,具体的命令说明请参考man chmod

当创建一个文件时,文件的默认权限由umask决定
在终端输入umask,会输出一个4位的8进制数字,第一个数字表示SUID、SGID、Sticky,暂时不考虑它。后三位则对应三种用户分类的权限。
当创建一个文件时,新创建的文件的访问特权都将被设为1,除了在umask参数中为1的对应位(以二进制来看)

关于SUID、SGID、Sticky

通过有效用户标识位,我们可以允许普通用户以文件所有者或者用户组的权限运行某个可执行文件
应用场景:文件/etc/passwd,只有超级用户才有权限访问该文件,但是我们又希望其他用户能够执行passwd命令来修改其自己的密码,而又不改变其他用户的信息。

每个linux文件都有一个附加的保护位SUID,如果堆一个可执行文件设置乐该位,那么该可执行文件可以以这个文件的拥有者的权限运行

可以通过chmod 4xxxx filelist 或者chmod u+s filelist两种方式设置SUID
当文件的SUID被设为1时,如果所有者对该文件有执行权限,那么执行位被设为‘s’,否则被设为‘S’
比如:
-rwx--x--- 设置SUID之后为 -rws--x---
-rw---x--- 设置SUID之后为 -rwS--x---

SGID和SUID很相似,不过被设为s/S的位是组的可执行位。
命令为chmod 2xxx filelist 或者 chmod g+s filelist

Sticky位
考虑这样一种情况,如果用户拥有某个目录的写权限,用户可能删除这个目录下的文件,而我们并不希望这些文件被删除
通过设置sticky位,可以保证只有文件拥有者可以删除或重命名某个目录下的文件,即使其他用户有写权限也不行

命令为 chmod 1xxx filelist 或者 chmod +t filelist
如果sticky被设为1,那么如果其他用户对目录有可执行权限,则权限为被设为‘t’,否则为‘T’
比如:-rwxrw---t -rwxrw---T

Note 4 Linux文件链接 硬链接

是一个指向文件节点的指针,因此硬链接和原文件的inode编号是相同的
当创建一个硬链接后,该文件节点的链接计数+1,此时,删除原文件或硬链接,文件并不会被删除,只是链接计数-1,只有在链接计数为0时,该节点才会被删除。

特点:

不可跨越文件系统

超级用户才能创建目录硬链接

占用空间极少

软链接(符号链接)

创建软链接,是创建一个新的link类型的文件,将这个新文件登记在用户共享目录项里,这个新文件包含被连接文件的路径
当用户通过软链接访问文件时,操作系统把link文件的文件内容作为路径名去访问真正的文件

特点:

可以跨越文件系统

如果被链接的文件被移动,则符号链接失效

占用空间多于硬链接,需要存储inode

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/9360.html

相关文章

  • [Note] Linux学习笔记7 shell编程基础

    摘要:编程基础基本概念脚本,一个程序,由可执行的命令组成,以普通文件形式保存运行一个脚本的方法变量,允许使用一些读写存储区,为用户和程序设计人员提供一个暂存数据的区域分为环境变量和用户定义变量环境变量用来定制运行环境,保证命令正确执行,所有环境变 Note 7 Linux Shell编程基础 基本概念 shell脚本,一个shell程序,由可执行的shell命令组成,以普通linux文件形式...

    superw 评论0 收藏0
  • [Note] Linux学习笔记5-6 进程、重定向和管道

    摘要:进程什么是进程当你执行一个外部命令内部命令是进程的一部分,不需要创建进程时,系统会为之创建一个进程,命令完成之后会撤销它进程的创建和终止是系统处理外部命令所采用的唯一机制通过系统调用创建一个新的进程,该操作建立原进程内存的完全拷贝,然后系统 Note 5 Linux 进程 什么是进程? An executing program = A process当你执行一个外部命令(内部命令是sh...

    lowett 评论0 收藏0
  • 用 Vuex 构建一个笔记应用

    摘要:如果不熟悉,在这个教程里面,我们会通过构建一个笔记应用来学习怎么用。这个是我们要构建的笔记应用的截图你可以从下载源码,这里是的地址。每当用户点击笔记列表中的某一条时,组件会调用来分发这个会把当前选中的笔记设为。 原文:Learn Vuex by Building a Notes App,有删改。 本文假设读者熟悉 Vuex 文档 的内容。如果不熟悉,you definitely sho...

    gggggggbong 评论0 收藏0
  • 用 SwiftyDB 管理 SQLite 数据库

    摘要:我们有太多选择了创建一个单独的文件使用或者创建数据库。中类的属性能够自动完成上述工作,可以直接用类作为数据模型。简单强悍的可以让处理数据成为小菜一碟的事情。上述所有值的改变都会存储到数据库中。反之,如果数据库已经存在了,就会直接打开数据库。 作者:AppCoda,原文链接,原文日期:2016-03-16译者:Crystal Sun;校对:numbbbbb;定稿:shanks 选择哪种数...

    bluesky 评论0 收藏0
  • 使用 Vuex + Vue.js 构建单页应用

    摘要:鉴于该篇文章阅读量大,回复的同学也挺多的,特地抽空写了一篇下的使用方法,传送门使用构建单页应用新篇华丽的分割线原文地址前言在最近学习的时候,看到国外一篇讲述了如何使用和来构建一个简单笔记的单页应用的文章。 鉴于该篇文章阅读量大,回复的同学也挺多的,特地抽空写了一篇 vue2.0 下的 vuex 使用方法,传送门:使用 Vuex + Vue.js 构建单页应用【新篇】 ---------...

    tomorrowwu 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<