Linux基础之用户、组的介绍与管理

简介:

主要介绍Linux中用户、组的基本概念,对应的配置文件,用户组的管理包括添加、修改、删除。




Linux用户、组概念介绍



用户一种技术、产品、服务的使用者。计算机中用户即使用计算机功能的对象。

用户类别:管理用户与普通用户

管理用户:root

普通用户:系统用户与登录用户

系统用户:分配给相应进程使用,特点无交互式登陆。在程序启动时自动使用相应系统用户。

登录用户:交互式登陆

用户标识:UserID简称UID是16bits的二进制数字其表示范围:0-65535

管理员UID:0

普通用户:1-65535

系统用户:1-499(CentOS6.x) 1-999(CentOS7.x)

登陆用户:500-60000CentOS6.x) 1000-60000(CentOS7.x)

对于系统来说它依靠UID这个数字来识别用户


:系统中的组可以看做一个容器,在它所属下面的所有用户都具有这个容器的相关特性。

若这个组对某个文件有读写执行这三个权限,那么它下面的所有成员对这个文件也具有读写执行三个权限。

组按其不同性质可分三种:

1、

管理员组

普通用户组:系统组、登陆组

组标识:GroupID简称GID

管理员组:0

普通用户组:1-65535

系统用户组:1-499(CentOS6.x) 1-999(CentOS7.x)

登陆用户组:500-60000(CentOS6.x) 1000-60000(CentOS7.x)

2、

用户的基本组 

用户的附加组

3、

私有组:组名同用户名,且只包含一个用户

公共组:组内包含了多个用户



用户在登陆系统时系统会对所登陆用户进行认证,这个认证过程是通过对比事先存储在系统文件的信息与登录时提供的信息是否一致来判断。

对比的文件有/etc/passwd/etc/shadow/etc/gshadow/etc/group

下面对这四个文件做下详细介绍


/etc/passwd 这个文件存储的是用户相关的信息

1
2
3
4
5
6
[root@localhost ~] # tail -5 /etc/passwd
user7:x:3006:3006:: /testdir/user7 : /bin/csh
user8:x:3007:3007:: /testdir/user8 : /bin/csh
user9:x:3008:3008:: /testdir/user9 : /bin/csh
user10:x:3009:3009:: /testdir/user10 : /bin/csh
laowang:x:4322:4322:: /home/laowang : /bin/bash

可以看到该文件有固定的表达格式。

其格式每一项的意义如下

第一项:为name用户名

第二项:为password,可以是加密的密码,也可以是占位符x,这里通常为占位符,而把密码放在另一个文件/etc/shadow内,这样更加安全。

第三项:为UID

第四项:为GID

第五项:为GECOS注释信息

第六项:为Directory用户的家目录

第七项:为shell用户的默认shell,登录时默认的shell程序


/etc/group这个文件存储的是组相关信息

1
2
3
4
[root@localhost ~] # tail -3 /etc/group
user10:x:3009:
sysadmins:x:5003:
laowang:x:4322:

第一项:groupname组名

第二项:password密码

第三项:GID

第四项:userlist该组的用户成员,以此组为附加组的用户的用户列表。


/etc/shadow此文件为存储用户密码信息的文件

1
2
3
4
[root@localhost ~] # tail -3 /etc/shadow
user9:$6$EYxzH /dhRFw/zg4V $BQakOIX /HsZJobHdAhpSu5MK .pP1Jtpi /nVwktde/eoOxz5zm1oPUfliy4gzKPmYB5Wf0fBX6OPEEDvNWoUl3/ :17016:0:99999:7:::
user10:$6$5eJ8JKiwo /6h42 $lhx.J9r6m6dKq8.xKQ82WeiRvLOAQcoTRvEw43DfmxsOB.qfiO1Esyu2oZVCFcejq613h0WEA3G0FD.jxUE3W1:17016:0:99999:7:::
laowang:!!:17016:0:99999:7:::

第一项:user用户名

第二项:password用户密码,密文,默认使用sha512加密

第三项:从1970年1月1日起到密码最近一次被更改的时间

第四项:密码最短使用期限,密码再过几天可以被更改,0表示随时可被更改

第五项:最长使用期限,密码再过几天必须变更,99999表示永不过期

第六项:警告期段,密码过期前几天系统提醒用户

第七项:过期期限,密码过期几天后账号被锁定

第八项:保留字段,从1970年1月1日算起,多少天后账号失效。


/etc/gshadow此文件为存储组密码信息的文件,其文件格式与/etc/group相同,却别仅在于第二项密码部分。

1
2
3
4
[root@localhost ~] # tail -3 /etc/gshadow
user10:*::
sysadmins:$6$RRCfdNW.e$R1CqBN /5WZ8HrYuDlQrgRlP313sg5NNDCdrq2eGkUsieaZAjMM .Dhj8oGvvy /NKsb0joGLQlSspiiQPs78xJ3/ ::
laowang:!::

第一项:groupname组名

第二项:password组密码,密文,默认sha512加密

第三项:GID

第四项:userlist该组的用户成员,以此组为附加组的用户的用户列表。



这里的四个文件都涉及到密码内容,这里就插点关于密码的相关内容,这内容会加深对加密方式的理解。

在上面的/etc/shadow、/etc/gshadow两个文件内,在第二项密码中,我们看到其开头都有$6,这里$6表示的是sha512加密算法。

加密算法

对称加密:加密和解密使用同一个密码

非对称加密:加密解密使用一对密钥

密钥对儿:公钥、私钥

因为以上还是不够安全所以又有了单项加密

单项加密:只能加密,不能解密,提取数据特征码:

其特性:定长输出、雪崩效应(一点点的变化就会引起大变动)

Linux中使用的加密算法有以下6种:

$1 md5      由128bits二进制表示

$2 sha      由160bits二进制表示

$3 sha224   由224bits二进制表示

$4 sha256   由256bits二进制表示

$5 sha384   由384bits二进制表示

$6 sha512   由512bits二进制表示

近期由于md5的加密方式已被破解所以之前Linux默认使用的md5加密算法已被更新为sha512。



Linux用户、组管理


用户管理:创建、修改、删除

用户创建

命令格式:useradd [OPTION] USERNAME

OPTION:

      -u 指定UID

      -g 指定基本组ID,此组需事先存在

      -c 指明注释信息

      -G 指明用户所属附加组,附加组需事先存在。

      -d 指明用户家目录,通过复制/etc/skel/此目录并重命名实现,指定的家目录路径如果事先存在,则不会为用户复制环境配置文件

      -s 指定用户默认shell

      -r 创建系统用户

      -D 显示创建用户的默认配置

      -D + [选项] 修改用户的默认配置 /etc/login.def   修改的结果保存于/etc/default/useradd中


用户修改

usermod

命令格式:usermod [OPTION] USERNAME

OPTION:

      -u 修改用户的ID为指定的新UID

      -g 修改用户的GID为新的GID

      -c 修改该用户注释信息

      -G 修改该用户所属附加组,附加组需事先存在。

      -d 修改用户家目录,用户原有的文件不会被转移至新位置

      -m 与-d一起使用,将原来的家目录移动至新家目录(-m放在-d后面使用)

      -l 修改用户名

      -s 修改该用户默认shell

      -L 锁定用户密码

      -U 解锁用户密码


用户删除

userdel

命令格式:userdel [OPTION] USERNAME

OPTION:

      -r 删除用户时一并删除家目录


组管理:创建、修改、删除

组创建

groupadd

命令格式:groupadd [OPTION] GROUPNAME

OPTION:

      -g 指定GID,默认是上一个组的GID+1

      -r 创建系统组


组修改

groupmod

命令格式:groupadd [OPTION] GROUPNAME

OPTION:

      -g 修改GID

      -n 修改组名


组删除

groupdel GROUPNAME


其他的命令

groups USERNAME

查看用户的所属组信息


1
2
[root@localhost  test ] # groups gentoo
gentoo : gentoo distro peguin netadmin


这说明gentoo用户的基本组是gentoo,distro peguin netadmin是其附加组。



下面通过几个例子来具体感受用户、组管理的具体作用


1、创建用户u1,附加组g1,g2,默认shell为/bin/csh,注释信息为“UUU”

要实现上述内容,需先创建组g1、g2,之后再创建u1。

1
2
3
4
5
6
7
[root@localhost ~] # groupadd g1
[root@localhost ~] # groupadd g2
[root@localhost ~] # useradd u1 -G g1,g2 -s /bin/csh -c "UUU"
[root@localhost ~] # tail -1 /etc/passwd
u1:x:4323:4323:UUU: /home/u1 : /bin/csh
[root@localhost ~] # groups u1
u1 : u1 g1 g2


2、创建下面的用户、组和组成员关系

名字为admins的组

用户u2,使用admins作为附属组

用户u3,也是用admins作为附属组

用户u4,不可交互登陆系统,默认家目录为/test/u4,u2、u3、u4密码都是centos

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@localhost ~] # useradd -G admins u2
[root@localhost ~] # useradd -G admins u3
[root@localhost ~] # useradd -s /sbin/nologin -d /test/u4 u4
[root@localhost ~] # echo "centos" | passwd --stdin u2
更改用户 u2 的密码 。
passwd :所有的身份验证令牌已经成功更新。
[root@localhost ~] # echo "centos" | passwd --stdin u3
更改用户 u3 的密码 。
passwd :所有的身份验证令牌已经成功更新。
[root@localhost ~] # echo "centos" | passwd --stdin u4
更改用户 u4 的密码 。
passwd :所有的身份验证令牌已经成功更新。
[root@localhost ~] # tail -5 /etc/passwd
laowang:x:4322:4322:: /home/laowang : /bin/bash
u1:x:4323:4323:UUU: /home/u1 : /bin/csh
u2:x:4324:4324:: /home/u2 : /bin/bash
u3:x:4325:4325:: /home/u3 : /bin/bash
u4:x:4326:4326:: /test/u4 : /sbin/nologin

不可交互指的是其默认shell为/sbin/nologin


3、修改u4用户的家目录为/home/u4,要求其原文件仍能被用户访问

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[root@localhost ~] # usermod -d /home/u4 -m u4
[root@localhost ~] # ll /home
总用量 8
drwx------.  3 fedore  fedore    89 8月   2 22:04 fedore
drwxr-xr-x.  3 root    root      74 8月   2 22:00 gentoo
drwx------.  5 laowang laowang 4096 8月   4 16:06 laowang
drwxr-xr-x.  3 root    root      74 8月   3 10:49 test1
drwx------.  3 u1      u1        74 8月   4 17:25 u1
drwx------.  3 u2      u2        74 8月   4 17:38 u2
drwx------.  3 u3      u3        74 8月   4 17:38 u3
drwx------.  3 u4      u4        74 8月   4 18:18 u4
[root@localhost ~] # tail -1 /etc/passwd
u4:x:4326:4326:: /home/u4 : /sbin/nologin
[root@localhost ~] # ll /test/
总用量 948
-rw-rw-r--. 1 gentoo gentoo      0 8月   4 16:05 a
-rw-rw-r--. 1 gentoo gentoo      0 8月   4 16:05 b
-rwxr-sr-x. 1 root   root    33040 8月   4 16:02  echo
-rw-rw-r--. 1 gentoo gentoo     59 8月   4 16:09 fedora
-rw-rw-r--. 1 gentoo root       34 8月   4 16:23 laowang2
drwx---rwx+ 2 root   root       26 8月   3 11:46 t1
-rw-r--r--. 1 root   root      162 8月   3 08:49 userpd
-rw-r--r--. 1 root   root      432 8月   3 08:45 user.txt
-rwxr-sr-x. 1 root   root   910040 8月   4 16:02  vi









本文转自 紫色的茶碗 51CTO博客,原文链接:http://blog.51cto.com/chawan/1834463,如需转载请自行联系原作者
目录
相关文章
|
7天前
|
Java Linux
Linux上管理不同版本的 JDK
Linux上管理不同版本的 JDK
10 0
|
2天前
|
监控 安全 Unix
探索Linux命令repo-rss:管理仓库更新的新视角
`repo-rss`是一个设想中的Linux工具,用于通过RSS订阅跟踪软件仓库更新。它能订阅仓库、检测更新、生成RSS feed并发送通知。主要特点包括实时性、灵活性、自动化和可扩展性。用户可定制订阅、时间间隔及输出格式。示例用法包括订阅Debian仓库、将更新输出为RSS文件或发送至邮箱。使用时需注意安全、资源消耗和隐私,最佳实践包括定期评估、自动化处理、多源订阅和备份。此工具展示了RSS在软件管理中的创新应用。
|
12天前
|
Linux
【Linux 基础】文件与目录管理
文件和目录的基本概念以及常用命令
32 11
|
5天前
|
Linux 网络安全 开发工具
Linux 管理远程会话 screen:掌握终端的多任务操作
`Linux screen` 命令让多任务管理变得更简单,尤其在SSH连接远程服务器时。创建新会话如`screen -S backup`,查看会话`screen -ls`,退出`exit`。高级功能包括直接在会话中运行命令,如`screen vim memo.txt`,会话共享以协同工作,以及通过`screen -r`或`-D -r`重新连接或强制恢复断开的会话。提高效率,确保任务不间断运行。
7 1
|
16天前
|
安全 Linux 数据处理
探索Linux的kmod命令:管理内核模块的利器
`kmod`是Linux下管理内核模块的工具,用于加载、卸载和管理模块及其依赖。使用`kmod load`来加载模块,`kmod remove`卸载模块,`kmod list`查看已加载模块,`kmod alias`显示模块别名。注意需有root权限,且要考虑依赖关系和版本兼容性。最佳实践包括备份、查阅文档和使用额外的管理工具。
|
17天前
|
监控 数据挖掘 Linux
Linux命令jobs:后台任务管理利器
`jobs`是Linux终端的利器,用于管理和查看后台任务。它显示当前会话中的作业状态,如运行、停止,可通过`Ctrl+Z`暂停任务,`bg`放后台,`fg`回前台。参数`-l`显示PID,`-n`显示最近状态变化的作业。`jobs`帮助高效监控和管理长时间运行的命令,如在数据分析时。记得使用正确任务编号,谨慎使用`kill`,并定期检查任务状态。
|
17天前
|
消息中间件 Linux 数据处理
Linux命令ipcrm详解:轻松管理IPC对象
`ipcrm`是Linux下用于删除IPC(进程间通信)对象的命令,如消息队列、共享内存和信号量。它通过指定对象ID或键值进行操作,如`-m ID`删除共享内存,`-q ID`删除消息队列,`-s ID`删除信号量。使用时需注意确认对象未被使用,以免影响系统运行。结合`ipcs`命令检查对象详情,并可定期清理不再需要的IPC对象以优化系统资源。
|
17天前
|
存储 Linux 数据库
【Linux】Linux基础文件与目录管理:成为Linux大师的入门必修课
【Linux】Linux基础文件与目录管理:成为Linux大师的入门必修课
24 3
|
17天前
|
消息中间件 监控 安全
深入解析Linux命令ipcmk:IPC对象管理新视角
`ipcmk`非标准Linux命令,假设的IPC对象创建工具,用于演示如何管理消息队列、信号量和共享内存。虽无此命令,但理解其概念有助于掌握IPC管理。例如,创建命名消息队列`my_mq`,最大1000消息,可模拟使用`ipcmk -t mq -n my_mq -q 1000`。实际操作中,应根据需求选择合适IPC机制,设置安全权限,监控使用并及时清理。
|
23天前
|
消息中间件 存储 监控
实战Linux I/O多路复用:借助epoll,单线程高效管理10,000+并发连接
本文介绍了如何使用Linux的I/O多路复用技术`epoll`来高效管理超过10,000个并发连接。`epoll`允许单线程监控大量文件描述符,显著提高了资源利用率。文章详细阐述了`epoll`的几个关键接口,包括`epoll_create`、`epoll_ctl`和`epoll_wait`,以及它们在处理并发连接中的作用。此外,还探讨了`epoll`在高并发TCP服务场景的应用,展示了如何通过`epoll`和线程/协程池来构建服务框架。
169 3