Linux 知识库(4)- 用户 & 权限
这篇文章,我们来简单了解以下 Gnu/Linux 的用户和权限管理。
用户类别
首先来看下用户。用户分为以下三个类别:
超级用户账户(Superuser Account)
root 用户,即根用户,由系统自动创建。拥有最高权限,可以执行任何操作。
小窍门:第一次使用 root 用户时,需要先设置密码。设置密码的方法是执行👇命令
普通用户可以用 sudo 来获得执行某些命令所需的 root 权限
普通用户账户(User Account)
为使用系统的用户创建的账户
每个用户都有自己的 home 目录,即
/home/<user_name>
服务用户账户(Service Account)
通常用于提供某些服务的服务器版本(server distro),如 Apache, MySQL 等
每个服务会创建一个相关的用户,比如 MySQL 服务会创建一个 mysql 用户
这是一种提高安全性的最佳实践
切勿使用 root 用户权限运行服务!
为什么要支持多用户?
可以使一台计算机资源共享给多个用户使用
可以给不同的用户设置不同的权限,以根据角色,等级等限定工作范围
可以对系统操作进行溯源,即查看谁做了什么
小知识:相比于 Gnu/Linux 简单地由每台主机来管理其上的用户不同(实际上用户和设备存在绑定关系),微软则为 Windows 设计了一套更为灵活,也更为复杂的用户和设备管理系统,即 Windows 活动目录(Active Directory)。这也是为什么大部分公司的办公系统通常采用 Windows 的原因之一。
Group & Permissons
接下来我们来看下组和权限的概念。为什么要有组呢?设想一下,如果有几个用户需要相同的权限,与其为他们逐一设置权限,将他们添加到一个组里,并为这个组设置一次权限是不是更加方便呢?另外,调整用户的权限也更加容易。组的存在,对用户和权限的管理变得十分灵活。
用户信息保存在/etc/passwd
文件中,格式为:
如下是 Ubuntu 系统中的截图示例:
注意:基于安全和隐私考虑,<password>在此处会显示成一个 x
执行👇命令可以创建新用户
小知识:执行此命令默认同时会创建一个与 username 同名的 group,并将用户添加至该组中。
执行👇命令修改用户密码
执行👇命令可以切换用户
小窍门:执行su -
切换到 root 用户
执行👇命令可以新建组
小窍门:使用cat /etc/groups
查看组信息
值得一提的是,Gnu/Linux 为每个针对用户和组的功能都提供了一对命令,比如
adduser
和useradd
,addgroup
和groupadd
等。它们之间有什么区别呢?从最终效果来说,它们基本完全一样,但从使用角度来讲,add 开头的命令对用户更加友好,它提供了交互式的执行体验,并且它有一些默认的参数来简化执行过程。反之 add 结尾的命令,则需要用户提供命令所需的所有参数。所以,如果是手动执行,则选择 add 开头的命令更好;而如果是脚本执行,则选择 add 结尾的命令更好。
如何将用户添加到组
用户除了在被创建时,被自动添加到默认的组中之外,还可以用以下命令将其添加到其它组中:
小挑战:你能找到上面三个命令的区别吗?将你的答案写在评论区吧!
小窍门:使用groups
命令查看用户所在的组
创建新用户到指定的组中:
从组中移除用户:
评论