写点什么

Linux 知识库(4)- 用户 & 权限

作者:冯亮
  • 2022 年 7 月 15 日
  • 本文字数:1390 字

    阅读完需:约 5 分钟

Linux知识库(4)- 用户 & 权限

这篇文章,我们来简单了解以下 Gnu/Linux 的用户和权限管理。

用户类别

首先来看下用户。用户分为以下三个类别:

超级用户账户(Superuser Account)

  • root 用户,即根用户,由系统自动创建。拥有最高权限,可以执行任何操作。

  • 小窍门:第一次使用 root 用户时,需要先设置密码。设置密码的方法是执行👇命令

sudo passwd 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文件中,格式为:

<user_name>:<password>:<uid>:<gid>:<desc>:<home_dir>:<shell>
复制代码


如下是 Ubuntu 系统中的截图示例:

注意:基于安全和隐私考虑,<password>在此处会显示成一个 x


执行👇命令可以创建新用户

sudo adduser <user_name>
复制代码


小知识:执行此命令默认同时会创建一个与 username 同名的 group,并将用户添加至该组中。


执行👇命令修改用户密码

sudo passwd <user_name> - change <password>
复制代码


执行👇命令可以切换用户

su - <user_name>
复制代码


小窍门:执行su -切换到 root 用户


执行👇命令可以新建组

sudo groupadd <group_name>
复制代码


小窍门:使用cat /etc/groups查看组信息


值得一提的是,Gnu/Linux 为每个针对用户和组的功能都提供了一对命令,比如adduseruseraddaddgroupgroupadd等。它们之间有什么区别呢?从最终效果来说,它们基本完全一样,但从使用角度来讲,add 开头的命令对用户更加友好,它提供了交互式的执行体验,并且它有一些默认的参数来简化执行过程。反之 add 结尾的命令,则需要用户提供命令所需的所有参数。所以,如果是手动执行,则选择 add 开头的命令更好;而如果是脚本执行,则选择 add 结尾的命令更好。

如何将用户添加到组

用户除了在被创建时,被自动添加到默认的组中之外,还可以用以下命令将其添加到其它组中:

sudo usermod -g <group_name> <user_name>sudo usermod -G <group_name1>, <group_name2>, ..., <user_name>sudo usermod -aG <group_name1>, <group_name2>, ..., <user_name>
复制代码


小挑战:你能找到上面三个命令的区别吗?将你的答案写在评论区吧!


小窍门:使用groups命令查看用户所在的组


创建新用户到指定的组中:

sudo useradd -G <group_name>
复制代码


从组中移除用户:

sudo gpasswd -d <user_name> <group_name>
复制代码


用户头像

冯亮

关注

计算机从业人员和技术爱好者 2022.03.05 加入

我是冯亮,没事喜欢学点儿云计算

评论

发布
暂无评论
Linux知识库(4)- 用户 & 权限_Linux_冯亮_InfoQ写作社区