linux中如何做好账户管理

发布时间:2022-01-05 09:38:23 作者:小新
来源:亿速云 阅读:132

这篇文章将为大家详细讲解有关linux中如何做好账户管理,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

账户管理

大家都知道,linux操作系统是典型的多用户多任务操作系统,即同一时间内,允许由多个用户同时登录同一台计算机,运行各自的一个或多个任务,各个用户之间并不一定能明确的感知到其他用户的登录操作。linux上存在一个超级用户,就是root,root账户几乎无所不能,可以用来创建和配置非root账户。

关于账户管理,有两个概念必须理解,用户(User)和用户组(Group)。

用户(User):一台计算机允许程序或人登录并在一定权限范围之内运行任务的账户配置信息。

用户组(Group):Linux允许把一类用户(多个)划分到一个组里,这一组的用户拥有相同的操作权限,当然一个用户也可以只对应一个组,同时也支持将一个账户添加到多个组里。

如何创建用户及用户组?

创建group:

groupadd group1

创建group时指定GID(group ID):

groupadd  -g 100  group2

创建user:

useradd user1

创建user 时指定初始的group,如果不指定group,linux会默认创建同名的group:

useradd user1 -g group1

创建user时,指定UID(user ID):

useradd user2 -u 100 -g group2

Linux 按照使用场景不同,可以将用户分为系统账户普通账户,系统账户主要作为系统进程或程序的账户,普通账户也可以称之交互账户,普通账户主要用于操作系统使用者,跟某个使用人相关,通过该账户,使得使用者具有一定的权限使用该计算机资源,比如登录,浏览网页,运行程序,阅读文档等等。除了使用上的不同外,系统账户和普通账户的UID、GID范围是不同的,系统账户通过SYS_UID_MIN、SYS_UID_MAX和SYS_GID_MIN、SYS_GID_MAX定义,普通账户通过GID_MIN、GID_MAX和UID_MIN、UID_MAX,这些参数的定义可以在/etc/login.defs中找到:

#
# Min/max values for automatic uid selection in useradd
#
UID_MIN 1000
UID_MAX 60000
# System accounts
SYS_UID_MIN 201
SYS_UID_MAX 999
#
# Min/max values for automatic gid selection in groupadd
#
GID_MIN 1000
GID_MAX 60000
# System accounts
SYS_GID_MIN 201
SYS_GID_MAX 999

创建系统账户和系统组:

groupadd -r  -g 100  group2
useradd  -r user2 -u 100 -g group2

还可以将一个user添加到两个不同的group中来:

groupadd -r  -g 100  group2 
useradd  -r user2 -u 100 -g group2 -G group1

创建普通账户时指定home目录,指定登录的交互程序:

useradd  user2 -u 100 -g group2 -d /home/user2 -s /bin/bash

创建系统账户时禁止登录及home目录:

useradd  user2 -u 100 -g group2 -d /dev/null -s /sbin/nologin

如何修改或者删除账户配置?

修改group的GID和 group name,将gid修改为10000,名称充group2修改为group3:

groupmod –g 10000 -n group3 group2

删除group:

groupdel group2

修改账户属性,此命令将用户user1的登录Shell修改为ksh,主目录改为/home/test,用户组改为group3。

usermod -s /bin/ksh -d /home/test –g group3 user1

删除账户:

userdel user1

如果一个用户同时属于多个group时,可以在不同group之间进行切换,以使同一账户具有不同group的权限:

newgrp root

参考帮助 useradd ,groupadd,usermod,groupmod,userdel,groupdel,

密码管理

密码是账户访问的一把钥匙,不管使用何种方式登录账户,用户必须输入密码来使用计算机资源,一般交互式账户必须设定密码,设置用户密码有两种方式,一种是在创建账户时使用-p参数设定初始密码,一种是使用passwd命令修改账户密码。普通用户只能修改自己账户的密码,root用户可以修改任意账户的密码。

创建账户时指定密码:

useradd  user2 -u 100 -g group2 -d /home/user2 -s /bin/bash -p jlkdakfdf

创建账户时指定的密码是明文,虽然Linux最终会加密,但是这种方式还是不安全,建议使用第二种方式。

修改账户密码:

(svnenv)user2@d076cf119be7:/mnt/share$ passwd
Current password:
New password:
Retype new password:
passwd: password updated successfully

首先会提示用户输入当前密码,然后设定新密码并再次确认。密码应包含6到8个字符,包括一个或多个字符来自以下每个集合的字符:

必须注意不要包括系统默认擦除或终止字符。 passwd将拒绝任何不合适的密码。

参考帮助passwd。

系统账户信息及密码信息保存在哪里?

如果你想通过某种方式知道系统中所有的用户及group信息时,最简单的方式就是查看用户管理相关的数据文件,一般这些文件对所有用户都是可读的,这些文件包括/etc/passwd, /etc/shadow, /etc/group等。

/etc/passwd

不要被该文件的命名迷惑,以前的确会保存密码,但是现在主要保存用户配置信息,你可以通过该文件查询系统所有的账户信息,包括系统账户和普通账户:

# cat /etc/passwd
root:x:0:0:Superuser:/:
daemon:x:1:1:System daemons:/etc:
bin:x:2:2:Owner of system commands:/bin:
sys:x:3:3:Owner of system files:/usr/sys:
adm:x:4:4:System accounting:/usr/adm:
uucp:x:5:5:UUCP administrator:/usr/lib/uucp:
auth:x:7:21:Authentication administrator:/tcb/files/auth:
cron:x:9:16:Cron daemon:/usr/spool/cron:
listen:x:37:4:Network daemon:/usr/net/nls:
lp:x:71:18:Printer administrator:/usr/spool/lp:
sam:x:200:50:Sam san:/usr/sam:/bin/sh
user2:x:1007:1007::/home/user2:/bin/bash
user1:x:1008:1008::/home/user1:/bin/bash

每条记录都对应于一个账户及其属性,通常被冒号“:”分割成7个字段,分别对应:

用户名:口令:用户标识号:组标识号:注释:主目录:登录Shell
/etc/group

该文件保存所有用户群组的信息,每个用户都属于某个用户组;一个组中可以有多个用户,一个用户也可以属于不同的组。当一个用户同时是多个组中的成员时,在/etc/passwd文件中记录的是用户所属的主组,也就是登录时所属的默认组,而其他组称为附加组。用户要访问属于附加组的文件时,必须首先使用newgrp命令使自己成为所要访问的组中的成员。

$ cat /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
lp:x:7:
user2:x:1007:
user1:x:1008:
user3:x:1009:
user4:x:1010:
user5:x:1011:user1,user2

该文件中记录的每条记录使用冒号“:”分割成3个字段:

组名:口令:组标识号:组内用户列表
/etc/shadow

/etc/shadow中的记录行与/etc/passwd中的一一对应,它由pwconv命令根据/etc/passwd中的数据自动产生。它的文件格式与/etc/passwd类似,由若干个字段组成,字段之间用":"隔开。这些字段是:

登录名:加密密码:上次更改密码的日期:最低密码年龄:最长密码年龄:密码警告期:密码不活动期:账户到期日:保留字段
$ cat /etc/shadow
root:$1$eWL4wrs5$W.HzKJ24HVGTyADdFYsOd1vO1:17637:0:99999:7:::
lp:*:13510:0:99999:7:::
nobody:*:13509:0:99999:7:::
tc::13646:0:99999:7:::
dockremap:!:17085:0:99999:7:::
docker:$1$VdAIBSrn$Sx/A85NaQsIYib1JlZex61:17566:0:99999:7:::
user2:$6$pNjbuPVU.FFx56xoQCx$NGfUX/u.h.WssFSLOKH.pgbWNdHldKKFalKL6BNHZIFs9.alunrNuQhatNXl/lk0:17721:0:99999:7:::
user1:!!:17722:0:99999:7:::
user3:!!:17722:0:99999:7:::
user4:!!:17722:0:99999:7:::
user5:!!:17722:0:99999:7:::

关于“linux中如何做好账户管理”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

推荐阅读:
  1. Linux使用普通账户管理Nginx的方法
  2. 账户和权限管理

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

linux

上一篇:怎么利用Stencil来优化局部后处理特效

下一篇:怎么深入了解vue2中的 v-model以及让组件支持该语法

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》