对于文件系统权限,我们前面已经讲解了一部分,这里就不在重复了。
1.修改文件权限有两种,一种是数字、一种是字母 (chmod 的修改只能是属主或者root)
数字:
修改目录权限和目录内所有文件的权限
字母:
2.修改文件属性的关系(其中修改组chgrp=chown .组)
这里有两点要注意:
1)如果一个文件是可执行文件,并且属主或者root对于这个文件只有可执行权限,那么可以通过sh命令进行执行
2) 对于往文件里面写内容,root和属主都可以在没有可写权限的情况下写入的,只要强制保存就可以了。
3.对于删除一个文件,是要看它的上一级目录的权限的,删除的是文件名,而文件名是在上一级目录中,这和找一个文件是一个道理,都是从/开始的,而文件名在上一级目录中,所以删除一个文件本身和文件的权限没有关系和上一级目录的权限有关系,且必须是写的权限。(w写的权限,可以删除文件,可以创造文件)
4、创建文件和文件夹的权限,默认是644和755,是通过umask控制的,在生产中这种权限是相对安全的,所以尽量不要修改。所以这里知道下就可以了。
如图:创建newdir和newfile,则为644和755
在/etc/profile中,定义了
如果修改了,记得要更新/etc/profile。可以在此文件夹中修改,也可以通过umask修改。那么有什么规律呢?
针对目录:我们认为最大权限是777,根据umask值相减,就是默认创建目录的权限,如图:777-022=755 权限
针对文件:我们认为最大权限是666,根据umask值相减,就是牧人创建文件的权限,如图:666-022=644权限,但是,如果umask有一个为奇数的话,那么计算后的值应该在该奇数位上+1.
另外/etc/login.defs文件管理者家目录的文件权限,保持每个用户的家目录独立性,不让相互串门
5.linux的特殊权限:
除过9位基础权限外,还有3个特殊的权限。
setuid:
1)在属主对应的权限位上的x位有s就表示setuid权限,即suid。如果在这个x位置上没有s的就是S
2)setuid位是让普通用户可以以root(或者其他)用户的角色运行只有root(或其他)账号才能运行程序或命令。
所以以上都是对命令添加的,都是在二进制文件上添加的,且二级制文件具有x权限,并且此命令在执行过程中生效。
如下,删除一个文件:
文件的上级目录权限:
文件的权限:
修改命令:
所以如果用另外一个用户删除的话,有3个解决方法:
比如test用户删除djw.sh文件:
1)sudo,授权用户test具有删除命令的权限
2)修改文件上级目录的权限,这样其他人就可以删除文件了
3)修改命令的权限,如上/bin/rm权限就是S了,这样当test执行命令的时候,不论是哪个文件,其删除的话,都具有该命令属主的权限,如上就是具有root的权限,才能删除的。
6.如何查看linux的suid的命令:
这是一个双刃剑的命令,比较危险的命令(对于linux的优化,可以优化这个命令)
、 sgid:与suid不同的是,sgid既可以针对文件也可以针对目录设置。(了解中的了解)
1)文件: sgid仅对二进制命令程序有效,且要有x权限,执行的用户可以获得该命令执行期间所属组的权限
这里要注意的是修改的话是2开头,如2755权限
2)目录:可以创建一个目录,设置sgid,那么用户再此目录下创建的文件和目录具有和此目录相同的用户组设置(目录所属组是什么,里面创建的文件就是什么)
粘贴位:如果一个目录设置成粘贴位,这个目录本身和目录内容都只有这个目录的属主或者root才能删除。/tmp 目录是经典的粘贴位目录
用途:比如/tmp都往里面写东西,但是各自管理各自,不能删除别人的
特殊权限对应的数字:
suid 4000s S
sgid 2000s S
粘贴位:sbit 1000t T
7.现在讲的chattr lsattr block inode都是基于ext3,ext4的,对于reiserfs文件系统时没有任何效果的。
这里在说一个chattr +a 表示可以往文件中添加内容,但是不能删除或者修改文件。
8.知道有一个命令就行了 setfacl和getfacl 设置某一个用户对文件/目录的操作权限