[root@localhost ~]# ls -li
总用量 104
inode 文件类型 属主权限位 属组权限位 其他用户权限 硬链接数
例子:269479 - rw- --- ---. 1 root root 3316 4月 18 16:09 anaconda-ks.cfg
属主:自己能干啥 属组:家人同组的人能干啥 其他用户:
r:read可读
w:write可写
x:execute可执行
-:没有任何权限
3位一组
改变权限属性命令chmod
一个文件的文件名在上一级目录的block里面和文件本身无关
只有文件的属主和超级用户root才有这样的权限。改变权限的方法有两种,一种是通过字母好人操作符表达式的方法来设置权限;
另一种是使用数字方法俩设置权限
1、数字权限方法
格式:chmod 【数字组合】 文件名
chmod的数字方法的说明
r 4
w 2
x 1
- 0
属主或属组的数字权限表示法:三位相加
2、字符表示方法
格式:chmod 【用户类型】 【+|-|=】 【权限字符】 文件名
u (user) +(加入) r
g (group) -
o (others) -(减去) w
a (all) =(设置) x
权限增减字符:[root@localhost ~]# chmod u+x,g=r,o=r ett.txt
+:添加某个权限
-:取消某个权限
=:取消其他所有权限赋予的的权限
批量删除一个文件用户主及用户组的权限[root@localhost ~]# chmod ug-r ett.txt
修改用户所属主和所属组:chown root.root ett.txt
一个文件的属主可以不受文件权限控制
一个用户只有该文件的执行权限不能执行该文件
删除文件是看上一级目录权限
文件总结:
可读r:表示具有读取阅读文件内容的权限
可写w:表示具有新增、修改文件内容的权限
(特别提示):删除文件,修改文件名等的权限是受父目录的权限控制,和文件本身权限无关
可执行x:表示具有执行文件的权限(文件本身要能够执行,普通用户同时还需要r的权限,root用户不用权限也能执行
当然文件本身也需要能够执行)。
win32下可执行文件:*.exe,*.bat.*.com
linux下可执行文件:*.sh,*.py,*.perl等
目录总结:linux目录的读写执行权限说明:
可读r:表示具有游览目录下面文件及文件的权限。即ls dir (不能进到目录里,即无法cd dir)
如果没有x权限,列表时也是有问题的。如加-l列表会出现问题
可写w:表示具有增加、删除或修改目录内文件名(一般指文件名)的权限(需要x权限配合)
可执行x:表示具有进入目录的权限。例如:cd dir
===================================================
默认权限分配命令umask 格式:umask 数字
umask值:管理员是0022,普通用户是0002
在创建目录时权限默认是755
在创建文件时权限默认是644
目录和文件的权限过大会中毒兄弟,随便植入木马
设置默认的umask:修改创建文件/目录权限 注意:当创建文件时umask有奇数就给奇数加一然后再算
文件起始默认权限是666 用666-umask的值就是创建文件的默认权限 (注意)
目录起始默认权限是777 用777-umask的值就是创建目录的默认权限
家目录有自己对应的umask077
===================================================
setuid和sedgid位
setuid的知识:用户的是八进制的4000
--用户对应的前三位的x位上如果有s就表示suid。当x位上没有x的时候,suid就是S
--setuid位是让普通用户可以以root或其他用户角色运行只有root或其他账号才能运行的程序或命令
或程序命令对应本来没有权限操作的文件
一个例子:希望普通用户拥有rm命令执行权限
1.去sudo里面添加rm命令全路径
2.对命令设置suid chomd u+s `which rm|tail -l`
注意:suid修改的是执行的命令文件的权限,而不是改处理的文件的权限
suid仅对二进制程序或命令有效,不能用在shell等类似的脚本文件上
二进制命令程序需要有执行权限x
suid权限仅在执行过程中有效
执行命令的任意系统用户都可以获得该命令程序在执行期间对应的拥有者的所有权限
如何查找有suid的命令:
[root@localhost ~]# find /usr/bin -type f -perm 4755
suid双刃剑,是一个比较危险的功能,对系统给安全有一定的威胁
sgid的知识:是八进制的2000
与suid不同,sgid即可以针对文件也可以针对目录设置!
-----对于文件,sgid的功能如下:
1.sgid仅对二进制命令程序有效
2.二进制命令或程序需要有可执行权限X
3.执行程序的任意用户可以获得该命令程序执行期间所属组的权限
-----对于目,sgid的功能如下:
1.用户再此目录瞎创建的文件和目录,具有和此目录相同的用户组设置
===================================================
chmod用来修改文件权限,格式如下:
chmod options mode file
例如:chmod 760 newfile
也可以使用符号的模式指定文件的权限:
[ugoa...] [+-=] [rwxXstugo...]
u 表示用户
g 表示用户组
o 表示其他
a 表示上述所有
+ 添加对应权限
- 去掉对应权限
= 为权限赋值
x 用于指定执行权限
s 用于设置正在执行的UID或者GID
t 用于保存程序文本
u 用于将权限设置为所有者的权限
g 用于将权限设置为用户组的权限
o 用于将权限设置为其他人的权限
===============================================================================
chown可以方便的修改文件所有者;
chown options owner [.group] file
例如:chown dan newfile
chown .dan newfile
chown dan. newfile
chown dan.dan newfile
也可以使用 chgrp 直接来修改用户组即可;
例如:chgrp shared newfile #只修改用户组,类似与chown .dan newfile
==========================================================
文件属性和文件系统属性的关系
相关命令:chattr (给文件上锁) 参数:i 不能增删改上锁文件
lsattr查看那些文件上锁