Linux中查看文件信息的命令
ls命令对文件以及目录属性进行查看
ls -l file ----->列出文件的详细信息 = ll file
ls -l directory ----->列出目录所包含的文件属性 = ll directory
ls -dl directory ----->列出目录本身的属性 = ll -d directory
文件各部分表示信息及其含义
-rw-r--r--. 1 root root 0 Oct 27 16:50 test
1 2 3 4 5 6 7 8
1.文件的类型:
- | d | c | s | p | b | l |
普通文件 | 目录 | 字符设备 | 套接字 | 管道 | 块设备 | 链接文件 |
2.文件的权限(读 写 执行)
上述示例中,第一组rw- 是文件拥有者对文件可以操作的权限,优先级最高;第二组r-- 是文件所在组的组成员对文件可以操作的权限;第三组r-- 是其他人对文件可以进行的操作
3.对文件来说:文件内容被系统记录的次数(链接数)
对目录来说:第一级子目录数
4.文件的拥有者:root
5.文件的所属组:root
6.文件的内容大小,0 代表文件大小(因文件没有内容,所以大小为0);
7.文件最后一次被修改的时间:Oct 27 16:50
8.文件名:test
文件拥有者 所属组的管理
拥有者的更改
- chown username file 更改文件的拥有者
- chown username dir 更改目录本身的拥有者,该操作不会改变目录里面内容的拥有者
- chown -R username dir 更改目录本身及其内容的拥有者, -R参数表示递归改变,可以同时对目录及其内容进行修改
所属组的更改
- chgrp username file 更改文件的所属组
- chgrp username dir 更改目录本身的所属组
- chgrp -R groupname dir 更改目录本身及内部的所属组
同时更改拥有者和所属组
- chown username.groupname file 更改文件的拥有者和所属组
- chown username.groupname file 更改目录本身的拥有者和所属组
- chown -R username.groupname dir 更改目录本身及其内部的拥有者和所属组
文件的普通权限
1.权限位:
第一组rw- 是文件拥有者对文件可以操作的权限;第二组r-- 是文件所在组的组成员对文件可以操作的权限;第三组r-- 是其他人对文件可以进行的操作
r w - | r - - | r - - |
u | g | o |
2.各个权限的详细说明
r:
对文件:可以查看文件的的字符(内容)
对目录:可以查看目录中的文件信息
w:
对文件:可以更改文件内的字符
对目录:可以在目录中添加/删除文件或目录
x:
对文件:可以运行文件内记录的程序的动作
对目录:可以进入目录
权限用数字表示
在linux里面 :rwx: r=4;w=2;x=1
文件权限数字表示方式:
r w - | r - - | r - -
u g o
u= r w - =4+2+0=6
g= r - - =4+0+0=4
o= r - - =4+0+0=4
故该文件的权限值表示为:644
修改文件权限
字符方式修改
chmod [-R] <u|g|o> <+|-> <r|w|x> file|dir
chmod u-x filename file拥有者去掉执行权限
chmod g+w filename file所属组增加写权限
chmod u-x,g+w filename file拥有者去掉x权限,所属组增加写权限
chmod ugo-r filename file拥有者、所属组和其他用户都去掉读权限
chmod ug+x,o-r filename file拥有者和所属组增加x权限,其他用户去掉读权限
数字方式修改
chmod 修改后的权限值 file|dir
eg:
chmod 777 file
权限值的符号表示与数字表示的对应
7 | 6 | 5 | 4 | 3 | 2 | 1 |
r w x | r w - | r - x | r - - | - w x | - w - | - - x |
修改权限的实验:
对文件权限的修改:
先查看原始文件的权限:
可以看出文件的所属组是student,执行chmod g-r file ,去掉文件所属组的r权限
切换到普通用户,cat file 可以看出student用户查看该文件的权限受限了
重新在root用户下加上该权限,chmod g+r file
重新在student用户下实验,可以看出student用户可以进行文件的查看了
此时该文件的权限是对所属组用户只可读,执行vim file查看,可以看出student用户不能对文件进行编辑操作
在root用户下加上权限,chmod g+w file
在student用户下实验,可以看出student用户可以进行文件的编辑操作了
对目录权限的修改:
系统默认权限的设定
******系统默认文件的满权限是666,系统默认目录的满权限是777*******
系统权限的临时设定:(此设定方式为临时设定,只在当前shell中生效)
umask ##查看系统保留的权限,默认为022
eg:
umask 077 ##修改系统保留权限为077
umask只对新建的文件和目录起效,已经存在的文件或目录的权限不受该设置的影响。
系统权限的永久设定:
vim /etc/bashrc---->进入该文件的第70行,对相应的umask值进行修改并保存
vim /etc/profile---->进入该文件的第59行,对相应的umask值进行修改并保存
以上两个文件umask的设定必须一致
设定完之后执行以下程序:
source /etc/bashrc
source /etc/profile
acl访问控制列表
访问控制列表(Access Control List,ACL) 是路由器和交换机接口的指令列表,用来控制端口进出的数据包。ACl帮助用户定义一组权限规则,对于一组特定的数据说明谁可以访问并且何时可以访问。
acl = access control ###指定特殊用户对特殊文件有特殊权限
查看文件权限:
getfacl file
设定方式:
setfacl -m <u|g>:<username|groupname>:权限 文件
-m:设定
u:用户
g:组
eg:
setfacl -m u:student:rwx file ##设定student用户对file文件可以读写执行
可以看出当设定了acl权限之后,文件权限位后面多了一个+ 表示权限列表开启
setfacl -m g:student:rwx file ## 设定student组对file文件可以读写执行
****注意****:
setfacl -m d:u:student:rwx test ##设定student用户在test目录中对新建文件有rwx权限、对已经存在的文件无效、对目录本身无效
在/mnt下建立一个test目录,并在目录里建立一个文件file
对test目录设置acl权限列表
setfacl -m d:u:student:rwx test
切换到student用户
尝试对原有的file文件进行编辑,可以看出没有该权限
重新建立文件file2,可以看出student用户对该文件具有所设置的rwx权限
默认权限只对目录中新建的目录或者文件生效,对已经建立的文件无效,对目录本身也无效
删除acl 列表中的username | groupname:
setfacl -x <u|g>:<username|groupname> 文件|目录
关闭acl列表
setfacl -b filename|dir
特殊权限位
1. suid 冒险位
只针对二进制可执行文件(一段可以执行的代码)进行操作,文件内记录的程序产生的进程的拥有人是这个文件的拥有人,和进程的发起人身份无关。
设定方式:
chmod u+s file
suid = 4
chmod 4*** file
在root用户上将/usr/bin/touch文件加上冒险位
切换到student用户,使用touch命令建立一个文件
可以看出文件的拥有者还是root用户
2.sgid 强制位
设定方式:
chmod g+s file|dir
sgid = 2
chmod 2*** file|dir
对文件:
只针对二进制可执行文件,任何人运行二进制文件程序时程序所产生的进程的所属组都是这个二进制文件的所属组,和进程的发起人的组无关。
在root用户上将/usr/bin/touch文件加上强制位
切换到student用户,使用touch命令建立一个文件
对目录:
当目录拥有sgid权限后,目录中新建的所有文件的所属组都自动归属到目录的所属组中,和文件的建立者所在的组无关。
3.sticky 粘制位
只针对目录,当一个目录拥有这个权限,那么目录中的文件只能被文件的拥有者删除。
设定方式
chmod o+t dir
t = 1
chmod 1777 dir