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
Linux shell编程学习笔记30:打造彩色的选项菜单
Linux shell编程学习笔记30:打造彩色的选项菜单
|
20天前
|
并行计算 Ubuntu Linux
Ubuntu学习笔记(三):Linux下操作指令大全
Ubuntu学习笔记,介绍了Linux操作系统中常用的命令和操作,如文件管理、系统信息查看、软件安装等。
38 3
|
23天前
|
算法 Java 数据中心
探讨面试常见问题雪花算法、时钟回拨问题,java中优雅的实现方式
【10月更文挑战第2天】在大数据量系统中,分布式ID生成是一个关键问题。为了保证在分布式环境下生成的ID唯一、有序且高效,业界提出了多种解决方案,其中雪花算法(Snowflake Algorithm)是一种广泛应用的分布式ID生成算法。本文将详细介绍雪花算法的原理、实现及其处理时钟回拨问题的方法,并提供Java代码示例。
50 2
|
2月前
|
Shell Linux
Linux shell编程学习笔记82:w命令——一览无余
Linux shell编程学习笔记82:w命令——一览无余
|
3月前
|
存储 运维 Shell
运维.Linux.bash学习笔记.数组及其使用
运维.Linux.bash学习笔记.数组及其使用
32 0
|
3月前
|
JavaScript 前端开发 Java
常见问题:Go的面试问题和答案(2)
常见问题:Go的面试问题和答案(2)
|
3月前
|
存储 Java 程序员
常见问题:Go的面试问题和答案(1)
常见问题:Go的面试问题和答案(1)
|
4月前
|
Linux 编译器 Shell
拼多多面试 Linux下一个应用程序开始执行到main被调用之间经历了什么?
在Linux中,程序启动到`main`调用涉及加载器、内核、动态链接器和C运行时。`execve`系统调用加载ELF文件,内核创建进程,加载段,设置栈和调用动态链接器。动态链接器解析符号,重定位,执行初始化。C运行时初始化堆栈,调用`main`。从`_start`到`main`的流程包括环境设置和函数调用。
68 0
|
5月前
|
存储 NoSQL MongoDB
MongoDB实战面试指南:常见问题一网打尽
MongoDB实战面试指南:常见问题一网打尽
|
5月前
|
Linux C++
c++高级篇(三) ——Linux下IO多路复用之poll模型
c++高级篇(三) ——Linux下IO多路复用之poll模型