Linux第二次周总结
第三章 用户管理
3.1 用户/组概览
Linux系统是多用户、多任务的分时操作系统,系统上每一个进程都有一个特定的文件,每个文件都被一个特定的用户所拥有。每个用户都属于一个用户组或者多个组,系统可以对一个用户组中的所有用户进行集中管理。
3.1.1 用户标识:UID与GID
Linux系统并不能识别用户名信息,所以每个用户都有唯一的系统可识别的UID。id命令可以查看当前用户登录信息。UID为用户的ID,GID为用户所属组的ID,groups为用户所有组的ID。
3.1.2 用户/组相关文件
在Linux系统中,所有用户的用户名和密码都存放在/etc/passwd和/etc/shadow这两个文件中。在/etc/passwd文件中,一行记录对应一个用户,每行记录又被冒号分隔为七个字段,依次为用户名称、密码占位符、用户UID、主组GID、注释性描述、用户主目录、用户的Shell;在/etc/shadow文件中,每行记录也由冒号分隔为九个字段,依次为用户名称、加密后的密码、最近改动密码时间、密码不可变更时间、密码重新变更时间、密码过期时间、密码过期宽恕时间、用户失效时间、保留。
3.1.3 超级用户
root用户可以拥有所有系统权限,而且root用户有权力覆盖文件系统上的所有普通权限。系统中大多数设备只能由root控制,如安装或删除软件、管理系统文件和目录等。
3.2 管理用户/组
管理用户与用户组主要是创建、更改与删除等操作。
3.2.1 创建用户/组
使用useradd命令创建用户,不指定任何选项,然后使用grep命令过滤出该用户信息。如果在使用useradd命令时加入了错误的设置数据,或者要对一些信息进行详细的修改,除了直接在/etc/passwd和/etc/shadow这两个文件中修改,也可以使用usermod与gpasswd命令。一个用户可以属于很多组。用户组的信息保存在/etc/group文件中,上面创建的组在该文件的尾部,使用tail命令查看新创建组并没有成员。
3.2.2 删除用户/组
如果一个用户需要被删除,可以使用userdel命令,但若想同时在/home目录与mail spool中删除该用户,则需要添加“-r”参数。若用户已不存在,可以使用“rm-rf”手动删除。
删除一个用户组可以使用groupdel命令,如果某个初始用户正在使用该用户组,则无法删除,此时需要修改该用户的GID或者直接删除该用户。
3.2.3 修改用户密码
任何用户都可以通过passwd命令修改自己的密码,只有root用户可以修改其他用户的密码。普通用户修改密码需要提供原密码。
3.2.4 安全用户
在创建用户时,通过“-s”参数指定用户的登录Shell为/sbin/nologin,可以将其设置为安全用户。当指定某个用户的登录Shell为/sbin/nologin时,此用户无论通过本地还是远程登录的方式都将不能登录系统,也无法实现系统管理。该用户仍可以使用FTP和邮件服务者这种不需要登录系统的服务。因此,这样的用户一般称为安全用户。
3.2.5 配置文件
/etc/login.defs与/etc/default/useradd是命令useradd的配置文件,决定useradd创建用户默认的参数,文件的配置对root用户无效。打开/etc/login.defs文件,第15行为邮件目录,第25~28行为密码相关配置,第71行为密码相关配置。
3.2.6 su/sudo命令
su命令可以进行身份切换,普通用户切换至root用户需要密码,root用户切换至普通用户则不需要密码;加入wheel组的普通用户可以使用sudo命令来执行系统相关操作,用户使用sudo时,必须先输入密码,之后有5分钟的有效时间,超过时限则必须重新输入密码。
3.3 本章小结
本章首先介绍用户与用户组标识符的意义、用户的Shell作用以及如何对用户与用户组进行增、删、改、查等操作;
其次,讲解了如何设置在/etc/passwd和/etc/shadow这两个文件以及useradd的文件配置;最后,演示了用户如何使用su命令进行身份切换,普通用户如何使用sudo命令提权。
Linux第二次周总结的更多相关文章
- Linux第二次学习笔记
#Linux第二次实验(第三周) 学习目标 熟悉Linux系统下的开发环境 熟悉vi的基本操作 熟悉gcc编译器的基本原理 熟练使用gcc编译器的常用选项 熟练使用gdb调试技术 熟悉makefile ...
- 高手养成计划基础篇-Linux第二季
高手养成计划基础篇-Linux第二季 本文来源:i春秋社区-分享你的技术,为安全加点温度 前言 前面我们学习了文件处理命令和文件搜索命令,简单的了解了一下Linux,但是仅仅了解这样还不行,遇 ...
- Linux第五周学习总结——扒开系统调用的三层皮(下
Linux第五周学习总结--扒开系统调用的三层皮(下) 作者:刘浩晨 [原创作品转载请注明出处] <Linux内核分析>MOOC课程http://mooc.study.163.com/co ...
- Linux第六周学习总结——进程额管理和进程的创建
Linux第六周学习总结--进程额管理和进程的创建 作者:刘浩晨 [原创作品转载请注明出处] <Linux内核分析>MOOC课程http://mooc.study.163.com/cour ...
- Linux第七周学习总结——可执行程序的装载
Linux第七周学习总结--可执行程序的装载 作者:刘浩晨 [原创作品转载请注明出处] <Linux内核分析>MOOC课程http://mooc.study.163.com/course/ ...
- chattr - 修改文件在Linux第二扩展文件系统(E2fs)上的特有属性
SYNOPSIS(总览) chattr [ -RV ] [ -v version ] [ mode ] files... DESCRIPTION(描述) chattr 修改文件在Linux第二扩展文件 ...
- lsattr - 显示文件在Linux第二扩展文件系统上的特有属性
SYNOPSIS(总览) lsattr [ -RVadv ] [ files... ] DESCRIPTION(描述) lsattr 显示文件在Linux第二扩展文件系统上的特有属性 OPTIONS( ...
- Linux第二周学习总结——操作系统是如何工作的
第二周学习总结--操作系统是如何工作的 作者:刘浩晨 [原创作品转载请注明出处] <Linux内核分析>MOOC课程http://mooc.study.163.com/course/UST ...
- 20135316王剑桥 linux第二周课实验笔记
Linux中命令格式为: command [options选项] [arguments参数] //中括号代表是可选的,即有些命令不需要选项也不需要参数 ls或ls .显示是当前目录的内容,这里“.”就 ...
- 20135337朱荟潼 Linux第二周学习总结——操作系统是如何工作的
一.计算机是如何工作的--总结 三个法宝 存储程序计算机.函数调用堆栈.中断机制 二.堆栈 1.是c语言程序运行时必须的一个记录调用路径和参数的空间. 函数调用框架.传递参数.保存返回地址.提供局部变 ...
随机推荐
- Java 输入字符串,统计大写字母,小写字母,数字字符的个数
代码如下: public static void main(String[] args) { String str = "AaFsECvcS12483fs+-*/"; int bi ...
- SQL Server 根据一个表数据修改另外一个表数据
今天在写代码的时候发现一个有趣的问题,同时也暴露了之前写的代码有问题,还好之前没有出现重复的情况,及时发现了这个问题,及时改了回来,不然就GG了 下面先上代码,再给大家解说一下 CREATE TABL ...
- 【Shell】ps 命令
ps 命令 Linux ps (英文全拼:process status)命令用于显示当前进程的状态,类似于 windows 的任务管理器. 1. ps 常用的命令 ps -aux #显示所有进程信息 ...
- 【Jenkins】 GitLab Gitee GitHub 部署
Jenkins GitLab Gitee GitHub 部署 环境 Jenkins Git Maven Jenkins 部署可参考文章:https://www.cnblogs.com/cxt618/p ...
- 你知道.NET的字符串在内存中是如何存储的吗?
毫无疑问,字符串是我们使用频率最高的类型.但是如果我问大家一个问题:"一个字符串对象在内存中如何表示的?",我相信绝大部分人回答不上来.我们今天就来讨论这个问题. 一.字符串对象的 ...
- 模拟ArrayList(顺序表)的底层实现
模拟ArrayLIst的底层实现 package com.tedu.api04.list; import java.util.Objects; /** * @author LIGENSEN * Dat ...
- java使用apache.poi导出word文件
功能说明: 将试卷导出word,并可以打印,装订,效果图: 下面是实现代码: package com.xxxxx.business.course.utils; import com.alibaba.f ...
- python:时间模块dateutil
安装 pip install python-dateutil dateutil模块主要有两个函数,parser和rrule. 其中parser是根据字符串解析成datetime,而rrule则是根据定 ...
- 在Volo.Abp微服务中使用SignalR
假设需要通过SignalR发送消息通知,并在前端接收消息通知的功能 创建SignalR服务 在项目中引用 abp add-package Volo.Abp.AspNetCore.SignalR 在Mo ...
- [prometheus]基于influxdb2实现远端存储
前言 Prometheus自带的时序数据库胜在使用方便,缺点在于难以维护,如果数据有问题,可能需要删除存储目录.重建目录再重启Prometheus,才能恢复正常.而且Prometheus自带的时序数据 ...