本文涵盖的主题:
1.前言
2.权限组
3.权限类型
4.修改权限
5.使用 sudo 执行命令
一、前言
Linux 或任何类 UNIX 操作系统的构建核心都考虑到了多用户模型。在计算机成为个人计算机之前,它们占据了大学里常见的建筑物。使用计算机的一种实用方法是将其与每个部门的多个终端连接。
简而言之,这是一个多用户模型。多个用户可以使用相关凭据通过终端连接到同一台计算机,并且每个用户仅对某些操作拥有某些权限。
在云等现代系统中,多个用户使用 SSH(Secure SHell)连接到远程服务器。每个访问服务器的用户都将拥有一个单独的帐户和与角色相关的权限。例如,开发人员可以通过 SSH 访问开发服务器,但测试人员可能没有相同的访问权限。
2. 权限组
权限分配的方式可以分为 3 个主要类别。
所有者 - 用户可以拥有文件和目录,并且可以控制其访问权限。所有者级别访问不会影响其他用户的操作。
组 - 用户可以根据他们的角色进行分组,例如开发人员或管理员;并将对文件和目录的访问权限分配给特定组下的所有用户。
所有用户 - 除了上述两个组之外,任何可以访问系统的用户都将有权访问所有者授予的某些文件和目录。
让我们看看这一切的实际效果。首先,让我们看看 cli 中为当前用户分配了哪些权限。我们使用id命令,它显示
uid - 用户 ID。创建用户时会分配一个数字 (1000),并将其映射到用户 ID。
gid - 主要组 ID。用户被分配了一个主要组 ID (gid),并且可能属于其他组
groups- 用户所属的不同组。示例:27 是 sudo(root) 用户组
id命令将显示如何向使用不同权限组的用户启用权限。可以使用具有共同功能的组来分配对系统内任何资源的访问。例如:仅限开发人员通过 SSH 访问计算机。
注意: ubuntu 的 uid 和 gid 以 1000 开头,其他 Linux 操作系统可能有所不同。例如:Fedora 以 500 开头
3. 权限类型
Linux中的每个文件或目录都有3个基本权限:
Read( r) - 读取文件或目录的内容(如果还为目录设置了执行(x)权限)
Write( w) - 创建、编辑、重命名或删除文件或目录的内容(如果还为目录设置了执行(x)权限)
Execute( x) - 运行或执行文件或查看目录的内容。这允许将文件视为程序并执行
我们来看看cli中的这些权限。当我们运行长列表命令(即ls -l对文件或目录执行命令)时,结果列表中的第一列是对该对象的权限(在下图中突出显示)。
权限中的第一个字符是对象指示符,目录是d,文件是-。其余字符代表权限组。
对象指示符后的第一组三个字符是所有者权限,下一组是组权限,最后一组是所有用户权限。
例如,我们可以这样理解上面长列表中的权限:
dir1- 这是一个目录( d)。所有者拥有所有权限( rwx),组和所有用户拥有读取和执行权限( r-x)
logs.txt- 这是文件 ( -)。所有者只有读和写访问权( rw-)。该组和所有用户只有读取权限( r)
4. 修改权限
chmod命令用于更改文件或目录的权限。只有文件所有者或超级用户才能更改文件或目录的模式。
命令的权限组chmod将被提及为
u- 所有者
g- 团体
o- 所有者
a- 全部用户
此外,+和-赋值运算符分别用于添加或删除权限。同样,这里的权限是读、写和execute( rwx)。
命令的语法chmod如下:
chmod <permission_group><assignment_operator><permission> <file_name/directory_name>
场景一:
删除所有用户的执行权限dir1(来自前面的示例)。
场景2:
仅将执行权限分配给 的组dir1。
场景 3:
为所有者添加执行权限,并设置组和其他人读取和执行的权限。多个规格可以用逗号分隔
注意:为相关用户分配正确的权限是维护最佳安全实践的非常必要的活动。一般来说,给予用户或组的权限越少,就越能避免任何事故。
5.使用sudo执行命令
Sudo (su do) 允许系统管理员委派权限,赋予某些用户(或用户组)以 root 或其他用户身份运行某些(或全部)命令的能力,同时提供命令及其参数的审核跟踪。
在linux中,一些对系统非常基础的资源由管理员管理只是为了保证完整性。使用 sudo 最简单的示例是 update 命令。
在ubuntu下,apt-get update会更新操作系统。apt是这里的包管理器,update是告诉系统获取最新版本软件的选项。
当前用户没有成功运行该命令所需的权限。update命令引用的是/var/lib/apt/lists/lock只有admin用户有权限的系统文件( )。
要成功执行更新命令,sudo将在更新命令前添加前缀。这将暂时允许我们以管理员身份执行命令。这在上面示例图像的后半部分得到了演示。
使用sudo命令的想法:
sudo命令将系统管理员的权限授予任何用户。在设计良好的系统中,不会向任何用户提供管理员权限。作为一般经验法则,用户的权限越少,可以更好地避免在攻击下对整个系统造成任何损害。
**
结论
**
UNIX/linux 等多用户系统旨在确保多个用户能够使用一台机器。这也带来了有趣的问题,即谁可以访问该机器上的哪些数据。
Linux 的开发始终考虑到这一点。在 cli 中使用chmod命令分配正确的权限要容易得多,尤其是在服务器环境中。