1.使用者与群组
1.群组概念:最有用的功能之一,就是当你在团队开发资源的时候
2.使用者与群组的关系就像是家庭的关系
* 使用者的意义:每个人都有自己的房间,其他人也可以进去,但是有些私人的小秘密是不能被人知道的,只能自己知道
* 群组的概念:家庭中共同拥有客厅,所以只要是在公共地方上的就都可以使用
3.其他人的概念:就像是来访者,如果没开门,那么永远无法访问此资源
4.三种身份:user,group,others
5.每个账号都可以有多个群组的支持
6.有个特殊的人物就是可以去任何地方,"万能的天神"--->root
7.linux用户身份与群组记录的文件:
* 所有系统上的账号与一般身份都是记录在/etc/passwd文件中
* 至于个人密码则记录在/etc/shadow这个文件下
* linux所有的组名都记录在/etc/group内
2.linux文件权限概念
2.1 linux文件属性
1.ls -al查看文件:如下图一所示
* 权限 连结 拥有者 群组 文件容量 修改日期 档名
2.第一栏代表这个文件的类型与权限
* 第一个字符代表这个文件是[目录,文件或链接文件等]
- 当为[d]则是目录,例如上表档名为[.config]的那一行
- 当为[-]则是文件,例如上表档名为[.bashrc]的那一行
- 当为[l]则表示为连结档(link file)
- 当为[b]则表示为装置文件里面的可供储存的接口设备(可随时读取装置)
- 当为[c]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)
* 接下来的字符中,以三个为一组,且均为[rwx]的三个参数的组合 r:可读 w:可写 x:可执行
- 第一组为[文件拥有者可具备的权限],以anaconda-ks.cfg为例,该文件的拥有者可以读写但不可执行
- 第二组为[加入此群组之账号的权限]
- 第三组为[非本人且没有加入本群组之其他账号的权限]
- 注意:如果没有权限,就会出现[-]而已
3.第二栏表示有多少的档名连接到此节点(i-node)
* 这个属性记录的,就是有多少不同的档名连结到相同的一个i-node号码去。
4.第三栏表示这个文件(或目录)的[拥有者账号]
5.第四栏表示这个文件的所属群组
6.第五栏为这个文件的容量大小,默认单位为bytes
7.第六栏为这个文件的建档日期或者是最近的修改日期
* 这一栏的内容分别是日期(月/日)以及时间
* 如果这个文件被修改的时间距离现在太久了,那么时间部分仅显示年份而已
8.第七栏为这个文件的档名
* 如果档名之前多了一个[.],则表示这个文件为隐藏档
2.2 linux文件权限的重要性
1.群组的概念,其实最大的用途是在[数据安全性]上面的
2.系统保护的功能
* root基本上是不受系统的权限所限制的,所以无论文件权限是什么,预设root都可以存取
3.团队开发软件或者数据共享的功能
4.未将权限设定妥当的危害
* 可能是进行乱操作,如root才能做的开关机,ADSL的拔接程序,新增或删除用户指令等等
5.在修改你的linux文件与目录的属性之前,一定要先搞清楚,什么数据是可变的,什么数据是不可变的
2.3 改变文件属性与权限
1.chgrp:改变文件所属群组
2.chown:改变文件拥有者
3.chmod:改变文件的权限,SUID,SGID,SBIT等等的特性
4.权限说明
* r:可读
- 对应的数字是4
- 可读取此文件的实际内容,如读取文本文件的文字内容等
* w:可写
- 对应的数字是2
- 可以编辑、新增或者修改文件的内容(但不含删除该文件)
* x:可执行
- 对应的数字是1
- 该文件具有可以被系统执行的权限
* -:无权限
- -r w x r w x - - -
- 第一个-代表的是档案类型
- 前三个rwx代表了档案拥有者的权限
- 中间的rwx代表了档案所属群组的权限
- 最后的---代表了其他人的权限
5.改变所属群组:chgrp
* chgrp [-R] 文件名
- -R:进行递归的持续变更
* 例子:
- chgrp users initial-setup-ks.cfg
6.改变文件拥有者:chown
* 如果要连目录下的所有次目录或文件同时更改文件拥有者的话,直接加上-R的选项即可
* chown [-R] 账号名称 文件或目录
- -R:进行递归的持续变更
* chown [-R] 账号名称:群组 文件或目录
- -R:进行递归的持续变更
7.改变权限:chmod之数字类型改变文件权限
* chmod [-R] xyz 文件或目录
- xyz:就是权限属性数组相加
- -R:进行递归的持续变更,连同此目录下的所有文件都会变更
* chmod 777 文件
8.改变权限:chmod之符号类型改变文件权限
* 身份
- u:user身份
- g:group身份
- o:others身份
- a:代表所有的身份
* 权限
- +:加入
- -:除去
- =:设定
* 案例
- 文件权限为-rwxr-xr-x时
& u:可读可写可执行
- go:可读可执行
& chmod u=rwx,go=rx 文件名
- 增加某个文件每个人均可写入的权限
& chmod a+w 文件名
- 去掉所有人的可执行权限
& chmod a-x 文件名
2.4 目录与文件之权限意义
1.权限对文件的重要性
* r:可读
- 对应的数字是4
- 可读取此文件的实际内容,如读取文本文件的文字内容等
* w:可写
- 对应的数字是2
- 可以编辑、新增或者修改文件的内容(但不含删除该文件)
* x:可执行
- 对应的数字是1
- 该文件具有可以被系统执行的权限
* linux,文件是否能被执行,则是由是否具有[X]这个权限来决定的,跟文档名没有绝对的关系
2.权限对目录的重要性
* 目录主要的内容在记录文件名列表,文件名与目录有强烈的关联
* r
- 表示具有读取目录结构列表的权限
- 当你读取(r)一个目录的权限时,表示你可以查询该目录下的文件名数据
- 可以利用ls这个指令将该目录的内容列表显示出来
* w
- 表示具有操作该目录结构列表的权限
- 建立新的文件与目录
- 删除已经存在的文件或目录进行更名
- 搬移改目录内的文件,目录位置
* x
- 代表的用户能否进入该目录成为工作目录的用途
* 总结如下表格:
2.5 linux文件种类与扩展名
1.文件种类:
* 正规文件
- 纯文本档(ASCII):这是linux系统中最多的一种文件类型,基本上我们可以用来作为设定的文件都属于这一种文件类型
- 二进制文件(binary):linux当中可执行文件(scripts,文字型批处理不算)就是这种类型格式的
- 数据格式文件(data):有些程序在运作的过程当中会读取某些特定格式的文件,那些特定格式的文件可以被称为数据文件
* 目录
* 连接档:类似windows系统底下的快捷方式
* 设备与装置文件
- 系统周边及储存等相关的一些文件,通常都集中在/dev这个目录之下
& 区块(block)设备档:就是一些储存数据,以提供系统随机存取的接口设备,硬盘与软盘就是,可以随机的在硬盘的不同区块读写,第一个属性是[b]
& 字符(character)设备文件:亦也是一些串行端口的接口设备,例如键盘,鼠标,这些设备的特色就是一次性读取,不能够截断输出,第一个属性是[c]
* 资料接口文件(sockets)
- 这种类型的文件通常被用在网络上的数据承接了
- 启动一个程序来监听客户端的要求,而客户端就可以透过这个socket来进行数据的沟通
- 第一个属性为[s],最常在/run或/tmp这些个目录中看到这种文件类型了
* 数据输送文件(FIFO,pipe)
- FIFO也是一种特殊的文件类型
- 主要目的在解决多个程序同时存取一个文件所造成的的错误问题
- 第一个属性为[p]
2.linux文件扩展名
* 一个linux文件能不能被执行,与他的第一栏的十个属性有关,与文件名根本一点关系也没有
* *.sh:脚本或批处理文件,因为批处理文件为使用shell写成的,所以扩展名就变成.sh
* *Z,*.tar,*.tar.gz,*.zip,*.tgz:经过打包的压缩文件
* *.html,*.php:网页相关文件
3.linux文件名的限制
* 避免特殊字符:
- ? > < ; & ! [ ] | \ ' " `( ) { }
* 另外文件名的开头为小数点.时,代表这个文件为[隐藏文件]