linux 基础(7)账号和群组的管理
了解账号和群组的基本信息
账号使用
如何查看 linux 计算机上有哪些账号呢?账号的信息储存在/etc/passwd中,打开就可以看到:
less /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
...
lighthouse:x:1000:1000::/home/lighthouse:/bin/bash
...
每一行代表一个账号的相关信息,用冒号分隔。除了安装时注册的个人账号和 root,还有 bin, daemon, adm, nobody 等各种系统账号,一般不需要管他。
第一列是账号名称,第二列是一个“x”,在老版本用来储存密码,现在密码移动到了/etc/shadow中,这一列就不再使用。
第三列代表这个用户的 UID。在 linux 中,用户名只是给人看的,机器储存用户数据都使用 UID。比如你修改了自己的 UID,而你的文件里储存的所有者还是原来的 UID,此时你的文件就不在属于你了。root 的 UID 是 0。普通用户的 UID 一般从 1000 开始。
第四列代表用户所属主要群组的群组 GID。第五列是该账号的文字说明(给人看的)。
第六列代表这个用户的主文件夹。第七列代表该用户登录后取得的 shell 是哪个。其中有个特殊的/sbin/nologin,代表没有 shell,所以这些用户即使输入了账号密码也无法登陆。
接下来再看看管理密码的/etc/shadow。
root:$1$GEIBZMzb$PEV.S1LMYYkII.YBGBOvL/:19370:0:99999:7:::
bin:*:17834:0:99999:7:::
daemon:*:17834:0:99999:7:::
adm:*:17834:0:99999:7:::
lp:*:17834:0:99999:7:::
sync:*:17834:0:99999:7:::
在这个文件中,第一列仍然是用户名,第二列就是密码了。不过这个密码是哈希加密过的,即使能看到,你也不能反推原文(不同distribution 和版本的加密算法有所不同)。如果一般用户忘记了密码,可以让 root 进行重置;如果忘记了 root 的密码,就只能使用单人维护模式登录重置了,但你并不能知道原来的密码。
之后几列都和密码过期提示有关,第三列代表最近更改密码的日期(Unix纪日法),第四列是密码更改的冷却时间,第五列表示密码强制更改的时间,第六列代表密码强制更改的时间的提醒时间。第七列代表密码过期的宽限时间。当密码时间到期时,再登陆会要求强制修改密码才能使用,如果宽限时间也到期,那这个密码就失效,再也不能登录了。99999天是273年,相当于永不过期。
第八列是账号失效日期,账号失效日期以后这个账号将被停用。
群组使用
群组记录在/etc/groups里
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
...
第一列代表群组名称,第二列代表群组密码(仍然用 x 代替),第三列代表这个群组的 GID,第四列代表这个群组的成员。
一个群组包含多个用户,一个用户也可以加入多个群组,在/etc/passwd里,每个用户只记录了一个 GID,这个就是用户的初始组(initial group),默认和用户名相同,只有你一个人。而/etc/groups中这个群组第四列也不需要记录这个成员。
有效群组(effective group)则表示当前使用哪一个群组工作,它控制你新创建的文件属于哪个群组。使用groups命令可以查看你属于那些群组,其中第一个就是当前的有效群组。切换有效群组使用newgrp命令,这个命令会打开一个新shell,其中你的有效群组可以变更为其他群组。
账号和群组的增删改查
增加和删除用户
各种指令可以用来创建新用户,需要 root 才能操作。useradd可以添加新用户。passwd可以给用户赋予密码
useradd test # 添加账号test
useradd 会写入/etc/passwd,shadow,group并创建主文件夹。在大部分 distribution 中,新用户默认会创建一个只有自己的群组作为初始群组。
useradd的参数可以配置用户的所有信息,包括 UID GID,主文件夹,shell等。
刚创建的账号暂时不可登录,用passwd可以给用户赋予密码。
passwd test
# 接下来键盘输入密码,或者使用--stdin接受管线输入
用户一般只能修改自己的密码,先输入旧密码,在输入新密码,PAM验证模块会保证你的密码强度(限制密码长度,限制密码和账号相同,限制常见单词)。root无需旧密码就可以修改,且没有任何限制。
usermod用于编辑已存在的用户配置,参数和添加用户基本相同。
usermod [-cdegGlsuLU] test
-c: 账号说明
-d: 主文件夹
-L: 冻结密码
...
userdel可以删掉一个用户。移除 passwd, shadow, group里的信息,清除主文件夹。
userdel test
输入id查看一个用户的信息。
id root
uid=0(root) gid=0(root) groups=0(root)
增加和删除群组
和用户类似,相应的命令可以添加,编辑,删除群组
groupadd tgroup
groupmod -n tgroupnew
groupdel tgroupnew
使用 su 和 sudo 切换账号
su 和 sudo 用来切换成其他账号身份执行命令。
su # 切换为 root(non-login)
su - # 切换为 root(login)
su test # 切换为 test(non-login)
su - test # 切换为 test(login)
接下来 su 需要对应用户的密码。sudo 则只需要自己的密码
sudo cat /etc/shadow # 以 root 身份执行命令
# 输入自己的密码
sudo -u www touch default # 以 www 身份创建文件
sudo -i # 登录 root 用户
sudo又不用输入root密码,有了 sudo,岂不是就跟root没区别了?实际上,sudo 的相关信息储存在/etc/sudoer中。这里写明了“哪些用户可以用sudo,用sudo可以做哪些指令,哪些指令需要密码确认”。
sudo vim /etc/sudoers
root ALL=(ALL) ALL
## Allows members of the 'sys' group to run networking, software,
## service management apps and more.
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
## Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL
lighthouse ALL=(ALL) NOPASSWD: ALL
#代表注释,横排则代表一条信息。在我这里 root 可以随机执行sudo做任何事,lighthouse 也可以随意使用sudo,且不需要密码。%wheel代表 wheel 群组,这个群组的成员也可以随意执行sudo。有大量的信息被注释掉了备用,如果需要可以取消注释。
linux 基础(7)账号和群组的管理的更多相关文章
- LINUX 学习笔记 账号与群组的管理
LINUX 账号与群组的管理 UID:UserID 保存文件:/etc/passwd GID:GroupID 保存文件:/etc/group /etc/passwd 文件结构 一行代表一个账号,里面还 ...
- Linux基础-3.用户、群组和权限
1.用户及passwd文件 1)掌握/etc/passwd文件的功能:存储所有用户的相关信息,每一个用户占用一行记录,该文件也被称为用户信息数据库(Database) 2)/etc/passwd文件中 ...
- Linux基础-03-用户、群组
1. 用户及passwd文件 1) /etc/passwd文件的功能:存储所有用户的相关信息,该文件也被称为用户信息数据库(Database). 2) /etc/passwd文件每个字段的具体含义: ...
- linux基础命令--groupdel 删除群组
描述 groupdel命令用于删除用户组. groupdel命令会去修改系统下的/etc/group和/group/gshadow文件,删除有关用户组的所有项目(一般来说使用groupadd或user ...
- Linux 的账号与群组[转自vbird]
Linux 的账号与群组 管理员的工作中,相当重要的一环就是『管理账号』啦!因为整个系统都是你在管理的, 并且所有一般用户的账号申请,都必须要透过你的协助才行!所以你就必须要了解一下如何管理好一个服务 ...
- Linux学习之CentOS(十)----Linux 的账号与群组
Linux 的账号与群组 管理员的工作中,相当重要的一环就是『管理账号』啦!因为整个系统都是你在管理的, 并且所有一般用户的账号申请,都必须要透过你的协助才行!所以你就必须要了解一下如何管理好一个服务 ...
- Linux学习之CentOS(四)----Linux文件属性、所有者、群组、其他组及文件权限操作简要总结
Linux文件属性.所有者.群组.其他组及文件权限操作简要总结 首先介绍一个重要的知识点:文件属性控制权限 [root@www ~]# ls -al total 156 drwxr-x--- 4 ro ...
- linux中的用户、群组和权限
linux中的用户.群组和权限 新建用户natasha,uid为1000,gid为555,备注信息为“master” groupadd -g 555 natasha useradd -u 1 ...
- Linux学习-Linux的账号与群组
使用者识别码: UID 与 GID Linux 主机并不会直接认识 你的"帐号名称"的,他仅认识 ID 啊 (ID 就是一组号码啦). 由于计算机仅认识 0 与 1,所 以主机对于 ...
- linux命令之 用户和群组
一.保存用户信息的文件 1 /etc/passwd root:x:::root:/root:/bin/bash pwftp:x::::/alidata/www/wwwroot/:/sbin/nolog ...
随机推荐
- 部署grafana+telegraf+influxdb 及 配置 jmeter后端监听
搞性能测试,可以搭建Grafana+Telegraf+InfluxDB 监控平台,监控服务器资源使用率.jmeter性能测试结果等. telegraf: 是一个用 Go 编写的代理程序,可收集系统和服 ...
- Graceful Java之try...catch()
[优美的Java代码之try...catch] 目录 概述 优化 优化前写法(JDK1.7之前) 优化后写法(JDK1.7及以后) 延伸阅读:嵌套的文件流如何正确的关闭 概述 通常我们使用try... ...
- 【题解】P7860 [COCI2015-2016#2] ARTUR
题面传送门 好题. 主要思路和另一位巨佬差不多,详细讲一下判断的部分. 解决思路: 首先考虑本题与拓扑排序有和关系.可以想到,某些棍子的先后移动顺序是有限制的.比如: 这里红色的必须比蓝色的先移动,因 ...
- 使用 Go HTTP 框架 Hertz 进行 JWT 认证
前言 上一篇文章简单介绍了一个高性能的 Go HTTP 框架--Hertz,本篇文章将围绕 Hertz 开源仓库的一个 demo,讲述如何使用 Hertz 完成 JWT 的认证与授权流程. 这里要说明 ...
- ENS框架下一次控制灯的调试记录
正常流程 登录小站,点击管理--磁盘,在硬盘下创建分区并挂载 安全下电,拔掉硬盘和TEC,再上电 硬件端 drv_fault_check_init 初始化 并绑定硬件回调 drv_fault_chec ...
- combobox 只能选择第一个
在使用combobox时有时对于特定的下拉框内容我们一般不需要去请求url获得值,我们只用在js里面控制就好了,昨天遇到的问题是在js里面按照api给的方法写进去,显示是正常的 但是当我去选择的时候发 ...
- Dev-Cpp下载与安装
目录 一.介绍 Dev-Cpp 二.下载 Dev-Cpp 1.通过百度网盘下载 2.通过 SourceForge 官网下载 三.安装 Dev-Cpp 写在结尾的话 免责声明 大家好,这里是 main工 ...
- PostgreSQL函数:查询包含时间分区字段的表,并更新dt分区为最新分区
一.需求 1.背景 提出新需求后,需要在www环境下进行验收.故需要将www环境脚本每天正常调度 但由于客户库无法连接,ods数据无法每日取,且连不上客户库任务直接报错,不会跑ods之后的任务 故需要 ...
- 【每日一题】【快慢指针相遇】2022年1月25日-NC3 链表中环的入口结点
描述给一个长度为n链表,若其中包含环,请找出该链表的环的入口结点,否则,返回null. 答案: /* public class ListNode { int val; ListNode next = ...
- 深入理解 Python 的对象拷贝和内存布局
深入理解 Python 的对象拷贝和内存布局 前言 在本篇文章当中主要给大家介绍 python 当中的拷贝问题,话不多说我们直接看代码,你知道下面一些程序片段的输出结果吗? a = [1, 2, 3, ...