本文只介绍最基本的用户文件权限管理命令。
一、用户管理
1、用户分类
root 用户的 UID
为 0
,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
,亦可分别用数字 4
、2
、1
来表示。
文件权限的数字法表示基于字符表示(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