linux 账号与用户管理

一. 账号与用户管理基础知识

1. 用户登录流程

  1. 先找寻 /etc/passwd 里面是否有你输入的账号?如果没有则跳出,如果有的话则将该账号对应的 UID 与 GID读出来,另外,该账号的家目录与 shell 配置也一并读出;
  2. 核对口令!这时 Linux 会进入 /etc/shadow 里面找出对应的账号与 UID,然后核对一下你刚刚输入的口令与里头的口令是否相符,之前所有条件OK,则可以登录系统进入shell环境。

2. 配置文件介绍

/etc/passwd 7个字段:[ 账号名称:密码占位:UID:GID:用户描述:家目录:登录shell ]

提示:如果有密码则显示x,因为真正的密码在/etc/shadow,uid 0为root权限,1-499系统使用,500以后普通新增用户使用。

/etc/shadow 9个字段:[ 账号名称:加密密码:最近更改密码日期:禁止更改密码的天数:密码过期天数:密码过期前提前警告的天数:密码过期后失效的天数:账号失效日期:保留 ]

提示:最近更改密码日期 和 账号失效日期 这两个日期都是使用自1970-1-1直到今天某个日期的天数来表示的。计算公式:echo $(($(date --date="2020/03/06" +%s)/86400+1))

/etc/group  4个字段:[ 组名:群组密码占位:GID:加入此群组的账号名称 ]

提示:使用groups命令可以查看有效群组(第一个是有效群组),这个概念主要针对建立新文件时所属组而言,可以使用newgrp切换有效群组,但是切换之后是在子shell运行,了解后忘记把。

/etc/gshadow 4个字段: [ 组名:密码:群组管理员账号:加入该组的账号 ]

提示:这个群组管理员是为了帮root干活用的,root太忙了找一些帮手而已,但是现在有sudo,谁还用群组管理员,了解后忘记把。

3. 用户账号管理命令介绍

[[email protected] ~]# useradd [-u UID] [-g 初始群组] [-G 次要群组] [-mM]
>  [-c 说明栏] [-d 家目录绝对路径] [-s shell] 使用者账号名

选项与参数:

-u  :后面接的是 UID ,是一组数字。直接指定一个特定的 UID 给这个账号;

-g  :后面接的那个组名就是我们上面提到的 initial group 啦~

      该群组的 GID 会被放置到 /etc/passwd 的第四个字段内。

-G  :后面接的组名则是这个账号还可以加入的群组。

      这个选项与参数会修改 /etc/group 内的相关数据喔!

-M  :强制!不要创建用户家目录!(系统账号默认值)

-m  :强制!要创建用户家目录!(一般账号默认值)

-c  :这个就是 /etc/passwd 的第五栏的说明内容啦~可以随便我们配置的啦~

-d  :指定某个目录成为家目录,而不要使用默认值。务必使用绝对路径!

-r  :创建一个系统的账号,这个账号的 UID 会有限制 (参考 /etc/login.defs)

-s  :后面接一个 shell ,若没有指定则默认是 /bin/bash 的啦~

-e  :后面接一个日期,格式为『YYYY-MM-DD』此项目可写入 shadow 第八字段,

      亦即账号失效日的配置项目啰;

-f  :后面接 shadow 的第七字段项目,指定口令是否会失效。0为立刻失效,

      -1 为永远不失效(口令只会过期而强制于登陆时重新配置而已。)

useradd命令详解(一般直接使用加用户即可)

[[email protected] ~]# passwd [--stdin]  <==所有人均可使用来改自己的口令

[[email protected] ~]# passwd [-l] [-u] [--stdin] [-S]
>  [-n 日数] [-x 日数] [-w 日数] [-i 日期] 账号 <==root 功能

选项与参数:

--stdin :可以透过来自前一个管线的数据,作为口令输入,对 shell script 有帮助!

-l  :是 Lock 的意思,会将 /etc/shadow 第二栏最前面加上 ! 使口令失效;

-u  :与 -l 相对,是 Unlock 的意思!

-S  :列出口令相关参数,亦即 shadow 文件内的大部分信息。

-n  :后面接天数,shadow 的第 4 字段,多久不可修改口令天数

-x  :后面接天数,shadow 的第 5 字段,多久内必须要更动口令

-w  :后面接天数,shadow 的第 6 字段,口令过期前的警告天数

-i  :后面接『日期』,shadow 的第 7 字段,口令失效日期

passwd的详解(一般直接使用即可)

[[email protected] ~]# chage [-ldEImMW] 账号名

选项与参数:

-l :列出该账号的详细口令参数;

-d :后面接日期,修改 shadow 第三字段(最近一次更改口令的日期),格式 YYYY-MM-DD

-E :后面接日期,修改 shadow 第八字段(账号失效日),格式 YYYY-MM-DD

-I :后面接天数,修改 shadow 第七字段(口令失效日期)

-m :后面接天数,修改 shadow 第四字段(口令最短保留天数)

-M :后面接天数,修改 shadow 第五字段(口令多久需要进行变更)

-W :后面接天数,修改 shadow 第六字段(口令过期前警告日期)

chage详解(功能类似于passwd)

范例二:创建一个名为 agetest 的账号,该账号第一次登陆后使用默认口令,

        但必须要更改过口令后,使用新口令才能够登陆系统使用 bash 环境

[[email protected] ~]# useradd agetest

[[email protected] ~]# echo "agetest" | passwd --stdin agetest

[[email protected] ~]# chage -d 0 agetest

# 此时此账号的口令创建时间会被改为 1970/1/1 ,所以会有问题!

范例三:尝试以 agetest 登陆的情况

You are required to change your password immediately (root enforced)

WARNING: Your password has expired.

You must change your password now and login again!

Changing password for user agetest.

Changing password for agetest

(current) UNIX password:  <==这个账号被强制要求必须要改口令!

一个有价值的范例:用户首次登陆必须改密码。

[[email protected] ~]# usermod [-cdegGlsuLU] username

选项与参数:

-c  :后面接账号的说明,即 /etc/passwd 第五栏的说明栏,可以加入一些账号的说明。

-d  :后面接账号的家目录,即修改 /etc/passwd 的第六栏;

-e  :后面接日期,格式是 YYYY-MM-DD 也就是在 /etc/shadow 内的第八个字段数据啦!

-f  :后面接天数,为 shadow 的第七字段。

-g  :后面接初始群组,修改 /etc/passwd 的第四个字段,亦即是 GID 的字段!

-G  :后面接次要群组,修改这个使用者能够支持的群组,修改的是 /etc/group 啰~

-a  :与 -G 合用,可『添加次要群组的支持』而非『配置』喔!

-l  :后面接账号名称。亦即是修改账号名称, /etc/passwd 的第一栏!

-s  :后面接 Shell 的实际文件,例如 /bin/bash 或 /bin/csh 等等。

-u  :后面接 UID 数字啦!即 /etc/passwd 第三栏的数据;

-L  :暂时将用户的口令冻结,让他无法登陆。其实仅改 /etc/shadow 的口令栏。

-U  :将 /etc/shadow 口令栏的 ! 拿掉,解冻啦!

usermod详解(修改账户信息)

[[email protected] ~]# cp -a /etc/skel /home/testuser

[[email protected] ~]# chown -R vbird3:vbird3 /home/testuser

[[email protected] ~]# chmod 700 /home/testuser

创建家目录的标准操作

[[email protected] ~]# userdel [-r] username

选项与参数:

-r  :连同用户的家目录也一起删除

提示:为了让你的系统不产生莫名其妙的问题,如果想要完整的将某个账号完整的移除,最好可以在下达 userdel -r username 之前, 先以『 find / -user username 』查出整个系统内属于 username 的文件,然后再加以删除吧!

userdel 使用注意事项

[[email protected] ~]# chfn [-foph] [账号名]

选项与参数:

-f  :后面接完整的大名;

-o  :您办公室的房间号码;

-p  :办公室的电话号码;

-h  :家里的电话号码!

chfn 帮助完善账号描述

[[email protected] ~]$ chsh [-ls]

选项与参数:

-l  :列出目前系统上面可用的 shell ,其实就是 /etc/shells 的内容!

-s  :配置修改自己的 Shell 

chsh 修改shell环境命令

[email protected] study]# id
uid=0(root) gid=0(root) 组=0(root) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[[email protected] study]# id wangzengyi
uid=1005(wangzengyi) gid=1005(wangzengyi) 组=1005(wangzengyi)
[[email protected] study]#

id 查看用户UID和GID

[[email protected] ~]# groupadd [-g gid] [-r] 组名

选项与参数:

-g  :后面接某个特定的 GID ,用来直接给予某个 GID ~

-r  :创建系统群组啦!与 /etc/login.defs 内的 GID_MIN 有关。

[[email protected] ~]# groupmod [-g gid] [-n group_name] 群组名

选项与参数:

-g  :修改既有的 GID 数字;

-n  :修改既有的组名

提示:不要随意的更动 GID ,容易造成系统资源的错乱!

[[email protected] ~]# groupdel [groupname]

群组相关命令

# 关于系统管理员(root)做的动作:

[[email protected] ~]# gpasswd groupname

[[email protected] ~]# gpasswd [-A user1,...] [-M user3,...] groupname

[[email protected] ~]# gpasswd [-rR] groupname

选项与参数:

    :若没有任何参数时,表示给予 groupname 一个口令(/etc/gshadow)

-A  :将 groupname 的主控权交由后面的使用者管理(该群组的管理员)

-M  :将某些账号加入这个群组当中!

-r  :将 groupname 的口令移除

-R  :让 groupname 的口令栏失效

# 关于群组管理员(Group administrator)做的动作:

[[email protected] ~]$ gpasswd [-ad] user groupname

选项与参数:

-a  :将某位使用者加入到 groupname 这个群组当中!

-d  :将某位使用者移除出 groupname 这个群组当中。

gpasswd 群组管理员

实例一:

账号名称    账号全名    支持次要群组    是否可登陆主机    口令
myuser1    1st user    mygroup1    可以    password
myuser2    2nd user    mygroup1    可以    password
myuser3    3rd user    无额外支持    不可以    password

# 先处理账号相关属性的数据:

[[email protected] ~]# groupadd mygroup1

[[email protected] ~]# useradd -G mygroup1 -c "1st user" myuser1

[[email protected] ~]# useradd -G mygroup1 -c "2nd user" myuser2

[[email protected] ~]# useradd -c "3rd user" -s /sbin/nologin myuser3

# 再处理账号的口令相关属性的数据:

[[email protected] ~]# echo "password" | passwd --stdin myuser1

[[email protected] ~]# echo "password" | passwd --stdin myuser2

[[email protected] ~]# echo "password" | passwd --stdin myuser3

实例2:
我的使用者 pro1, pro2, pro3 是同一个项目计划的开发人员,我想要让这三个用户在同一个目录底下工作, 但这三个用户还是拥有自己的家目录与基本的私有群组。假设我要让这个项目计划在 /srv/projecta 目录下开发, 可以如何进行?
# 1. 假设这三个账号都尚未创建,可先创建一个名为 projecta 的群组,

#    再让这三个用户加入其次要群组的支持即可:

[[email protected] ~]# groupadd projecta

[[email protected] ~]# useradd -G projecta -c "projecta user" pro1

[[email protected] ~]# useradd -G projecta -c "projecta user" pro2

[[email protected] ~]# useradd -G projecta -c "projecta user" pro3

[[email protected] ~]# echo "password" | passwd --stdin pro1

[[email protected] ~]# echo "password" | passwd --stdin pro2

[[email protected] ~]# echo "password" | passwd --stdin pro3

# 2. 开始创建此项目的开发目录:

[[email protected] ~]# mkdir /srv/projecta

[[email protected] ~]# chgrp projecta /srv/projecta

[[email protected] ~]# chmod 3770 /srv/projecta  #SGID和SBID完美配合

[[email protected] ~]# ll -d /srv/projecta

drwxrws--- 2 root projecta 4096 Feb 27 11:29 /srv/projecta

账号管理实例

原文地址:https://www.cnblogs.com/wangzengyi/p/12430175.html

时间: 2024-10-13 12:16:05

linux 账号与用户管理的相关文章

Linux账号与用户管理--笔记

今天学习了用户与账号的管理.大体分为两部分,一·账户管理:二·文件权限属性. 第一部分第一小结:用户帐号分为超级用户,普通用户和程序用户.组帐号分为基本组与附加组.第二小节:用户账户管理包括了用户账号文件,用户帐号的创建增加,删除和修改,用户账户的配置文件.第三小节讲述了组账户文件,组账户的创建,增加,删除和修改.最后一小节介绍了几个常用的帐号的命令:groups,id,finger,w. 第二部分讲述了文件管理.第一部分是帐号文件的查看.第二部分修改帐号权限:chmod.第三部分,设置帐号归属

Linux学习之用户管理命令与用户组管理命令(十五)

Linux学习之用户管理命令与用户组管理命令 目录 用户管理命令 用户添加命令useradd 修改用户密码passwd 修改用户信息usermod 修改用户密码状态chage 删除用户userdel 用户切换命令su 用户组管理命令 添加用户组 修改用户组 删除用户组 将用户添加到组或者从组中删除 用户管理命令 用户添加命令useradd 只能超级用户才能添加用户. useradd [选项] 用户名 选项: -u UID:手工指定用户的UID号 -d 家目录:手工指定用户的家目录 -c 用户说明

linux账号与权限管理

1.账号管理: (1)用户和组: 用户是人在计算机中的体现 linux用户分类:按权限的不同分为超级用户(root):程序用户(运行app的):普通用户 组:用户的集合,方便集中管理用户 组的分类:基本组合附加组   用户必须属于一个基本组 了解用户的相关文件: 用户的配置文件   head -1 /etc/passwd  用户的信息存放文件 root :x:0:0:root:/root:/bin/bash 用户名:密码占位符:uid:gid:描述:家目录:登录shell tail -1 /et

Linux系统管理之用户管理

Linux是个多用户多任务的分时操作系统,所有要使用系统资源的用户都必须先向系统管理员申请一个账号,然后以这个账号的身份进入系统.用户的账号一方面能帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问:另一方面也能帮助用户组织文件,并为用户提供安全性保护.每个用户账号都拥有一个惟一的用户名和用户口令.用户在登录时键入正确的用户名和口令后,才能进入系统和自己的主目录.实现用户账号的管理,要完成的工作主要有如下几个方面: 用户管理,包括用户的添加.删除.修改 用户组的管理,包括用户组的

linux笔记:用户管理命令和用户组管理命令

用户管理命令 命令名称:useradd功能:添加用户(添加完后不能立即使用,必须用passwd修改用户密码后才能使用)用法:useradd [选项] 用户名选项参数:-u 手工指定用户的UID-d 手工指定用户的家目录-c 手工指定用户的说明-g 手工指定用户的初始组-G 指定用户的附加组-s 手工指定用户的登录shell 命令名称:passwd功能:修改用户密码用法:passwd [选项] 用户名选项参数:-S 查询用户密码的密码状态-l 暂时锁定用户-u 解锁用户--stdin 可以通过管道

Linux 命令整理 —— 用户管理

Linux用户管理以读.写.执行动作为权限,以用户组为单位,限制用户行为.对于文件的的操作,可以限制读.写.执行中的哪一种,也可以限制文件所有者.组用户.组外用户相应的权限. 所以,要建立用户,最好先确定其所在的组. 一.用户组操作 1. 创建用户组——groupadd #新增deploy组 groupadd deploy 2. 修改用户组——groupmod #将用户组deploy更名为deploy1 groupmod -n deploy1 deploy 注意是将已存在的deploy组更名为d

Linux学习笔记—— 用户管理命令详解

 用户管理命令详解  用户管理: useradd,userdel,usermod,passwd,chsh,chfn,finger,id,chage 添加用户: useradd [options] USERNAME    -u (UID)   手动指定UID -g (GID)  (基本组) -G, ...     (附加组) 可以有多个,彼此之间用,号隔开 -c "COMMENT"         注释信息     -d /path/to/somedirectory  指定家目录 -s

linux 学习7 用户管理相关文件 r

7.1.用户配置文件 7.2.用户管理相关文件 7.3.用户管理命令 7.4.用户组管理命令 删除用户userdel [[email protected] ~]# userdel [-r] 用户名 //一定要加上-r, 删除家目录 除了用命令修改,还可以直接在文件中修改,更直接,不容易写错.本来命令的执行也是为了写到文件里 用户的初始组是和用户绑定在一起的,一般不建议修改. ----------------------------------- 7.1.1 用户信息文件/etc/passwd 7

linux学习之用户管理

用户管理是在root用户下进行相关操作的 1.配置文件路径: 保存用户信息的文件:/etc/passwd 保存密码的文件:/etc/shadow 保存用户组的文件:/etc/group 保存用户组密码的文件:/etc/gshadow 用户配置文件:/etc/default/useradd 2.查看用户信息:cat /etc/passwd [[email protected] hjp]# cat /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1