Linux初探>Linux文件和目录的权限
几个基本概念:
·文件所有者(用户)owner
·用户组group
·其他人others
·root
文件属性:ls -al 查看文件及属性
第一列:文件类型和权限
第1个字符代表文件类型(文件、目录或链接文件等)
第234个字符表示文件所有者对文件/目录的权限
第567个字符表示文件所有者所在用户组对文件/目录的权限
第890个字符表示文件所有者所在用户组之外的用户对文件/目录的权限
权限用固定的rwx序列表示,有该权限则写相应字符,无权限则写-
root拥有最高权限
第二列表示有多少个文件名连接到此节点(i-node)
第三列表示这个文件/目录的“所有者”账号
第四列表示这个文件所属的用户组
第五列为这个文件的大小,默认单位B
第六列为这个文件的创建或修改日期。
中文日期为乱码可以使用“LANG=en_US”修改语言
第七列为文件名,前面为“.”则为隐藏文件
改变文件属性与权限:
1.chgrp改变文件所属用户组
语法:chgrp [-R] groupname dirname/filename
参数:-R 递归,同时改变目录及其下所有子目录、文件的权限
要求:groupname存在
问题:能否改变用户组为文件所有者不支持的用户组。
如果可以,会是什么情况。
2.chown改变文件所有者
语法:chown [-R] username dirname/filename
要求:必须是存在的用户
问题:改变文件所有者或,所属用户组是否随之改变。
3.chmod改变文件/目录权限
数字法:
用421分别表示rwx的权值,用权值和表示权限,如5代表权限r-x,7代表rwx。
用三位数表示完整权限,如755代表rwxr-xr-x。
字符法:
第一组字符:u(user)文件所有者、g(group)用户组、o(others)其他人。
a (all)所有人
第二组字符:+ 添加权限、- 去掉权限、=赋予权限
第三组字符:r读 w写 x执行
语法:chmod [-R] 权限 dirname/filename
例:chmod 755 .bashrc
chmod u=rwx,go=rx .bashrc
chmod a+w .bashrc
目录与文件的权限意义:
文件:
r:可读取此文件的实际内容,如读取文本文件的文字内容。
w:可以编辑、新增或是修改文件内容。
但不包含删除文件本身。
x:执行。
在Linux中文件能否被执行看权限而不看后缀。
目录:
r:可以读取该目录下的目录结构,可以查询该目录下的文件名,但不可进入该目录
w:目录写权限可以做如下事情,很重要,慎重对待。
·新建新的文件/目录
·删除已存在的文件与目录
·将已存在的文件或目录重命名
·转移该目录内的文件或目录位置
总的来说,就是改变目录结构的权限。
x:可以进入该目录
文件默认权限:umask
输入umask数字模式查看默认权限。
显示出的是被去掉的权限。
输入umask -S 字符模式查看默认权限,显示的是拥有的权限。
新建文件在默认权限基础上默认再去掉所有x权限。
如:
文件的隐藏属性
chattr设置文件的隐藏属性
chattr [+ - =] [ASacdistu]
常用参数:
a:只允许增加数据,不能删除也不能修改数据。
需要root权限设置。
i:使文件不能被删除、改名、设置连接也无法写入或添加数据。
需要root权限设置。
lsattr查看文件的隐藏属性
文件特殊权限:
1.SetUID
当s出现在文件所有者的x权限上时,代表程序执行时,执行者会暂时取得所有者对于该文件的权限。
如上面用来记录用户密码的/usr/bin/passwd,所有者为root,其他用户没有写入的权限,但却可以自行更改密码。
SetUID仅对二进制程序有效,执行者对于该程序要有x的权限。
2.SetGID
当s出现在用户组的x权限上时,叫SGID。
可以作用于文件和目录。
对文件:
需要是二进制程序;
执行者需要有x权限;
执行过程中暂时获得用户组对于该文件的权限。
对目录:
用户需要对此目录有rx的权限;
用户在此目录下的有效用户组(effective group)会变成该目录所属的用户组
若用户在此目录下具有w权限,则用户所创建的新文件所属用户组为该目录所属用户组。
3.Sticky Bit
仅对目录有效,作用:
当用户对于此目录具有wx权限时;
用户在该目录下创建文件或目录时,仅有自己与root才有权利删除该文件。
/tmp就是这种权限。
在/tmp中,普通用户仅能删除自己的文件,不能删除别人创建的文件。
设置SUID/SGID/SBIT权限的方法:
在命令“chmod 755 文件/目录”中三位数字前加一个数字:
4:SUID的权值
2:SGID的权值
1:SBIT的权值
把需要的权限的权值相加得到这个数。
如:
chmod 6775 文件
则对该文件设置SUID和SGID权限。