PS:今天突然对可执行文件有了全新的理解
下面举的例子可能不那么对,但是就是这个意思。
word这个应用程序,就是通过 winword.exe 这个主程序,读取某个.doc文件然后对它进行一系列写操作
一、用户和用户组
PS:突然放这块内容有点怪,但是是为了解释后面文件权限的内容
1. 用户 user
Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,每个用户账号有一个惟一的用户名和各自的口令,然后以这个账号的身份进入系统。
用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问,另一方面也可以帮助用户组织文件,并为用户提供安全性保护。
2. 用户组 group
具有相同特征的用户(user)的集合体。
比如,有时,要让多个用户具有相同的权限,比如查看、修改某一文件或执行某个命令,这时可以把这些用户都定义到同一用户组,通过修改文件或目录的权限,这样用户组下的用户对该文件或目录都具有相同的权限。
PS: 用户和用户组的对应关系是:一对一、多对一、一对多或多对多
二、文件基本属性
Linux系统是一种典型的多用户系统,不同的用户拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。
Linux系统按文件所有者、文件所有者同组用户和其他用户来规定了不同的文件访问权限。
PS:其实刚开始看到这部分有点疑惑,觉得文件属性不应该是看后缀来判断文件的类型
三、Linux下的文件后缀
- Linux不根据后缀判断文件类型,而是根据文件的内容来判断。所以扩展名的作用是帮助识别文件,对于Linux系统本身来说没有什么意义。
- 但我们自己创建一些文件,最好还是加后缀名,这样做的目的是仅仅是为了我们的在应用时方便。
- Linux桌面环境和Windows一样智能化,系统会自动判断用哪个应用程序打开g=该Linux文件。
四、为什么Linux和Windows的可执行文件不能通用
https://www.zhihu.com/question/22672994/answer/27076210
1. 格式不同 —— 不同操作系统准备工作不同
- Windows 里大部分可执行文件的格式为PE
- Linux 里大部分可执行文件的格式为ELF
可执行文件要被执行时,操作系统需要为其分配资源,比如,内存空间(物理的和虚拟的)、进程、线程资源等等。所以可执行文件在执行之前需要告诉操作系统,要为可执行文件准备哪些东西它才能运行。
但是不同的操作系统,准备工作是不同的,所以可执行文件的格式不完全相同,导致了不同的可执行文件无法跨平台直接使用。
2. 操作系统API不同
一个可执行文件所执行的绝大多数操作(比如:文件操作、输入输出、内存申请释放、任务调度等等)都需要与操作系统交互才能完成,而不同的操作系统使用这些操作的方法完全不同。