Linux 中用户与权限管理
本文只介绍最基本的用户文件权限管理命令。
文章目录
- 一、用户管理
- 1、用户分类
- 2、管理用户的命令
- 二、文件权限
- 1、权限的表示
- 2、使用管理员命令
- 1、用户分类
- 2、管理用户的命令
- 1、权限的表示
- 2、使用管理员命令
一、用户管理
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
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Python爬虫基础总结
- C# TASK使用实例
- [打造自己的监控系统之执行Oracle命令]获取Oracle执行次数等于一的语句(硬解析状况)
- [打造自己的监控系统之执行Oracle命令]检查未绑定变量的语句(硬解析状况)
- httpclient使用HTTP代理实践
- 使用Python利用微信企业号发送报警信息
- C# Task.Delay() 和 Thread.Sleep() 区别
- Csharp实例:武汉智能安检闸机数据接收和解析
- [周末往期回顾]Oracle基本参数(LOG_ARCHIVE_DEST_n)
- [周末往期回顾]Oracle基本参数(SGA_TARGET)
- C#如何释放已经加载的图片
- 笔记本内置摄像头视频播放和存储
- [Data Guard全解析]5.Data Guard及ADG日常运维操作
- [Oracle 数据库日常操作] 表空间的日常运维命令
- Java 反射 -超详细讲解(附源码)