获取系统文件数据,文本文件,纯二进制文件,系统文件的特点 ,获取系统时间(系统信息)【linux】(y)

获取系统文件数据

什么是系统文件
就是Linux系统自己会用到的文件,分为两类。

文本文件

里面的内容都是文字编码,vi打开后,我们能够识别的数据。
存放的都是Linux系统要用到各种配置信息。Linux系统在启动和运行时,会用到里面的数据。

我们自己写的程序,有的时候也需要用到里数据,但是我们基本只是读数据,大多数情况只有Linux系统才会去改里面的数据,后面几篇博客我们会介绍我们自己的程序,如何来调用API来获取里面的数据。

比如后面要讲的/etc/passwd文件里面放的是用户的账户信息。
用户登录系统时,输入用户名和密码后,Linux会使用你输入的用户名和密码,然后到这个文件中匹配注册的用户名和密码,只有匹配成功后才能登录,否者你是登录不了的。

文本形式的系统文件,大多放在了/etc这个目录下,后面几篇要介绍的系统文件,都是/etc/下的文件。

我们打开etc目录进行查看:
获取系统文件数据,文本文件,纯二进制文件,系统文件的特点 ,获取系统时间(系统信息)【linux】(y)

纯二进制文件

比如各种编译好的库、以及可执行文件(程序),里面放是能够被cpu执行的机器指令。库文件都放在了各种名叫lib的目录下,比如/lib,lib就是库的意思。其实有好多lib目录,比如/lib、/usr/lib等,有关它们的区别,我们这里不做过多说明。各种可执行文件,比如ls、mkdir等这些命令(可执行程序),都放在了各种名叫bin的目录下,比如/bin,bin就是binary二进制的意思。bin目录也有很多,比如/bin,/usr/bin等。

我们进入bin目录查看:
获取系统文件数据,文本文件,纯二进制文件,系统文件的特点 ,获取系统时间(系统信息)【linux】(y)

我们截取到的只是一部分。

二进制文件,我们vi后是看不懂的因为里面放的不是文字编码,所以文本编辑器无法正确翻译为文字图形,所以我们无法看懂。

系统文件的特点

系统文件的所属用户都是root,所属组也基本都是root。
我们进行查看:

获取系统文件数据,文本文件,纯二进制文件,系统文件的特点 ,获取系统时间(系统信息)【linux】(y)

普通用户操作系统文件时,只能以其它用户的身份去操作,而其它用户的权限往往只有r,所以普通用户一般情况下不能写系统文件,只能读里面的数据,只要你不能写,就不会对Linux系统构成威胁。

获取系统文件数据,文本文件,纯二进制文件,系统文件的特点 ,获取系统时间(系统信息)【linux】(y)

有些非常重要的系统文件,甚至都不允许普通用户读,
例如/etc/shadow文件。

获取系统文件数据,文本文件,纯二进制文件,系统文件的特点 ,获取系统时间(系统信息)【linux】(y)

我这台机器的/etc/shadow权限是0000

对于普通用户来说,一般情况下,只有读系统文件的需要,如果你要修改里面的内容的话,必须要使用sudo,临时获取root身份,才能拥有root(管理员用户)才有写权限,只有这样才能修改系统文件。

用户自己的程序,需要获取系统文件数据时,而不是使用命令获取,可以自己调用open、read等文件io函数操作这些文件,同样的一般只能读,不能写,如果你要写,必须以root身份运行程序,然后你才能修改文件,不过一般情况下我们只有读取数据的需求。

为了方便操作,系统提供了专门的函数,调用这些函数可以很方便的操作文件中的数据,比我们自己调用open、read更方便,这些函数其实也是靠封装open、read等文件io函数来实现的。

其实Linux的系统文件有很多,比如
(a)/etc/passwd:存放用户账户信息的文件
(b)/ext/shadow:存放密码,用户密码其实单独存放的
(c)/etc/group:组信息
(d)/etc/setvices:各种网络服务器的信息
(e)/etc/protocols:各种协议的协议号
(f)/etc/networks:网络配置信息

后面几篇博客重点我们只说明a b c这三个系统文件,其它的后面涉及到了,再具体说明。

为什么介绍/etc/passwd、/ext/shadow、/etc/group这三个系统文件?

每次登陆系统时,都需要输入用户名和密码,因此我们有必要了解下Linux是如何管理账户信息的。

实际上其它的软件,比如人事管理系统、银行管理系统、其它OS,在管理用户的账户、密码时,都采用了类似的管理机制,仅站在知识面扩展的角度来说,很有必要了解下。

还有就是需要完善我们之前博客所实现的my_ls程序
my_ls在显示文件属性时,文件的属主还是ID形式。

我们需要将ID换为名字,这就必须涉及到/etc/passed、/ext/shadow、/etc/group这三个文件。

获取系统时间

获取系统时间就是获取:年 月 日 时 分 秒。

获取时间的API
为了方便应用程序获取时间,我们可以调用相应的API。
比如我的运行于Linux系统的C程序,需要用到系统时间时,就可以调用这些API来获取时间,

这些API有:
time :Linux的系统API
gmtime、localtime、mktime、ctime、asctime、strftime :c库API
库API需要系统API time的支持,后面会介绍到。

其实所有语言的库,都有获取时间的库API,不过这些库API,同样都是基于系统API实现的。

获取系统文件数据,文本文件,纯二进制文件,系统文件的特点 ,获取系统时间(系统信息)【linux】(y)