Linux的文件权限与目录配置

用户与用户组

Linux是个多用户、多任务的系统,可能常常会有多人同时使用这台主机来进行工作,为了隐私及安全等考虑,有了“文件所有者”和“权限”的概念。在linux里,任何一个文件都具有针对 User(即文件所有者),Group(即该Group里的所有用户)及Others 3种身份的权限。
区别于一般用户,“root”不受Group的限制,可以访问所有文件。

/etc/passwd里记录了系统上的账号与一般身份用户和“root”的相关信息。
/etc/shadow 里记录了个人的密码。
/etc/group 里记录了所有的组名。

文件权限

ls (’list’的意思)命令查看当前目录下文件的文件属性。(补充: man ls 或 info ls 可以查看基础用法)。每一行的大概格式如下:

文件属性的示意图
图片复制自《鸟哥的Linux私房菜》

比较重要的部分是第一列,其可以体现这个文件的类型与权限:
(第一个若为’d’则表示目录,若为’-‘则表示文件……)

文件的类型与权限之内容
图片复制自《鸟哥的Linux私房菜》

另外,第七列文件名之前如果多一个“.”表示为隐藏文件。 (感受一下ls -al 和ls -l)

权限的重要性:比如本来只有root能执行的开关机、新增或删除用户等命令若被改成任何用户都可以执行……

如何改变文件属性

chgrp: 改变所属用户组 //change group

chown: 改变文件所有者 //change owner
也可以顺便修改用户组 chown [-R] 新的账号名称(:新的组名) 文件或目录
补充:(参数-R 进行递归的持续更改,即连同子目录下所有文件都更改。 )

chmod: 改变文件权限 //change mode
1.数字类型改变文件权限
chmod [-R] 数字 文件名称
规则 r:4, w:2, x:1
例如: -rwxrwx—为 770
2.符号类型改变文件权限
chmod [-R] u/g/o/a +/-/= r/w/x 文件名称 (注意:中间那部分之间没有空格;用逗号连接不止一个的修改。
适用于不知道文件原本的权限,比如在原来权限基础上去掉或新增某个权限

目录与文件权限的具体意义

对于文件:r、w都很好理解,值得注意的是x。
在Windows一个文件能否被执行是通过“扩展名”判断,在Linux是通过是否有x权限判断。但是,可以被执行和可以执行成功不一样,比如一个纯文本文件即使有x也没啥可执行的。

对于目录:r表示可以查看文件名数据(其他信息则看不到,比如文件所有者)。
w代表可以改变目录结构的权限,比如新建文件、删除文件(不论该文件的权限具体是什么)、文件重命名、移动位置。注意:文件的w只能修改文件内容,不能删除,只有包含该文件的目录才有权力删除文件。
x表示用户能否进入该目录使其成为工作目录(cd就是切换工作目录)。开放目录给别人浏览时至少给r及x(不要随便给w)。

文件种类及其他

“任何设备在Linux下都是文件。”

文件种类

一般文件[-]
纯文本文件:例如几乎所有可以用来作为设置的文件。//可以用cat命令查看文件内容
二进制文件:例如Linux当中的可执行文件(scripts、文字批处理文件不算)。如命令cat就是个binary file。
数据格式文件:某些特定格式的文件,可用last命令读出来。

目录文件[d]

连接文件[l]
类似于Windows的快捷方式

……

其他

我们希望Linux的文件名能体现出该文件的用途,所以一般文件名都很长。

Linux目录配置

FHS标准: 仅定义了以下三层

  • / (root,根目录):与开机系统有关
  • /usr:与软件安装/执行有关 //UNIX Software Resource
  • /var:与系统运作有关

参考资料

  • 《鸟哥的Linux私房菜》

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注