Linux 用户面试常见问题和高级进阶| 学习笔记

简介: 快速学习Linux 用户面试常见问题和高级进阶

开发者学堂课程【Linux企业运维实战 - 入门及常用命令Linux 用户面试常见问题和高级进阶】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/550/detail/7611


Linux 用户面试常见问题和高级进阶


内容介绍:

一、新建用户的相关文件和命令

二、用户属性修改

三、删除用户

四、查看用户相关的 ID 信息

五、切换用户或以其他用户身份执行命令

六、设置密码

七、修改用户密码策略

八、用户相关的其它命令

九、创建组

十、修改和删除组

十一、更改组密码

十二、更改和查看组成员


一、新建用户的相关文件和命令

◆/etc/default/useradd

◆/etc/skel/*

◆/etc/login.defs

◆newusersI passwd 格式文件 批量创建用户

◆chpasswd 批量修改用户口令

在创建用户的时候,每次都是创建一个用户,那可不可以用 useradd 命令一次创建多个用户,答案是不可以,语法不支持。

 

比如说把一系列账号迁移到新主机上,可以把所有的内容放到一个文件里去,存盘,现在把这个文件传到新主机上,可以用远程复制的命令 scp 命令,后面跟文件名,再加上远程复制的 ip,第一次会询问 yes or no,回答 yes,再输入口令,会发现内容已复制,再使用 newusers 实现批量的账号的创建。

 

账号创建完没有口令,如果要设口令怎么批量?可以创建一个账号为 nano pass.txt 来专门放口令,口令格式为例“app1:redhat”前面为用户名后面为密码,再使用 cat pass.txt丨chpasswd 命令完成口令设置。

 

二、用户属性修改

◆usermod [OPTION] login

-u UID :新 UID

-g GID :新主组

-G GROUP1[,GROUP..[,GROUPN]]] :新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使用 -a 选项

-S SHELL :新的默认 SHELL

-C 'COMMENT' :新的注释信息

-d HOME :新家目录不会自动创建;若要创建新家目录并移动原家数据,同时使用 -m 选项

-l login_ name :新的名字;

-L: lock 指定用户,在 /etc/shadow 密码栏的增加!

-U: unlock 指定用户,将 /etc/shadow 密码栏的!拿掉

-e YYYY-MM-DD :指明用户账号过期日期

-f INACTIVE :设定非活动期限

 

比如说现在使用 usermod G bin wang 命令将 wang 账号加到了 bin 里面,再使用 usermod –G root wang 命令想把 wang 加到 root 里面,那么原来的 bin 账号就会丢失,因为这是默认的覆盖行为。

如果想保留原来的,那么就要再加一个选项 a,改为命令 usermod –aG root wang 实现追加。

 

如果想把所有的附加组全删了,可以用空命令 usermod –G “ ” wang 使 wang 账号不属于任何一个组。

 l 只是修改用户名,家目录都未修改。

 

三、删除用户

userdel [OPTION]... login

-r :删除用户家目录

 

在删除用户的时候默认是不会删除用户的家目录和邮箱的,如果想在删除账号的时候顺便把家目录和邮箱都给删了,就可以加 r。平常不加 r,因为虽然账号没用,但账号里面所包含的数据有时还有用。

 

四、查看用户相关的 ID 信息

◆id [OPTION]... [USER]

-u:显示 UID

-g:显示 GID

-G:显示用户所属的组的 ID

-n:显示名称,需配合 ugG 使用

 

比如说 id wang 命令可以显示所有的 id,id u wang 命令显示 uid,id g wang 命令显示主组的 id,id G wang 显示附加组的 id,-n 显示名称,意思是不仅显示数字,还会显示名字。

 

Id 命令经常用来判断某个用户的信息,最主要的是用来判断用户是否存在,在创建账号时就可以使用用来判断是不是已存在。

 

五、切换用户或以其他用户身份执行命令

su [option...] [-] [user [arg...]]

◆切换用户的方式:

su UserName :非登录式切换,即不会读取目标用户的配置文件,不改变当前工作目录

su - UserName :登录式切换,会读取目标用户的配置文件,切换至家目录,完全切换

 

◆root su 至其他用户无须密码;非 root 用户切换时需要密码

◆换个身份执行命令:

su [-] UserName -c 'COMMAND'

◆选项: -l --login

su -l UserName 相当于 su UserName

 

su 就是 switch user 就是切换用户,su 后面直接跟用户就行,但这样切换保留了用户的部分信息,不是彻底的切换。

 

对应的有另外一种切换为完全切换,就是在 su 和用户之间插入减号。例如 su wang 这就实现了彻底切换,连家目录也换成了 wang 账号对应的值了,就像重新登录了一样。

 

如果现在已经是 wang 账号了,现在要切换成 root,可以不用输入 root,因为默认情况下就是切换 root,但是这时候就需要输入口令了。

Root 切换成普通用户不需要输入口令,但普通用户切换成 root 就需要输入口令。生产中一般都是用普通用户登录,需要管理了再登录 root。

 

切换身份用 c,无需切换用户,可以切换查看信息。不要来回切,切一次就退回去,用 exit 或者是 logout。

 

六、设置密码

◆passwd [OPTIONS] UserName :修改指定用户的密码

◆常用选项:

-d:删除指定用户密码

-I:锁定指定用户

-u:解锁指定用户

-e:强制用户下次登录修改密码

-f:强制操作

-n mindays:指定最短使用期限

-x maxdays :最大使用期限

-w warndays :提前多少天开始警告

-i inactivedays :非活动期限

--stdin :从标准输入接收用户密码

echo " PASSWORD"丨passwd- -stdin USERNAME

 

-I 为锁定指定用户,-u 为解锁指定用户,这两个与 usermod 里面的 L和 U 有异曲同工之处,-e 是强制用户下次登录修改密码,在刚刚我们已经执行过,相当于把用户改口令的时间清除成零。

 

-n mindays 为指定最短使用期限,-x maxdays 为最大使用期限,-w warndays 为提前多少天开始警告,这三个使用频繁。另外 echo " PASSWORD"丨passwd- -stdin USERNAME 命令需要注意,经常在账号创建好之后设置初始口令时使用,这样带来的好处就是不需要设置两边口令了。

 

七、修改用户密码策略

◆chage [OPTION] LOGIN

-d LAST_ DAY

-E--expiredate EXPIRE_ DATE

-I --inactive INACTIVE

-m --mindays MIN DAYS

-M--maxdays MAX_ _DAYS

-W --warndays WARN_ DAYS

-l显示密码策略

 

◆示例:

chage -d 0 tom下一次登录强制重设密码

chage -m 0-M 42-W 14-I 7 tom

chage -E 2016-09-10 tom

 

chage的用法在上述也反复提出过,相关命令如passwd,另外 l 为显示密码策略。

这些命令的设用相对来说使用不是那么频繁,只需要了解,不需要太大掌握。

 

八、用户相关的其它命令

◆chfn 指定个人信息

◆chsh 指定 shell

finger

 

九、创建组

◆groupadd [OPTION]... group_ name

-g GID:指明 GID 号; [GID_ MIN, GID_ _MAX]

-r:创建系统组

CentOS 6: ID<500

CentOS 7: ID<1000

 

-g 创建单独组可以指定 id 号,-r 为创建系统组。

现在想创建一个账号作为主组,我们知道在创建账号 nginx 时会自动创建一个组也叫 nginx,但是创建组的 id 和用户 id 不一定相同,如果希望相同就可以指定 id,

比如说 groupadd g 1234 nginx 命令创建组 nginx,再使用 useradd g nginx u 1234 nginx 命令创建用户,这样就可以保证 id 相同。

 

十、修改和删除组

◆组属性修改: groupmod

groupmodr[OPTION]... group

-n group_ name: 新名字

-g GID:新的GID

 

◆组删除: groupdel

groupdel GROUP

 

现在有一个 id wang 账号,使用 groupdel wang 命令想要删除 wang 会发现报错,这是因为 wang 这个组是某个账号主组,所以得知账号的主组不可以删除,但附加组是可以删除的。删账号也是,正在使用的账号不可以删除。

 

十一、更改组密码

◆组密码: gpasswdr

◆gpasswd [OPTION] GROUP

-a user 将 user 添加至指定组中

-d user 从指定组中移除用户 user

-A userl,user2... 设置有管理权限的用户列表

◆newgrp 命令:临时切换主组

如果用户本不属于此组,则需要组密码

 

更改组密码后面跟组名。但是这个命令也可以用来往组里加账号,比如创建一个组 groupadd g1 这个组新创建没有内容,现在想要把 wang 账号添加进去就可以使用 gpasswd a wang g1 命令。

 

要想查看 g1 组里所包括的成员,使用 gropumems l g g1 就可以查看 g1 组里的成员。也可以用 -d 的命令将 wang 账号从 g1 里删掉。

使用 groups wang 命令就可以查看这个账号属于哪个组,注意后面跟的是用户名。

-A 是设置账号为这个组的管理员。

 

十二、更改和查看组成员

◆groupmems [options] [action]

options :

-g, --group groupname更改为指定组 (只有root)

Actions:

-a, --add username   指定用户加入组

-d,--delete username 从组中删除用户

-P,--purge    从组中清除所有成员

-l, --list    显示组成员列表

 

◆groups [OPTION].[USERNAME]...查看用户所属组列表

 

其中 d 只是删除其中一个用户,但 p 是全部清除。

 

总结:

Useradd

Usermod

Userdel

Groupadd

Groupmod

Groupdel

Groupmems

Gpasswd

Passwd

Chfn

Chsh

Chage

Chpasswd

Newusers

Pwconv

Pwck(检查格式)

Grpck(检查 group 格式)

Finger

Getent passw|group|shadow|gshadow

Su(切换)

Newgrp(临时切换主组)

Vipw

Vipr

Auth(修改加密)

Scp(远程拷贝文件)

Mail(收邮件)

Tr

Tee

Seq(生成数字序列)

Lsb_release(查看版本号)

Lpr(打印)

 

作业:

1、处理字符串“xt.,1 1 jr#!$mn 2 c*/fe 3 uz 4”,只保留其中的数字和空格

2、将PATH变量每个目录显示在独立的一行

3、将指定文件中0-9分别替代成a-j

4、将文件/etc/centos-release中每个单词(由字母组成)显示在独立的一行,并无空行

5、所有命令

 

相关文章
|
2月前
|
Shell Linux 开发工具
【Shell 命令集合 文件管理】Linux 高级的文件管理器 mc 命令解析
【Shell 命令集合 文件管理】Linux 高级的文件管理器 mc 命令解析
44 0
|
2月前
|
传感器 数据采集 存储
ARM Linux摄像头传感器数据处理全景视野:从板端编码视频到高级应用(一)
ARM Linux摄像头传感器数据处理全景视野:从板端编码视频到高级应用
79 0
|
2月前
|
Linux 数据处理 C++
Linux系统编程 C/C++ 以及Qt 中的零拷贝技术: 从底层原理到高级应用(一)
Linux系统编程 C/C++ 以及Qt 中的零拷贝技术: 从底层原理到高级应用
81 0
|
2月前
|
存储 Linux API
Linux系统编程 C/C++ 以及Qt 中的零拷贝技术: 从底层原理到高级应用(三)
Linux系统编程 C/C++ 以及Qt 中的零拷贝技术: 从底层原理到高级应用
35 1
|
2月前
|
消息中间件 Linux 数据处理
Linux系统编程 C/C++ 以及Qt 中的零拷贝技术: 从底层原理到高级应用(二)
Linux系统编程 C/C++ 以及Qt 中的零拷贝技术: 从底层原理到高级应用
37 1
|
2月前
|
传感器 Linux 数据处理
ARM Linux摄像头传感器数据处理全景视野:从板端编码视频到高级应用(二)
ARM Linux摄像头传感器数据处理全景视野:从板端编码视频到高级应用
47 1
|
7天前
|
运维 监控 Unix
【专栏】Linux 系统管理员面试问题
【4月更文挑战第28天】本文概述了Linux系统管理员面试中的常见问题,涵盖基础知识、系统管理和故障排查。面试官会询问Linux与Unix的关系、内核功能、文件系统类型、权限位、用户组概念、链接类型、输入输出、进程和环境变量等。此外,还会涉及软件安装、服务配置、日志监控、网络管理、防火墙配置、LVM、RAID、用户管理、备份策略等实践技能。故障排查和脚本编程能力也是重点,包括系统故障分析、脚本在系统管理中的应用、磁盘空间管理、服务故障诊断及性能优化。准备面试的求职者应注重理论与实践经验的结合,持续学习以提升专业能力。
|
12天前
|
编解码 Linux 数据安全/隐私保护
linux工具之curl与wget高级使用
linux工具之curl与wget高级使用
|
20天前
|
Linux Go
Linux命令Top 100驱动人生! 面试必备
探索Linux命令不再迷茫!本文分10部分详解20个基础命令,带你由浅入深掌握文件、目录管理和文本处理。 [1]: <https://cloud.tencent.com/developer/article/2396114> [2]: <https://pan.quark.cn/s/865a0bbd5720> [3]: <https://yv4kfv1n3j.feishu.cn/docx/MRyxdaqz8ow5RjxyL1ucrvOYnnH>
70 0
|
2月前
|
传感器 存储 编解码
ARM Linux摄像头传感器数据处理全景视野:从板端编码视频到高级应用(三)
ARM Linux摄像头传感器数据处理全景视野:从板端编码视频到高级应用
54 2