Linux入门进阶第五天——用户管理(帐号管理 )上

时间:2021-10-01 08:28:59

一、帐号与群组

  关于使用者帐号:

  用户的ID与帐号信息所在位置是 /etc/passwd,而管理密码的数据则是在 /etc/shadow

每个登陆的使用者至少都会取得两个 ID ,

    一个是使用者 ID (UserID ,简称 UID)、

    一个是群组 ID (Group ID ,简称 GID)。

  之前提到的文件的所有者和所属组,Linux就是通过UID与GID赖进行判断的呢(它只认识0和1这样的,对字符型的帐号名称其实没什么概念!,所以说,当系统有需要的时候,其实是通过查找/etc/passwd 和 /etc/group来进行帐号的显示的!如果没有找到对应UID的帐号,则直接显示UID的数字了!)

  1./etc/passwd文件

[root@localhost ~]# cat /etc/passwd
root:x:::root:/root:/bin/bash
bin:x:::bin:/bin:/sbin/nologin
daemon:x:::daemon:/sbin:/sbin/nologin
adm:x:::adm:/var/adm:/sbin/nologin
lp:x:::lp:/var/spool/lpd:/sbin/nologin
sync:x:::sync:/sbin:/bin/sync
shutdown:x:::shutdown:/sbin:/sbin/shutdown
halt:x:::halt:/sbin:/sbin/halt
mail:x:::mail:/var/spool/mail:/sbin/nologin
operator:x:::operator:/root:/sbin/nologin
games:x:::games:/usr/games:/sbin/nologin
ftp:x:::FTP User:/var/ftp:/sbin/nologin

  格式

  Linux入门进阶第五天——用户管理(帐号管理 )上

:用户名,用户登录系统时使用的用户名(账户名称)
:密码位
  在早期的Linux系统中,密码是存放在/etc/passwd文件中的,但是每个用户对该文件都有读的权限,这是比较危险的,
后来就不存放在这个文件了。
  ——转移到/etc/shadow下,所以显示x
:UID,用户标识号

    管理员标识(root):0 不会改变

    普通用户: 1-65535

    系统用户(伪用户):1-499, 1-999       (centos6 ,centos7)

    登录用户:500-60000 , 1000-60000

:GID,缺省组标识号
:注释性描述
:宿主目录,用户登录系统后的缺省目录
:用户使用的shell,默认为bash

  2./etc/shadow文件

[root@localhost ~]# ll /etc/shadow
----------. root root 12月 : /etc/shadow

  // 这个权限表示:只有root可以读写!

  想要查询加密方式,可以通过:

authconfig --test | grep hashing
[root@localhost ~]# authconfig --test | grep hashing
password hashing algorithm is sha512

  shadow文件内容:

[root@localhost ~]# head -n  /etc/shadow
root:$$lWdDY9NwZNDiRLx8$PxOrJJojIcT93j4q7SBqapAnkgLqS9AA6qCLMWkW5EF1P4zYGpDLGPSehUbVJInRmHpsXaQKW8J2fnVUvPfgz/:::::::
bin:*:::::::
daemon:*:::::::
adm:*:::::::

  格式

  Linux入门进阶第五天——用户管理(帐号管理 )上

:用户名
:加密密码,如果是 !则代表密码无法使用!
:最近一次修改时间,以天位单位,从1970年1月1日为参考点(两个时间点间累加的日期)
:最小时间间隔,两次修改密码之间的最小天数,为0表示不限制,如改为3,表示间隔3天以上才能修改密码
:最大时间间隔,密码保持有效的最多天数,超过天数不改密码,则用户无法登录
:警告时间:从系统开始警告到密码失效的天数
:账号闲置时间,密码过期后的帐号宽限时间
:失效时间,密码失效的绝对天数,就是账号的失效日期,到了此日期帐号强制失效,例如用于收费服务等!
:标志,一般不使用

  3.口令管理

  普通用户修改密码:直接运行passwd即可!passwd指令介绍,参考http://man.linuxde.net/passwd

[linuxde@localhost ~]$ passwd Changing password for user linuxde. //更改linuxde用户的密码; 
(current) UNIX password: //请输入当前密码;
New UNIX password: //请输入新密码;
Retype new UNIX password: //确认新密码;
passwd: all authentication tokens updated successfully. //更改成功; 来自: http://man.linuxde.net/passwd

  普通用户忘记密码以及root用户修改自己密码:(root修改自己密码运行 passwd root即可!)

[root@localhost ~]# passwd linuxde //更改或创建linuxde用户的密码; 
Changing password for user linuxde. New UNIX password: //请输入新密码;
Retype new UNIX password: //再输入一次;
passwd: all authentication tokens updated successfully. //成功; 来自: http://man.linuxde.net/passwd

  口令密码详细的设置命令chage的参考http://linux.51yip.com/search/chage

  root用户忘记密码比较棘手,将在单人维护章节讲述!

  关于群组

  1./etc/group

[root@localhost ~]# head -n  /etc/group
root:x::
bin:x::
daemon:x::
sys:x::

Linux入门进阶第五天——用户管理(帐号管理 )上

.组名称
.组密码,通常不用,同样类似有/etc/gshadow文件
.GID,群组ID
.组员列表,新版Linux对于初始群组已经不显示默认成员了!

  一个用户可以加入多个群组(使用命令 groups 可以查看所有群组!),所以这里会有有效群组的概念(不然新建一个文件怎么确定是属于哪个群组呢)

[dmtsai@study ~]$ groups
dmtsai wheel users

  其中,第一个群组就是有效群组,新建文件所属的群组就是这个群组!

  切换有效群组可以使用 newgrp

[dmtsai@study ~]$ newgrp users

  修改用户加入群组,可以通过usermodhttp://man.linuxde.net/usermod

  2./etc/gshadow

[root@localhost ~]# head -n  /etc/gshadow
root:::
bin:::
daemon:::
sys:::

Linux入门进阶第五天——用户管理(帐号管理 )上

.组名称
.密码栏,空或者!表示无密码,表示无群组管理员
.群组管理员帐号
.加入群组的帐号列表,与/etc/group相似!

二、帐号管理

  1.添加用户——useradd

[root@localhost ~]# useradd --help
用法:useradd [选项] 登录
useradd -D
useradd -D [选项] 选项:
-b, --base-dir BASE_DIR 新账户的主目录的基目录
-c, --comment COMMENT 新账户的 GECOS 字段
-d, --home-dir HOME_DIR 新账户的主目录
-D, --defaults 显示或更改默认的 useradd 配置
-e, --expiredate EXPIRE_DATE 新账户的过期日期
-f, --inactive INACTIVE 新账户的密码不活动期
-g, --gid GROUP 新账户主组的名称或 ID
-G, --groups GROUPS 新账户的附加组列表
-h, --help 显示此帮助信息并推出
-k, --skel SKEL_DIR 使用此目录作为骨架目录
-K, --key KEY=VALUE 不使用 /etc/login.defs 中的默认值
-l, --no-log-init 不要将此用户添加到最近登录和登录失败数据库
-m, --create-home 创建用户的主目录
-M, --no-create-home 不创建用户的主目录
-N, --no-user-group 不创建同名的组
-o, --non-unique 允许使用重复的 UID 创建用户
-p, --password PASSWORD 加密后的新账户密码
-r, --system 创建一个系统账户
-R, --root CHROOT_DIR chroot 到的目录
-s, --shell SHELL 新账户的登录 shell
-u, --uid UID 新账户的用户 ID
-U, --user-group 创建与用户同名的组
-Z, --selinux-user SEUSER 为 SELinux 用户映射使用指定 SEUSER

创建一般用户示例:

  useradd vbird1

CentOS 这些默认值主要会帮我们处理几个项目:
在 /etc/passwd 里面创建一行与帐号相关的数据,包括创建 UID/GID/主文件夹等;
在 /etc/shadow 里面将此帐号的密码相关参数填入,但是尚未有密码;
在 /etc/group 里面加入一个与帐号名称一模一样的群组名称;
在 /home 下面创建一个与帐号同名的目录作为使用者主文件夹,且权限为 700

  

[root@localhost ~]# useradd -u  vbird2
[root@localhost ~]# ll -d /home/vbird2
drwx------. vbird2 vbird2 12月 : /home/vbird2
[root@localhost ~]# grep vbird2 /etc/passwd /etc/shadow /etc/group
/etc/passwd:vbird2:x::::/home/vbird2:/bin/bash
/etc/shadow:vbird2:!!:::::::
/etc/group:vbird2:x::

  更多实例,参考菜鸟教程http://www.runoob.com/linux/linux-comm-useradd.html

创建系统用户示例:

[root@study ~]# useradd -r vbird3
[root@study ~]# ll -d /home/vbird3
ls: cannot access /home/vbird3: No such file or directorya <==不会主动创建主文件夹
[root@study ~]# grep vbird3 /etc/passwd /etc/shadow /etc/group
/etc/passwd:vbird3:x::::/home/vbird3:/bin/bash
/etc/shadow:vbird3:!!:::::::
/etc/group:vbird3:x::

useradd的默认配置可以通过 -D选项进行查看:

[root@localhost ~]# useradd -D
GROUP=
HOME=/home
INACTIVE=-
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes

  关于参考目录SKEL,参考鸟哥的介绍:

SKEL=/etc/skel:使用者主文件夹参考基准目录
这个咚咚就是指定使用者主文件夹的参考基准目录啰~举我们的范例一为例, vbird1 主文件
夹 /home/vbird1 内的各项数据,都是由 /etc/skel 所复制过去的~所以呢,未来如果我想要让
新增使用者时,该使用者的环境变量 ~/.bashrc 就设置妥当的话,您可以到 /etc/skel/.bashrc
去编辑一下,也可以创建 /etc/skel/www 这个目录,那么未来新增使用者后,在他的主文件夹
下就会有 www 那个目录了!这样瞭呼?

  更多useradd默认配置可以参考https://www.cnblogs.com/craftor/p/3811612.html

  关于GID/UID以及密码的参考则是来自 /etc/login/defs,

MAIL_DIR /var/spool/mail <==使用者默认邮件信箱放置目录
PASS_MAX_DAYS <==/etc/shadow 内的第 栏,多久需变更密码日数
PASS_MIN_DAYS <==/etc/shadow 内的第 栏,多久不可重新设置密码日数
PASS_MIN_LEN <==密码最短的字符长度,已被 pam 模块取代,失去效用!
PASS_WARN_AGE <==/etc/shadow 内的第 栏,过期前会警告的日数
UID_MIN <==使用者最小的 UID,意即小于 的 UID 为系统保留
UID_MAX <==使用者能够用的最大 UID
SYS_UID_MIN <==保留给使用者自行设置的系统帐号最小值 UID
SYS_UID_MAX <==保留给使用者自行设置的系统帐号最大值 UID
GID_MIN <==使用者自订群组的最小 GID,小于 为系统保留
GID_MAX <==使用者自订群组的最大 GID
SYS_GID_MIN <==保留给使用者自行设置的系统帐号最小值 GID
SYS_GID_MAX <==保留给使用者自行设置的系统帐号最大值 GID
CREATE_HOME yes <==在不加 -M 及 -m 时,是否主动创建使用者主文件夹?
UMASK <==使用者主文件夹创建的 umask ,因此权限会是
USERGROUPS_ENAB yes <==使用 userdel 删除时,是否会删除初始群组
ENCRYPT_METHOD SHA512 <==密码加密的机制使用的是 sha512 这一个机制!

关于这里,可以参考http://blog.csdn.net/u010181136/article/details/17436407

  综上:useradd至少会参考以下3个文件: 

    /etc/default/useradd
    /etc/login.defs
    /etc/skel/*

  2.修改用户——usermod

-c<备注>:修改用户帐号的备注文字; 
-d<登入目录>:修改用户登入时的目录;
-e<有效期限>:修改帐号的有效期限;
-f<缓冲天数>:修改在密码过期后多少天即关闭该帐号;
-g<群组>:修改用户所属的群组;
-G<群组>;修改用户所属的附加群组;
-l<帐号名称>:修改用户帐号名称;
-L:锁定用户密码,使密码无效;
-s:修改用户登入后所使用的shell;
-u:修改用户ID;
-U:解除密码锁定。 来自: http://man.linuxde.net/usermod

  示例:

[root@localhost ~]# usermod -c "test accout" vbird2 

  3.删除用户——userdel

  确定了不使用此帐号再删除,否则只需要usermod -L 锁定即可!

[root@study ~]# userdel [-r] username
选项与参数:
-r :连同使用者的主文件夹也一起删除

  以上3个都是管理员使用的指令,不过一般的使用者也是阔以有相关的命令的!

  1.查看信息——id

id [-gGnru][--help][--version][用户名称]

来自: http://man.linuxde.net/id

  详细选项这里不展开,反正直接使用id就列出所有洛!

[root@localhost ~]# id root
uid=(root) gid=(root) 组=(root)

[root@localhost ~]# id vbird2
 uid=1500(vbird2) gid=1500(vbird2) 组=1500(vbird2)

像这样我们之前直接指定UID为1500,则中间的1000-1049就直接废弃了!

  2.查看与修改指纹信息——finger与chfn,修改shell——chsh

  暂略。

三、群组管理

  与账户管理十分相似,也是增删改的相关操作!

  1.群组新增——groupadd

 groupadd [-g gid] [-r] 群组名称
选项与参数:
-g :后面接某个特定的 GID ,用来直接给予某个 GID ~
-r :创建系统群组啦!与 /etc/login.defs 内的 GID_MIN 有关。

  更多groupadd参考http://man.linuxde.net/groupadd

  2.群组修改——groupmod

groupmod [-g gid] [-n group_name] 群组名
选项与参数:
-g :修改既有的 GID 数字;
-n :修改既有的群组名称

  更多groupmod参考http://man.linuxde.net/groupmod

  3.群组删除——groupdel

groupdel [groupname]

  不过,这个命令需要注意,如果这个群组是某个用户的默认群组,则无法删除!(不然使用者一登录,发现默认群组都没了。。)

所以,要么你把那用户删了,要么改他的默认群组。

  更多groupdel参考http://man.linuxde.net/groupdel

  4.群组管理员设置——gpasswd

  和我们的社交帐号的群是一样的,不用什么事都通过root来干,可以设置群管理员,让群管理员来管理群

[root@study ~]# gpasswd groupname
[root@study ~]# gpasswd [-A user1,...] [-M user3,...] groupname
[root@study ~]# gpasswd [-rR] groupname
选项与参数:
:若没有任何参数时,表示给予 groupname 一个密码(/etc/gshadow)
-A :将 groupname 的主控权交由后面的使用者管理(该群组的管理员)
-M :将某些帐号加入这个群组当中!
-r :将 groupname 的密码移除
-R :让 groupname 的密码栏失效
# 关于群组管理员(Group administrator)做的动作:
[someone@study ~]$ gpasswd [-ad] user groupname
选项与参数:
-a :将某位使用者加入到 groupname 这个群组当中!
-d :将某位使用者移除出 groupname 这个群组当中。

  关于gpasswd的用法参考http://linux.51yip.com/search/gpasswd

  ACL不再赘述,待补充...

Linux入门进阶第五天——用户管理(帐号管理 )上的更多相关文章

  1. Linux入门进阶第五天——用户管理(帐号管理 )下

    一.身份切换 为了避免 rm -rf /* 的悲剧发生,平时使用时,尽量使用一般帐号!需要环境设置等必要时才使用root 1.su命令 一般地,推荐使用su - / su - username的形式来 ...

  2. Linux入门进阶第六天——登录文件、开机与模块管理

    一.登录文件概述 1.什么是登录文件 简单的说,就是记录系统活动信息的几个文件, 例如:何时.何地(来源 IP).何人 (什么服务名称).做了什么动作 (讯息登录啰). 换句话说就是:记录系统在什么时 ...

  3. Linux入门进阶第四天(下)——程序管理(补充内容)

    1.PID 触发任何一个事件时,系统都会将他定义成为一个程序,并且给予这个程序一个 ID ,称为 PID,同时依据启发这个程序的使用者与相关属性关系,给予这个 PID 一组有效的权限设置. 同一个程序 ...

  4. Linux学习笔记---用户管理---帐号管理

    root管理 (1)新增用户:useradd -u 指定UID -g 指定GID -G 作为组员添加到某个组 -M 不创建主用户目录 -m 创建主用户目录 -c 用户信息说明列 -d 指定某个目录为主 ...

  5. 鸟哥的linux私房菜——第十三章学习(Linux 帐号管理与 ACLL 权限设置)

    第十三章.Linux 帐号管理与 ACLL 权限设置 1.0).使用者识别码: UID 与 GID UID :User ID GID :group ID [root@study ~]# ll -d / ...

  6. GitHub学习心得之 安装配置与多帐号管理

    作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 GitHub学习心得之 安装配置与多帐号管理 1.前言2.GitHub Linux安装(ub ...

  7. 【Git笔记】怎样在同主机同账户下实现多个gitlab帐号管理各自的remote repo

    我们可能会遇到以下的场景: 1)多人共用同一台Linux开发机,该开发机仅仅有一个共用的work帐号,非常多人都用这个帐号登录主机进行日常开发. 2)该work帐号下统一安装了gitclient供多人 ...

  8. linux用户帐号管理&sol;etcpasswd 和&sol;etc&sol;shadow文件

    #学习鸟哥的linux私房菜 /etc/passwd的文件构造: dahu@dahu-OptiPlex-:~/myfile/VideoFile$ head /etc/passwd root:x:::r ...

  9. Linux入门篇(五)——Shell(一)

    这一系列的Linux入门都是本人在<鸟哥的Linux私房菜>的基础上总结的基本内容,主要是记录下自己的学习过程,也方便大家简要的了解 Linux Distribution是Ubuntu而不 ...

随机推荐

  1. 浅谈 PHP 与手机 APP 开发(API 接口开发) -- 转载

    转载自:http://www.thinkphp.cn/topic/5023.html 这个帖子写给不太了解PHP与API开发的人 一.先简单回答两个问题: 1.PHP 可以开发客户端? 答:不可以,因 ...

  2. Provisioning Services 7&period;6 入门到精通系列之二:基础架构环境

    在阅读本博文之前强烈建议同学们提前了解Citrix XenDesktop和XenApp等产品,并对PVS相关产品概念架构有深入的理解.  1.1  以下是在上一章节中规划的本次测试环境的配置清单(后续 ...

  3. Rescue

    1039: Rescue Time Limit: 1 Sec  Memory Limit: 32 MBSubmit: 1320  Solved: 306 Description Angel was c ...

  4. 解决 jersey javax&period;ws&period;rs&period;core&period;UriBuilder&period;fromUri&lpar;UriBuilder&period;java&colon;119&rpar;

    检查是否Jar冲突 保留一个jersey-server-*.jar

  5. PHP 超级全局变量

    超级全局变量在PHP 4.1.0之后被启用, 是PHP系统中自带的变量,在一个脚本的全部作用域中都可用. PHP中预定义了几个超级全局变量(superglobals) ,这意味着它们在一个脚本的全部作 ...

  6. ANDROID&lowbar;MARS学习笔记&lowbar;S01原始版&lowbar;023&lowbar;MP3PLAYER004&lowbar;同步显示歌词

    一.流程分析 1.点击播放按钮,会根据lrc名调用LrcProcessor的process()分析歌词文件,得到时间队列和歌词队列 2.new一个hander,把时间队列和歌词队列传给自定义的线程类U ...

  7. 键盘皇者 RealForce 104Pro独家评测

    http://tech.sina.cn/?sa=t84d20738943v44&page=2&pwt=rest2&vt=4&from=mbaidu&clickt ...

  8. 复用TCP连接提升流媒体服务器之间流量转发效率

    由于媒体推流客户端所在地域不同.所接入网络运营商不同.就近接入原则等因素,导致不同的视频推流客户端会推流至不同的流媒体服务器(本文主要针对目前WEB或手机的基于TCP的流媒体服务器),在某流媒体服务器 ...

  9. 使用VMware安装linux虚拟机以及相关配置

    前言 使用VMware安装虚拟机这个一般都知道,操作简单.而本文主要讲使用虚拟机的后续相关配置.并记录使用过程中遇到的问题以及一些技巧.本篇文章以后回持续更新的... 安装包准备 VM:12 Linu ...

  10. 爬坑!OpenCV打开双目摄像头

    1.首先找到双目摄像头的VideoCapture的设备号,记住定义时要采用降序的方法定义:cv::VideoCapture Rcap(1); cv::VideoCapture Lcap(0); 2.分 ...