Linux一切皆文件,文件都是有对应的权限的,而今天我们就来了解一下Linux中的权限。
在Linux系统中,有三种不同类型的用户:root用户、系统用户和普通用户。
区分这三种用户类型的目的是为了安全和权限管理。通过将不同的任务委托给不同类型的用户,可以降低系统被滥用的风险,并保护系统的安全性和稳定性。
root用户具有系统的完全控制权限,可以对系统中的所有文件和目录进行读、写、执行等操作。
root用户通常用于系统管理任务,如安装软件、配置系统等。
由于root用户拥有最高权限,因此使用root用户需要谨慎,以免对系统造成不必要的损害。
这些用户账号通常不允许交互式登录,并且没有个人目录。
系统用户的权限通常较低,只能访问特定的文件和资源。
普通用户只拥有自己个人目录和特定文件的访问权限,不能对系统文件和目录进行修改。
普通用户的权限较低,需要通过sudo命令或root用户的授权来执行需要提权的操作。
su命令和sudo命令都是Linux系统中用于提权的命令,但它们的使用方式和权限管理方式是有所不同的。
su命令:
命令:su [用户名]
功能:切换用户。
su (Switch User)命令用于切换用户身份。通过su命令,普通用户可以切换到另一个用户账号,包括root用户。
例如,要从root用户切换到普通用户user,则使用 su user。 要从普通用户user切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的口令。
sudo命令
命令:sudo [命令行]
功能:临时提权
sudo (SuperUser Do)命令用于临时提权。在默认配置下,普通用户无法直接以root用户身份执行命令,但可以使用sudo命令来执行具有root权限的命令。
sudo命令需要在命令前加上sudo关键字,然后输入当前用户的密码。只有拥有sudo权限的用户才能使用sudo命令。通常,在安装Linux系统时,第一个创建的用户会被自动添加到sudo组中,即拥有sudo权限。
在Linux中,文件权限通过三组权限标记来管理,分别是用户权限(user)、用户组权限(group)和其他用户权限(other)。
用户权限:表示文件所有者对文件的权限。可以通过命令ls -l查看文件的详细信息。
用户组权限:表示用户所属组对文件的权限。与用户权限类似,可以通过ls -l命令查看。
其他用户权限:表示文件所有其他用户对文件的权限。同样可以通过ls -l命令查看。
我们用ls -l来查看文件的详细信息。
第一个字符表示文件类型,-表示普通文件,d表示目录。
后面九个字符分为三组,分别表示所有者的权限、所属组的权限和其他用户的权限。
权限字符
r:读权限。用于查看文件内容。
w:写权限。用于修改文件内容。
x:执行权限。用于执行文件。
-:表示不具备对该文件的任何权限。
文件类型
符号 | 文件类型 |
---|---|
- | 表示普通文件 |
d | 表示目录 |
l | 表示符号链接 |
b | 表示块设备文件 |
c | 表示字符设备文件 |
s | 表示套接字 |
p | 表示管道 |
字符表示:
权限符号 | 说明 |
---|---|
r – – | 只读 |
– w – | 仅可写 |
– – x | 仅可执行 |
rw – | 可读可写 |
– wx | 可写可执行 |
r – x | 可读可执行 |
rwx | 可读可写可执行 |
– – – | 无任何权限 |
8进制数值表示:
权限符号 | 八进制 | 二进制 |
---|---|---|
r – – | 4 | 100 |
– w – | 2 | 010 |
– – x | 1 | 001 |
rw – | 6 | 110 |
– wx | 3 | 011 |
r – x | 5 | 101 |
rwx | 7 | 111 |
– – – | 0 | 000 |
在Linux中,可以使用chmod命令来设置文件的访问权限。
chmod命令可以使用数字模式或符号模式来指定权限。
数字模式:
用数字表示的权限模式应该是一个八进制数。
r:4
w:2
x:1
[zhy@Centos ~]$ ls -l file.txt
-rw-rw-r-- 1 zhy zhy 26 Jan 4 19:12 file.txt
[zhy@Centos ~]$ chmod 777 file.txt //加上所有权限
[zhy@Centos ~]$ ls -l file.txt
-rwxrwxrwx 1 zhy zhy 26 Jan 4 19:12 file.txt
[zhy@Centos ~]$ chmod 000 file.txt //删除所有权限
[zhy@Centos ~]$ ls -l file.txt
---------- 1 zhy zhy 26 Jan 4 19:12 file.txt
[zhy@Centos ~]$ chmod 664 file.txt //更改指定权限
[zhy@Centos ~]$ ls -l file.txt
-rw-rw-r-- 1 zhy zhy 26 Jan 4 19:12 file.txt
符号模式:
权限字符:
+:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限
=:向权限范围赋予权限代号所表示的权限
用户符号:
u:拥有者
g:拥有者同组用
o:其它用户
a:所有用户
[zhy@Centos ~]$ chmod u+r file.txt //给文件的所有者添加读权限。
[zhy@Centos ~]$ ll file.txt
-r-------- 1 zhy zhy 26 Jan 4 19:12 file.txt
[zhy@Centos ~]$ chmod o+x file.txt //给其他用户添加执行权限
[zhy@Centos ~]$ ll file.txt
-r-------x 1 zhy zhy 26 Jan 4 19:12 file.txt
[zhy@Centos ~]$ chmod g+w file.txt //将文件的用户组添加写权限
[zhy@Centos ~]$ ll file.txt
-r---w---x 1 zhy zhy 26 Jan 4 19:12 file.txt
[zhy@Centos ~]$ chmod a=rwx file.txt //将文件的权限设置为所有用户可读可写可执行。
[zhy@Centos ~]$ ll file.txt
-rwxrwxrwx 1 zhy zhy 26 Jan 4 19:12 file.txt
[zhy@Centos ~]$ chmod o-x file.txt //给其他用户的执行权限移除
[zhy@Centos ~]$ ll file.txt
-rwxrwxrw- 1 zhy zhy 26 Jan 4 19:12 file.txt
chown命令用于改变文件的所有者和/或所属组。
sudo chown <新的所有者> <文件路径>
[zhy@Centos ~]$ sudo root file.txt
chgrp命令用于修改文件或目录的所有者组。
基本语法:
chgrp [选项] 新组 文件/目录
选项:
-c:显示修改的所有者组。
-f:不显示错误信息。
-R:递归地修改目录及其子目录下的所有文件和目录的所有者组。
在Linux中,umask命令用于设置新创建文件和目录的默认权限掩码。默认情况下,新创建的文件和目录将继承其父目录的权限。
语法:
umask [模式]
模式是一个三位数值,表示权限掩码。每个位上的数字表示对应权限位的屏蔽值。例如,0644表示屏蔽文件的写权限,022表示屏蔽目录的写权限。
[zhy@Centos ~]$ umask //查看当前的umask值
0002
[zhy@Centos ~]$ umask 0022
[zhy@Centos ~]$ umask
0022
请注意,umask值是八进制数。在设置时,可以使用八进制数直接指定,也可以使用四位数值来指定(将八进制数每个位上的数字转换为对应的二进制数)。
umask命令对当前会话中的新创建文件和目录生效,但不会对已存在的文件和目录生效。要永久更改umask值,可以将umask命令添加到bash配置文件中,如~/.bashrc或/etc/profile。这样,在每次登录时,umask命令会自动运行并设置新的umask值。
在Linux中,粘滞位是一种文件权限设置。它是一种特殊的权限设置,应用于某些特殊的目录,例如/tmp目录。粘滞位的设置可以防止其他用户删除或更改不属于自己的文件。
当粘滞位设置在一个目录上时,只有文件所有者和目录的所有者才能删除或重命名目录中的文件,其他用户只能读取或写入文件,但不能删除或更改文件。
root用户除外。
在Linux中,粘滞位位于文件权限的最后一位,用"T"来表示。
$ chmod +t /tmp
表示在/tmp目录上设置粘滞位。
作为Linux系统的管理员账户,root拥有最高的权限。
root用户对系统上的所有文件和目录都具有读、写和执行的权限。无论文件的所有者或组是什么,root都可以访问和修改它们。
需要注意的是,root用户拥有强大的权限,但也要小心使用。滥用root权限可能导致系统不稳定,数据丢失或安全漏洞。因此,应该尽量避免以root身份进行常规操作,而是使用普通用户账户,并只在需要时切换到root身份。