Linux背景知识(四):本地用户管理

介绍用户管理的概念,并结合实例进行讲解!


目录


用户的概念

1. whoami命令

whoami打印当前用户名

这里写图片描述

2. who命令

who列出log进当前系统的所有用户

这里写图片描述

3. who am i

who am i仅显示一行,打印当前进行的任务

这里写图片描述

4. w

wwho的升级版,另外显示这些用户在干嘛

这里写图片描述

5. id

id当前用户id、主要用户组id和你属于的用户组列表

这里写图片描述

6. su

su命令用来切换用户

这里写图片描述


root用户和super用户

切换到root用户,就等于开启了“上帝模式”

通常我们认为root user和super user,两者是同一个东西

1. root用户可以随意切换到别的用户而不需要密码

这里写图片描述*

2. sudo

sudo即super user do,暂时以super用户执行某个命令——super用户基本上意味着root用户的执行权限

语法格式sudo 需要权限的命令

这里写图片描述

2. /etc/sudoers文件

Unix/Linux系统的/etc/sduoers文件留给super用户编辑,用来分配用户的系统权限(即,什么人,做什么事)

在命令行敲sudo vi /etc/sudoers

找到这样两行

这里写图片描述

好!现在把下面一行注释掉看看会发生什么

这里写图片描述

这里写图片描述

不好意思,你已经被踢出了VIP俱乐部的名单 :-)

3. visudo命令

visudo命令是为了安全、无后患的编辑/etc/sudoers文件

它使用『锁』的技术,在编辑时/etc/sudoers是被锁住的,这样就不存在别的用户同时编辑的事故了

这里写图片描述

4. sudo logging

如果未经许可而执行sudo命令,会收到一条warning,并且该操作会被记录到var/log/auth.log这个文件中(Debian)


用户管理

1. /etc/passwd

/etc/passwd是用户的本地数据库(Linux,和大多数Unix)

这里写图片描述

2. 家目录

/home/$whoami是该用户的家目录

创建一个家目录有两种方法:1. useradd -m 家目录,2. mkdir 家目录

3. useradd

useradd用来添加本机用户,相当于Windows下的net user命令

因为我现在用的是Mac(Unix OS),没有这个命令我,我就不演示了(以后用ubuntu、kali的时候再讲

4. /etc/default/useradd

/etc/default/useradd存储用户的一些默认设置

因为没有,我同样不演示

5. userdel

userdel用来删除用户

-r开关同时删除该用户的/home/$whoami目录

6. usermod

usermod用来编辑该用户的属性

7. /etc/skel

/etc/skel目录存储一些用户的配置文件,如.bashrc.bash_profile.bash_logout(它们通常都是隐藏的文件)

这个文件的作用是,当使用useradd命令创建新的用户后,该文件下的所有文件会被自动拷贝到该新用户的~(家目录)下

/etc/skel目录在Unix下是没有的(我的Mac是没有的)

这里写图片描述

8. chsh

chsh(“吃屎”)命令用来改变默认登陆shell

使用chsh -lcat /etc/shells查看所有可选的shell

这里写图片描述

使用chsh -s 新shell来改变当前shell环境

这里写图片描述

这里写图片描述


密码管理

本段文字讨论密码的创建、删除、设置,包括账户的锁定和禁用

1. passwd

passwd命令用来更改当前用户的登录——我不想改密码,就不演示完整了

这里写图片描述

同样我们可以写出完整命令路径来调用改命令

这里写图片描述

2. /etc/shadow

用户的密码默认都存储在/etc/shadow文件中,它是read only的,且默认只能被root用户读取

在Mac本中是没有这个文件的

这里写图片描述

3. openssl

openssl是一款用来生成私人秘钥(private key)的开源工具,在Unix、Linux平台上均可以直接使用

使用openssl passwd命令对同一个密码可以生成不同的秘钥(哈希字符串),因为在生成时openssl有一个加盐(salt)的过程

这里写图片描述

还可以显式指定hash的前两位

这里写图片描述

下面这条命令创建一个新用户,并用openssl生成新的密码

这里写图片描述

我不想创建新用户,就不演示了

另外我们还可以创建自己的编码函数:调用C语言的crypt函数并将源代码编译成命令加入环境路径即可

paul@rhel65:~$ cat MyCrypt.c #include <stdio.h> #define __USE_XOPEN #include <unistd.h>
int main(int argc, char** argv) {
if(argc==3) { printf("%s\n", crypt(argv[1],argv[2])); } else { printf("Usage: MyCrypt $password $salt\n" ); } return 0;
}

排版有点乱……

4. /etc/login.defs

/etc/login.defs文件存储一些和登录密码有关的配置信息(比如,密码长度)

这里写图片描述

好吧,下次我一定用Ubuntu/Kali进行讲解!

5. change命令

change用来设置和登录信息有关的东西:比如某个用户的有效的截止日期、密码长度限制、密码有效截止日期等

Mac没有这个命令,不演示了

6. vipw命令

vipw命令专门用来编辑/etc/passwd文件(类似于sudovi的感觉,专门用来编辑/etc/sudoers


账户管理

这个小标题拟的挺纠结的,想要将的是user profile部分,但是profile翻译成“个人资料”感觉没有体现它的实际作用——准确说是一些个人信息的配置

总之就是profile文件管理

1. /etc/profile

/etc/profile文件和具体shell无关,它的配置信息是全局的,即对所有的shell都成立——bash、ksh在登录后会检查/etc/profile的存在,如果存在就source

这是我的/etc/profile文件

这里写图片描述

2. ~/.bash_profile

如果存在,bash则source之

这里写图片描述

Debian Linux 5/6/7默认没有该文件(需要手动创建

3. ~/.bash_login

如果~/.bash_profile不存在,就source该文件(备胎

Debian、Red Hat默认不存在该文件

4. ~/.profile

如果~/.bash_profile~/.bash_login都不存在,则source该文件(最后的救命稻草

默认下RHEL/CentOS没有该文件

5. ~/.bashrc

~/.bashrc文件常被别的脚本source(被动的,而不是主动)

这里写图片描述

上面是我的~/.bashrc文件,在~/.zshrc文件中被显式调用

这里写图片描述

6. ~/.bash_logout

该文件在exit出bahs-shell时自动执行


用户分组

为什么取这个小标题呢?因为前面都是四个字,这里为了美观也要用四个字XD

本段文字讲解『用户组(group)』的概念

1. groupadd

类比useraddgroupadd命令用来创建一个新的用户组

参数就是用户组的名字

2. /etc/group

用户的分组情况被保存在/etc/group中,要知道一个用户可以用时存在于多个组群中

3. groups命令

groups用来查看分组情况,所幸在Mac上可以运行

这里写图片描述

4. groupmod

类比usermodgroupmod命令用来编辑用户组群

5. groupdel

该命令用来永久删除一个用户组

6. gpasswd

该命令用来“委托”权限

相关信息存储在/etc/gshadow中

7. newgrp

可以用该命令创建一个包含所有主要用户组群的子shell环境

8. vigr

vipw类似,vigr命令用来编辑/etc/gshadow文件(保障安全

猜你喜欢

转载自blog.csdn.net/abc_12366/article/details/80726871