1. 什么是文件系统权限?它是如何工作的?如何查看文件的权限?
文件权限可以控制对文件的访问。通过设置用户权限、组权限、其它权限工作。最具体的权限具有优先权。用户权限覆盖组权限,后者覆盖其他权限。
- 是常规文件
d 是目录
l 是符号链接
c 是字符设备文件
b 是块设备文件
p 是命名管道文件
s 是本地套接字文件
查看权限:
接下来九个字符代表文件权限。这些字符解释为三组,每组三个字符:第一组是适用于文件所有者的权限,第二组用于文件的组所有者,最后一组则适用于所有其他(全局)用户。如果一组是rwx,说明该组具有读取、写入和执行全部三种权限。如果一个字母被替换为-,则表示该组没有这个权限。
在第二列(链接数)之后,第一个名称指定文件的所有者,第二个名称是文件的组所有者。
在示例中,用户 student 的权限由第一组三个字符指定。student 用户对 test 文件具有读取和写入权限,但没有执行权限。第二组三个字符是 student 组的权限:对test 具有读取和写入权限,但没有执行权限。第三组三个字符是所有其他用户的权限:对test 具有只读权限。
如果用户student 与组 student 具有不同的权限,而用户student 也是该组的成员,那么将适用用户的所有者权限。这样,从组中删除用户可能不切实际时,可以为用户设置比其组成员资格更严格的权限集。
2. 解释‘-rw-r--r--’这个字符串。
该文件是普通文件,用户可读可写,组用户和其他用户只有读权限。
3. 使用什么命令可以更改文件和目录的权限?写出分别使用符号法和数值法将权限从 754 修改为 775 的命令。
在 Linux 文件权限中,ugo 代表用户(user)、组(group)和其他(others)。每个文件和目录都有这三类用户的权限设置。以下是详细解释:
用户(u):
这是文件或目录的所有者,通常是创建文件或目录的用户。
chmod u+rwx filename
将为文件所有者添加读、写和执行权限。
组(g):
这是文件或目录所属的用户组,组内的所有用户都共享这些权限。
chmod g+rx filename
将为组内用户添加读和执行权限。
其他(o):
这是系统中所有其他用户,不包括文件所有者和组内用户。
chmod o+rx filename
将为其他用户添加读和执行权限。
在权限的三位八进制表示法中,每一位数字代表一个访问级别,从左至右为:用户、组和其他。
如果要为此访问级别添加读取权限,请加 4
添加写入权限,请加 2
添加执行权限,请加 1
下图说明了系统如何解释644八进制权限值。
1.使用符号法:
chmod u+x,g+w filename
2.使用数值法:
chmod 775 filename
4. 如何修改文件的所有者和所属组?
1.修改文件所有者:
chown newowner filename
这将文件 filename 的所有者更改为 newowner。
2.修改文件所属组:
chown :newgroup filename
这将文件 filename 的所属组更改为 newgroup。
3.同时修改文件所有者和所属组:
chown newowner:newgroup filename
这将文件 filename 的所有者更改为 newowner,所属组更改为 newgroup。
4.递归修改目录及其所有子目录和文件的所有者和所属组:
chown -R newowner:newgroup directoryname
这将目录 directoryname 及其所有子目录和文件的所有者更改为 newowner,所属组更改为 newgroup。
5. suid、sgid、sticky这三个特殊权限对文件和目录有什么影响?
SUID(Set User ID):
文件:当一个可执行文件设置了 SUID 位时,任何用户执行该文件时都会以文件所有者的权限运行,而不是执行者的权限。例如,如果一个文件的所有者是 root 并且设置了 SUID 位,那么任何用户执行该文件时都会以 root 的权限运行。
chmod u+s filename
在文件权限中显示为 s(例如:-rwsr-xr-x)
SGID(Set Group ID):
文件:当一个可执行文件设置了 SGID 位时,任何用户执行该文件时都会以文件所属组的权限运行。
目录:当一个目录设置了 SGID 位时,任何在该目录中创建的文件或子目录将继承该目录的组,而不是创建者的默认组。
chmod g+s filename 或 chmod g+s directoryname
在文件权限中显示为 s(例如:-rwxr-sr-x)
Sticky 位:
目录:当一个目录设置了 Sticky 位时,只有目录的所有者或文件的所有者才能删除或重命名该目录中的文件。这通常用于公共目录,如 /tmp,以防止用户删除其他用户的文件。
chmod +t directoryname
在目录权限中显示为 t(例如:drwxrwxrwt)
6. umask 在文件权限管理中有什么作用?解释umask 0022 命令的作用。
umask文件创建掩码,系统默认在/etc/login.defs和/etc/bashrc文件中定义。用户可以在其主目录的.bash_profile或.bashrc文件中覆盖默认值。一般默认umask值是0022。