本文只介绍最基本的用户文件权限管理命令。

一、用户管理

1、用户分类

root 用户的 UID0,UID 即 User IDentification。

在 Linux 系统中,UID 就相当于我们的身份证号码一样具有唯一性,因此可通过用户的 UID 值来判断用户身份。

  • 管理员 UID 为 0:系统的管理员用户。
  • 系统用户 UID 为 1~999: 默认服务程序会有独立的系统用户负责运行。
  • 普通用户 UID 从 1000 开始:是由管理员创建的用于日常工作的用户。

Linux 系统中引入了用户组的概念。通过使用用户组号码(GID,Group IDentification),我们可以把多个用户加入到同一个组中,从而方便为组中的用户统一规划权限或指定任务。

使用用户组的栗子

假设有一个公司中有多个部门,每个部门中又有很多员工。如果只想让员工访问本部门内的资源,则可以针对部门而非具体的员工来设置权限。例如,可以通过对技术部门设置权限,使得只有技术部门的员工可以访问公司的数据库信息等。

2、管理用户的命令

增加用户

useradd 命令用于创建新的用户,格式为“useradd [选项] 用户名”。

可以使用 useradd 命令创建用户账户。使用该命令创建用户账户时,默认的用户家目录会被存放在/home 目录中,默认的 Shell 解释器为/bin/bash,而且默认会创建一个与该用户同名的基本用户组

创建用户组

groupadd 命令用于创建用户组,格式为“groupadd [选项] 群组名”。

使用用户组的好处是可以针对一类用户统一安排权限。

修改用户属性

usermod 命令用于修改用户的属性,格式为 “usermod [选项] 用户名” 。

用户的信息保存在/etc/passwd 文件中,可以直接用文本编辑器来修改其中的用户参数项目,也可以用 usermod 命令修改已经创建的用户信息,诸如用户的 UID、基本/扩展用户组、默认终端等。


修改密码

passwd 命令用于修改用户密码、过期时间、认证信息等,格式为“passwd [选项] [用户名]”。

普通用户只能使用 passwd 命令修改自身的系统密码,而 root 管理员则有权限修改其他所有人的密码。最重要的是 root 管理员在 Linux 系统中修改自己或他人的密码时不需要验证旧密码,这一点特别方便。

删除用户

userdel 命令用于删除用户,格式为“userdel [选项] 用户名”。

如果我们确认某位用户后续不再会登录到系统中,则可以通过 userdel 命令删除该用户的所有信息。在执行删除操作时,该用户的家目录默认会保留下来,此时可以使用-r 参数将其删除。

二、文件权限

在说文件的属性之前先来聊一下文件的类型。

Linux 系统使用了不同的字符来区分文件的类型:

  • -:普通文件。
  • d:目录文件。
  • l:链接文件。
  • b:块设备文件。
  • c:字符设备文件。
  • p:管道文件。

1、权限的表示

对于普通文件,在 Linux 系统中,每个文件都有所属的所有者和所有组,并且规定了文件的所有者、所有组以及其他人对文件所拥有的 可读(r)可写(w)可执行(x) 等权限。

对于目录文件,对目录文件来说,“可读” 表示能够读取目录内的文件列表;“可写” 表示能够在目录内新增、删除、重命名文件;而 “可执行” 则表示能够进入该目录。

而文件的读、写、执行权限可以简写为 rwx,亦可分别用数字 421 来表示。

文件权限的数字法表示基于字符表示(rwx)的权限计算而来,其目的是简化权限的表示。

栗子

例如,若某个文件的权限为 7 则代表可读、可写、可执行(4+2+1);若权限为 6 则代表可读、可写(4+2)。

假如现在有这样一个文件,其所有者拥有可读、可写、可执行的权限,其文件所属组拥有可读、可写的权限;而其他人只有可读的权限。那么,这个文件的权限就是 rwxrw-r--,数字法表示即为 764


如图所示,包含了文件的类型、访问权限、所有者(属主)、所属组(属组)、占用的磁盘大小、修改时间和文件名称等信息。通过分析可知,该文件的类型为普通文件,所有者权限为可读、可写(rw-),所属组权限为可读(r--),除此以外的其他人也只有可读权限(r--),文件的磁盘占用大小是 34298 字节,最近一次的修改时间为 4 月 2 日的凌晨 23 分,文件的名称为 install.log。

2、使用管理员命令

从普通用户切换的管理员的命令为 sudo su,从管理员切换到普通用户时使用 su name命令,name 是用户名,如果是这样su - name代表把环境变量信息也变更为新用户的相应信息,而不是保留原始的信息。

在任何命令之前加上 sudo 都代表以管理员的身份运行。

如果担心直接修改配置文件会出现问题,则可以使用 sudo 命令提供的 visudo 命令来配置用户权限。

root ALL=(ALL) ALL
name ALL=(ALL) ALL

然后就可以就可以用 sudo 命令执行管理员的命令了(验证的是该普通用户的密码,而不是 root管理员的密码)。

在每次执行 sudo 命令后都会要求验证一下密码。虽然这个密码就是当前登录用户的密码,但是每次执行 sudo 命令都要输入一次密码其实也挺麻烦的,这时可以添加 NOPASSWD 参数(注意后面有个冒号),使得用户执行 sudo 命令时不再需要密码验证:

root ALL=(ALL) ALL
name ALL=NOPASSWD: ALL