文件的权限:
用于控制进程对系统中文件和目录的访问。
权限的三个级别:文件主、同组用户、其他用户,每个文件有唯一属主。
普通文件的权限:读、写、可执行,不可写文件也可能会被删除。
可执行权限:①程序文件(可执行文件):二进制的CPU指令集合。
②脚本文件:默认的解释程序为/bin/sh,可以在脚本第一行自行指定解释程序(必须是第一行,#!必须是这个文件首先出现的两个字符),解释程序也可以是用户自己编写的应用程序。脚本程序运行时由解释程序创建了一个进程。
目录的权限:
读权限:若无读权限,目录表不允许读,ls命令会失败
写权限:若无写权限,目录表不允许写(创建文件、删除文件、文件改名会修改目录文件,但修改文件不用修改目录文件,不受目录写权限的影响)。
执行权限:目录有执行权限意味着分析路径名过程中可检索该目录。Eg. Cat /a/b/c要求a、b有执行权限,c有读权限,否则执行失败
STICKY粘着位:具有STICKY属性的可执行文件尽量常驻内存或交换区以提高效率。利用解决公共目录下某用户写权限的文件不被其他用户删除的问题,即写权限的矛盾。
权限验证的顺序:先验证文件主和进程主,再验证文件主和进程主所在的组是否一致,最后验证其他用户的权限。
权限相关命令:
ls有关选项:-l按长格式列出,-d列出当前目录自身的权限。
chmod:修改权限:chmod [ugoa][±=][rwxst]文件名表
u(user):文件主的权限、g(group):同组用户的权限、o(other):其他用户、a(all):全部用户、s-SUID、t-Sticky
chmod(数字八进制形式):chmod 644 xyz1 6:110:rw- 4:100:r–
umask:决定文件/目录的初始权限。例如用vi新建的文件,用输出重定向创建的文件、创建的新目录,都需要初始权限。是进程属性的一部分,是shell内部命令。
umask:打印当前的umask值,umask 022掩码值为八进制的022,即覆盖掉、取消同组用户和其他用户的w权限。一般将umask命令放到shell自动执行批处理文件中。
SUID权限:
一般情况下,进程的实际UID和有效UID相等。可执行程序具有SUID权限,进程的实际UID和有效UID不再相等。实际UID是当前用户,有效UID是可执行文件的文件主。
有时候我们希望其他用户对某一个文件的部分内容可以访问,对部分内容不可访问,这时可以由用户编程决定一个文件中的内容是否对某用户可见。但在其他用户执行这一文件时会访问需要访问的另一文件,一般情况下实际UID和有效UID相同,均为使用者,会造成这个文件对该用户不可见导致可执行文件执行失败。因此,将该可执行文件设置为SUID权限,可以让该可执行文件具有文件主的权限,从而能够由这一文件顺利访问需要访问的但实际UID不具备访问资格的文件。
附:创建新文件的方法
①touch filename 文件名不存在则创建空文件,文件已存在则只更新时间戳,不会把已有文件覆盖
②ls -l > filename将当前目录的内容写入文件filename中(ls -l >> filename是向文件中追加内容),>表示创建新文件并写,>>表示向已存在的文件中追加内容。