一、文件所有者
1.文件所有者
文件所有者一般是指创建这个文件或者目录的用户
2.用户组
用户组有用的地方在于当你拥有一个团队一起开发一个软件时,可以在主机上创建一个用户组,将本组成员加入该组,如果此时又有另一个团队和你分享一台主机的资源,这时你可以选择是否开放自己的文件给另一个团队,通过改变文件的权限;当然每个用户都可以属于多个用户组,每个用户组也可以有多个用户
举个例子,用户小明可以属于小明家家庭用户组也可以属于三年二班这个班级用户组
3.其他人
一个文件创建之后,如果你不是拥有者,你也不属于文件所属的用户组,那么你就是其他人,比如属于root用户的一个文件,一般属于root用户组,而你只是一个普通用户,此时你相对于这个文件就是其他人
因此我们就知道在linux上有三种身份:user,group,others
二、文件权限
1.文件属性
打开任意一个文件夹,并在此进入终端,输入ls -al可以列出该目录下所有的文件及属性
第一列表示文件的类型和权限
第一个字符表示这个文件的类型:
d表示目录;
-表示是文件;分为普通文件、ascii文件、二进制文件、数据格式文件;
l表示链接文件;链接文件类似于windows中的快捷方式
b表示设备文件里的可供存储的借口设备;
c表示设备文件里的串行端口设备,例如键盘、鼠标等;
s表示sockets文件,用于网络上的数据连接
p文件又叫fifo、pipe,主要为了解决多个程序同时访问一个文件所造成的错误问题;
接下来的字符3个一组,分别对应u g o的操作权限,排列顺序为rwx,如果某个用户或组不具备某个操作权限,该位置显示为-
第二列表示有多少个文件名链接到此节点
在系统中我们存储文件的权限和属性记录使用i-node文件,但是可能会有文件的属性和权限相同,这时系统自动将该文件名挂载到此i-node上,第二列就表示有多少个文件名挂在i-node上
第三列表示文件的所有者/第四列表示文件的用户组
第五列为文件的大小,默认单位为B
第六列为文件最近的修改日期
第七列为文件名
有些文件名前会有一个.号,表示这个文件是隐藏文件,隐藏文件一般是不对用户开放的,用于存储软件的一些配置信息,但是删除它们并不会使软件崩溃,只是会使软件回到“盘古开天地”时的状态,所有的用户配置都会丢失
三、改变文件属性和权限
1.chgrp:改变文件所属的用户组
chgrp -R filename //-R表示递归调用,文件夹下所有的文件都会改变属性
例如我在/tmp文件夹下创建一个text.txt
可以看到此时的text.txt属于wangyize这个用户组,此时使用chgrp命令更改用户组:
2.chown:改变文件所有者
chown命令可以顺带修改用户组,这时用户组与用户名之间用:隔开,注意没有空格
3.chmod:改变权限
在linux中文件权限r用4表示,w用2表示,x用1表示,在更改权限时,将对应的数字相加作为组合修改,比如,改为-rwxr-xr-x,即chmod 755 文件名
可以看到现在的权限已经被更改,也可以通过字母修改,这是格式为chmod [u/g/o][+/-/=][r/w/x] 文件
同上chmod u=rwx,go=rx text.txt
注意参数中间用逗号隔开而不是空格
4.权限的意义
对于文件来说,rwx分别对应可读,可写,可运行,前两个容易理解,但第三个要着重注意的是,在windows中我们使用后缀名来区分不同的文件,且可执行文件的后缀是固定的,比如.exe,.bat等,但在linux中,后缀名并不是必须的,一个文件能否被执行只与它是否有可执行权限有关,只要当前用户拥有x权限,就可以在终端中运行它,但运行结果是否满足预期与文件本身有关,例如当前text.txt有x权限,在终端中运行
显示了错误信息,因此在linux中能否运行与正确运行并不相同,而且后缀名不影响文件的属性;后缀存在的意义只是为了满足认知需求,满足语义上的完整性而加入的
文件的w的属性也比较特殊,当你拥有了w属性,你可以对文件的内容随意编辑,但不能删除该文件
对于目录来说,rwx三个权限就比较特殊
r权限只是提供给用户能够查阅文件夹下有什么文件名的权限,而无法进入该文件夹,要想进入该文件夹,必须通过x属性,该属性则允许用户将该文件夹切换为工作目录;w属性则使用户拥有对文件夹下文件操作的能力,可以创建删除文件、重命名等。
四、linux文目录配置
linux其实只是一个内核,在此基础上很多的团队开发出了不同的版本,比如centos、ubuntu等,还有中国的deeepin,但是我们会发现他们的文件目录长的都差不多,这是因为linux有一个统一的目录配置标准叫做FHS,它存在的目的就是让用户可以了解到自己安装的软件放在了哪个目录下。
FHS把文件分成了四种交互形态,包括不变的、可变的和可分享的、不可分享的,两两可以组合,这样就有四种组合
不变的就是指数据一旦写入一般不会变动的,比如函数库、内核等;
可变的是指经常变动的文件,比如登陆文件、用户数据等;
可分享的是指用户数据、邮件、新闻等;
不可分享的是指只能在本机器上运行的文件,比如socket、硬件驱动等;
/根目录下存放的文件与开机和系统有关;系统还原、修复也会用到/目录下的文件。FHS建议该目录应该越小越好,且应用程序安装最好不要放在/目录下,保持根目录清洁,如此一说,根目录就相当于windows的C盘;
/bin:放置单用户模式下还能够操作的命令,(binary)二进制文件
/boot:内核文件以及与开机有关的一些文件
/dev:与计算机上的设备有关的文件
/etc:系统与软件的配置文件,FHS建议不要放置可执行文件在这个目录下
/home:用户的主文件夹,比如这个文件夹下放有/wangyize表示我的主文件夹
/lib:放置一些函数库与静态连接文件
/media:放置一些可删除设备的文件
/mnt:用于放置一些需要暂时挂在的文件
/opt:给第三方软件提供的放置位置
/root:系统管理员(超级用户)的主文件夹
/sbin:给超级用户提供的用于修改计算机配置的二进制文件,包括开机、系统修复与还原等
/srv:一些网络服务启动后,所需要用到的数据从这里获取,比如WWW的王爷数据就可以放置在/srv/www内
/tmp:系统提供给所有用户暂时存放文件的地方,但不保存,有些系统会设置每次重启删除/tmp下的文件
/lost+found:如果系统出错,丢失一些文件数据,可以到这个文件夹下去找
/proc:一个虚拟的文件,这里的数据其实装载在内存里,所以不占用硬盘空间,安装系统时不必专门为/proc分区
/sys:虚拟文件夹,可以在这个文件夹下去查看内核的运行情况
根目录是最重要的目录,开机时只有根目录会被挂载,其他的分区等到系统启动之后逐一挂载,因此与开机有关的一些文件夹不能与根目录分开挂载,比如/etc /bin /dev /lib /sbin
/usr(unix software resource)不是usre,而是一些软件安装和执行的文件;FHS建议所有的软件开发者将他们的软件数据合理的放置在/usr文件夹下,而不要独自去创建独立目录,这就类似于windows中的C:program files和program files(x86)文件夹
/usr/X11R6:放置X Window的重要数据
/usr/bin:用户可以操作的命令都放置在这里,比如现在新装了一个软件叫blender,将它的可执行文件合理的放置在/usr/bin下就可以在命令行中直接启动blender;而它与/bin的区别在于/bin下的可执行文件用于开机启动
/usr/include:C++的头文件
/usr/lib:函数库、目标文件以及一些一般用户用不到的脚本
/usr/local:一般的软件可以安装到/opt文件夹下,但有时候我们如果已经有了一个旧版,但又想体验新版,可以把新版安装在/usr/local下
/usr/sbin:系统命令,非系统运行必须
/usr/share:可以共享的文件,不受机型的限制,一般都是文本文件
/usr/src:软件源码
/var,与系统运行时的一些变量有关;
五、目录树
目录树类似于数据结构中的树结构,根结点为/根目录,所有的文件都依次挂在/目录下
每个文件的文件名都是不同的(绝对路径)
绝对路径:从/目录开始写的路径叫做绝对路径:/usr/share/applications;
相对路径:不是从/开始的路径叫做相对路径,./表示本文件夹下,../表示上以及文件夹下;
当你打开一个终端,在进入到一个二进制执行文件的目录下,输入文件名准备运行,你会发现没有反映,这是因为只有/bin或/usr/bin下的可执行文件才是“正规”的可执行文件,你自己的“冒牌”文件必须加./表示本文件夹下的某程序才能正确运行
查看linux标准:
$uname -r //内核版本
$lsb_release -a //查看行业规范
很不幸,我的计算机没有可用的LSB模块!