Linux文件权限概念
作为一个初学者,文件的权限与属性是学习Linux相当重要的一环,如果屏幕中出现了【Permission deny】的时候,肯定是权限设置错误。
Linux文件属性
【ls】是一个查看文件的命令
【su -】切换身份为root
登录自己账户系统后,使用【su -】切换身份,执行【ls -al】看看
本章后续的chgrp、chown等命令可能都需要使用root的身份才能够处理,所以建议用root的身份来学习,但是不建议直接用root登录系统,建议使用【su -】来切换身份,离开root则使用exit回到Feliks(自己的账号)即可
ls是list的意思,重点在显示文件的文件名和相关属性,而选项【-al】则表示列出所有的文件详细的权限与属性(包含隐藏文件,就是文件名第一个字符为【.】的文件)
-rw-r–r–. 1 root root 1857 8月 15 11:39 initial-setup-ks.cfg
第一栏-rw-r–r–:文件的类型与权限(permission)
- 第一个字符代表这个文件是目录、文件或链接文件等:
- 当为【d】则是目录,例如图里的【.config】文件
- 当为【-】则是文件,例如图里的【initial- setup- ks.cfg】文件
- 若是【l】则表示为链接文件(link file)
- 若是【b】则表示为设备文件里面的 可供存储的周边设备
- 若是【c】则表示为设备文件里面的串行端口设备,例如键盘、鼠标等
- 接下来的字符是三个为一组且均为【rwx】的三个参数的组合。
- 第一组:文件拥有者可具备的权限
- 第二组:加入此用户组的账号的权限
- 第三组:非本人且没有加入本用户组的其他账号的权限
- r:可读(read)
- w:可写(write)
- x:可执行(execute)
- 如果没有权限则是【-】
例:【-rwxr-xr–】意义?
[-] :1 [rwx] : 234 [r-x] : 567 [r–] : 890
1是代表这个文件名为目录或文件
234是拥有者的权限(可读可写可执行)
567是同用户组的用户权限(可读可执行)
890是其他用户权限(可读)
第二栏1:表示有多少文件名链接到此节点(inode)
- 每个文件都会将他的权限与属性记录到文件系统的inode中,
第三栏root:表示这个文件(或目录)的拥有者账号
第四栏root:表示这个文件的所属用户组
- 在Linux系统中,一个账号会加入一个或多个用户组中。
第五栏1857:表示这个文件的容量大小,默认单位是Bytes
第六栏:表示这个文件的创建日期或者是最近的修改日期
- 如果这个文件被修改的时间距离现在太久,那么时间部分会仅显示年份而已
- 显示完整的时间格式:【ls -l –full-time】
第七栏:表示文件名
文件和目录是不一样的,目录如果没有x权限则不能进入
如何修改文件属性与权限
chgrp:修改文件所属用户组
chown:修改文件拥有者
chmod:修改文件的权限,SUID、SGID、SBIT等特性
修改所属用户组chgrp
change group的缩写
命令:chgrp -R dirname/filename
- -R:进行递归(recursive)修改,连同子目录下的所有文件、目录都更新成为这个用户组的意思,常常用来修改某一目录内所有的文件的情况
文件的用户组被修改成了users
因为testing组不存在,所以修改用户组失败
修改文件拥有者chown
change owner的缩写
命令:
chown -R 账号名称 文件或目录
chown -R 账号名称:用户组名称 文件或目录
- -R:进行递归(recursive)修改,连同子目录下的所有文件都修改
文件的拥有者被修改成了bin这个账号
把文件的拥有者和用户组改回root
事实上,chown也可以使用【chown user.group file】,但是有些人喜欢设置账号的时候加小数点,这样会造成系统的误判,所以还是比较建议使用【:】
什么时候使用chgrp、chown?比如要把文件复制给另一个人的时候,会把拥有者和用户组也给复制过去,这时就要用chgrp和chown来修改别人才能修改
修改权限chmod
权限的设置方法有两种:数字或者符号
数字类型修改文件权限
r:4
w:2
x:1
rwx权限=4+2+1=7
例如:【-rwxrwx—】owner=rwx=7 group=rwx=7 others=—=0
所以权限数字就是770
命令:
chmod -R xyz 文件或目录
- xyz:就是上面的数字类型的权限属性,rwx属性数值相加
- -R:进行递归(recursive)修改,连同子目录下的所有文件都会修改
符号类型修改文件权限
u:user
g:group
o:other
a:all
+:加入
-:移除
=:设置
命令:
chmod u=rwx,g=rwx,o=rwx [filename]
如果要设置文件【-rwxr-xr-x】
chmod u=rwx,go=rx .bashrc
只想增加某个文件所有人都可以写入的权限:
chmod a+w .bashrc
目录与文件的权限意义
权限对文件的重要性
- 文件是实际含有数据的地方,包括一般文本文件,数据库文件,二进制可执行文件(binary program)等
- r(read):可读取此文件的实际内容,如读取文本文件的文字内容等
- w(write):可以编辑、新增或是修改该文件的内容(但不包含删除文件)
- x(execute):该文件具有可以被系统执行的权限
在Linux下,文件是否能被执行,是借由是否具有x这个权限来决定的,和文件名后缀没有绝对的关系
权限对目录的重要性
目录主要的内容在记录文件名列表,文件名与目录有强烈的关联
r(read contents in directory):表示具有读取目录结构列表的权限,有该权限代表可以查询该目录下的文件名数据,可以利用ls命令将目录的内容列表展示出来
w(modify contents of directory):表示具有改动该目录结构列表的权限
- 建立新的文件与目录的权限
- 删除已经存在的文件和目录权限(无论该文件的权限是什么)
- 将已存在的文件或目录进行更名的权限
- 移动该目录内的文件、目录位置的权限
x(access directory):目录的x权限代表用户是否能进入该目录成为工作目录的用途
工作目录就是当前所在的目录
例:有目录是
drwxr--r-- root root这样的权限,系统有个账号为vbird,并不支持root组,那vbird对此目录有何权限?答:vbird对此目录仅具有r的权限,因此vbird可以查询此目录下的文件名列表,但是因为没有x权限,所以不能切换到此目录内
Linux文件种类与扩展名
除了前面的一般文件【-】和目录文件【d】之外还有别的种类的文件
文件种类
- 常规文件
- 纯文本文件(ASCII):是Linux系统中最多的一种文件类型,可以直接执行【cat ~/ .bashrc】就可以看到文件的内容
- 二进制文件(binary)
- 数据文件(data)
- 目录(directory):第一个属性为【d】
- 链接文件(link):第一个属性为【l】
- 设备与设备文件(device)
- 区块(block)设备文件:第一个属性为【b】,硬盘和软盘就是
- 字符(character)设备文件:第一个属性为【c】,串行端口的接口设备,硬盘和鼠标就是
- 数据接口文件(sockets):第一个属性为【s】
- 数据输送文件(FIFO,pipe):first-in-first-out,管道,第一个属性为【p】
- 常规文件
Linux文件扩展名:一个Linux文件能否被执行,与他的第一栏是个属性有关,与文件名没有一点关系,只要权限有【x】,则代表这个文件具有可以被执行的能力
- .sh:脚本或批处理文件
- .Z .tar .tar.gz .zip .tgz:压缩文件
Linux文件名长度限制
- 单一文件或目录最大容许文件名是255字节