Linux系统中新建账户以及群组_linux 群组项目一般建在哪里-程序员宅基地

技术标签: linux  centos  

1.Linux系统中的账户

    Linux系统中的账户可以分为两大类:系统账户和普通账户。
    系统账户是给计算机中各种不同的功能创建的特殊账户,系统上运行的程序通过这些特殊账户来使用计算的各种资源和服务。早期的程序是通过管理员账户(root)来获得计算机的各种服务,为了增加系统的安全性,现在计算机上各种服务都分别创建有相应的系统账户。Linux系统预留了500以下的UID给这些系统账户,普通用户创建账户时,UID的值一般会从500开始,将第一个可用UID分配给这个新创建的账户。
    在Linux系统中,文件的属性和权限是和账户ID(UID)相一致的,但我们经常用到的是账户名称。不过没关系,在Linux系统中有一个/etc/passwd文件,该文件记录着账户名、账户ID(UID)和账户的一些其它信息,可以通过访问该文件获取账户的信息。
/etc/passwd

    从图中可以看出,文件中每一行记录的是系统中的一个账户。每条记录有7段信息,它们之间用分隔符:断开。每一段信息的含义如下表所示:

记录段 记录段含义
账户名称
账户密码,因为/etc/passwd文件经常会被程序访问,为了提高账户的安全性,密码以x代替。账户的密码以加密的形式存储在/etc/passwd文件中
账户的UID(数字形式)
账户的初始群组ID(数字形式)
账户的信息说明栏
账户的HOME目录的位置,当登入系统时,账户会根据该信息进入到账户家目录
账户的默认shell

/etc/shadow
    为了提高系统的安全性,Linux系统将账户的密码都保存在了另外一个文件/etc/shadow中。只有管理员帐户(root),才能查看这个文件;只有特定的程序(如登陆程序),才能访问该文件。

    从图中可以看出,/etc/shadow文件中每一行记录的是系统中的一个账户和对应的密码。每条记录有9个字段信息,它们之间用分隔符:断开。每一段信息的含义如下表所示:

记录段 记录段含义
账户名称
账户密码,这是经过加密的账户密码,与账户名相对应
最近更动密码的日期,显示的是自1970.01.01开始,到密码被更动日期的总天数
密码不可被更动的天数,密码更改之后的一段时间内不可再更改密码
密码需要重新变更的天数,在不可变更的天数之后,在规定的时间内要重新更改密码
密码需要变更期限前的警告期限,在密码到达变更期限前的一段时间内,提醒账户修改密码
密码到达变更期限后的恕限时间,在到达变更期限时密码仍然没有被修改,此时账户就要失效。但仍留有恕限期限,在该期限内仍然可以登录账户并修改密码。如果仍不更改的话,账户就要失效了,无法再登录!!!
账号失效日期,无论对密码有何种设置,到达这个日期时,账号就会失效,无法再登录。显示的是自1970.01.01开始,到密码失效日期的总天数
保留,预留给以后的功能使用

2.Linux系统中的群组介绍

    Linux中记录账户信息的档案是/etc/passwd和/etc/shadow,那么Linux系统中的群组是否也有相应的记录档案呢?没错,当然存在。/etc/group和/etc/gshadow两个文件保存着Linux系统的群组信息。
/etc/group

    /etc/group文件记录系统中的群组以及群组对应的GID等信息。每一行就是一条记录,每条记录分为四段,各段之间使用:间隔。各段的含义如下表所示:

记录段 记录段含义
群组名称,初始群组与账户的名称相同
群组密码,通常不需要设定。同样,这里的密码被使用字符x代替了,真正的密码在文件/etc/gshadow中
群组的ID(GID值)
该群组的组成员列表

    仔细观察第四个字段,我们可以发现:一个账号可以同时属于多个群组。那么从账号的角度看,这些群组有什么不同呢?还有我们在创建文件时,文件属组是哪一个群组呢?即文件上的属组是怎么确定的呢?
    有效群组与初始群组

    在图片中我们可以看到,/etc/passwd中有一条Bitter账户的记录。在该记录中,账户Bitter的属组GID为500,对应的群组名称与账户名称相同,都是Bitter,该群组就是账户Bitter的初始群组。而且可以看到,账户Bitter不在群组的成员列表中。

    groups命令可以看到当前账户所支持的群组,例如,当前是以root(管理员)账户登陆的系统,该账户是群组root和users的成员。对于属组为root和users的文件,账户root就拥有该文件属组对应的读/写/执行权限。但是,如果一个账户属于多个群组的话,我们创建的文件属组那一栏信息会是哪一个群组呢?答案是,我们新创建文件的属组是账户的有效群组。有效群组就是groups命令列出的第一个群组。

    使用newgrp命令可以改变账号的有效群组。newgrp命令会开启一个子shell,在子shell中会以指定的群组作为账户的有效群组,并且在子shell中创建的文件会以指定的群组作为属组。当创建完成后,可以使用exit命令退出子shell,如上图所示。另外,在指定有效群组时,被指定群组需要满足两个要求:
    ①被指定群组在/etc/gshadow中的密码栏合法(不是以!开头);
    ②本账户必须要在被指定群组的成员列表中。
/etc/gshadow

    /etc/gshadow文件记录系统中的群组以及群组对应的密码等信息。每一行就是一条记录,每条记录分为四段,各段之间使用:间隔。各段的含义如下表所示:

记录段 记录段含义
群组名称
加密后的群组密码,开头为!则表示无法登入。但大多数的群组不设置密码,即密码栏为空
群组的管理员账户列表
该群组的组成员列表

    群组密码栏的主要作用在于,使用newgrp命令,将不属于群组中的成员临时的加入到该群组中,从而使用该群组的功能。

3.Linux系统中账户的创建、修改和删除

    管理员(root)账户登陆Linux系统时,可以使用文本编辑器直接对/etc/passwd文件和/etc/shadow文件进行编辑,达到管理账户的目的。但这两个文件很重要,一不留神搞了一些小破话就会使得系统无法读取它的内容,造成用户无法正常登陆的严重后果。因此,对于这两个文件,一般都是使用专门的工具进行修改。
添加新用户:useradd命令
    ①以useradd带选项方式添加账户
SYNOPSIS:
    useradd [-u UID] [-g initial_group] [-G other_group] -[Mm] [-c 说明栏] [-d home] [-s shell] username
OPTIONS:

选项 含义
-u 给该账号指定一个特定的UID
-g 给该账号指定特定的初始群组(initial group)
-G 指定该账号可以支持的群组
-M 强制!不给该账号建立使用者家目录;有些Linux发行版在创建账户时会预设创建家目录,可以用该参数取消创建。
-m 强制!给该账号建立使用者家目录;有些Linux发行版在创建账户时预设不创建账户家目录,可以使用该参数强制建立家目录
-c 设定账号的说明内容,保存在账户记录的第五段中
-d 给账号指定家目录
-r 建立系统账号
-s 给账户指定默认的shell

    使用useradd带选项方式创建账户,示例如图所示

    ②以useradd默认方式添加账户
SYNOPSIS
    useradd username
    使用useradd默认选项创建账户,示例如图所示

    我们以默认方式创建账户时,没有提供任何的参数,这时useradd命令会根据相关档案: /etc/default/useradd、 /etc/login.dfs和/etc/skel/*,来设置账户的基本信息。
/etc/default/useradd

/etc/login.defs

/etc/skel/*
    在创建账户时,账户家目录中预存的内容就是/etc/skel目录下的内容,也就是创建用户时,默认创建的账户家目录中的内容是从/etc/skel中复制过来的。所以,当我们对该目录下的内容做一些改动时,这些变动就会被应用到新创建的所有账户中。/etc/skel/下的内容如图所示:

使用passwd命令管理账户密码

    我们可以看到,刚刚创建的两个账户BitTest和Bit_Test1,它们在文件/etc/shadow中对应的密码栏为!,表示该账号目前是被封锁的。如果想要能够使用账户,还需要使用passwd命令该账户设置密码。
    root账户具有管理员权限,可以修改其他用户的密码,并且对密码格式的要求也非常低,可以不遵守系统中的密码格式要求。但对于普通账户来说,它只能修改自己的密码,并且还需要旧密码的验证。在密码格式上除了需要满足/etc/login.defs中规定的最少字符数的要求,还要通过/etc/pam.d/passwd这个PAM模块的检验。总的来说,普通用户的密码格式最好满足以下要求:
    (1)密码不能与账户名相同;
    (2)密码尽量不要选择字典中会出现的字符串;
    (3)密码需要超过/etc/login.defs设定的最少字符数,通常设置超过8个字符。
    另外,passwd命令除了可以设置新创建账户的密码外,也可以结合具体的选项,对账户密码进行管理。
SYNOPSIS:
passwd [-liunxwedfkS–stdin] username
OPTIONS:

选项 含义
-n 设定密码不可变更天数,/etc/shadow中记录的第四栏信息
-x 密码需要重新变更的天数,/etc/shadow中记录的第五栏信息
-w 设置密码需要变更期限前的警告期限,在密码到达变更期限前一段时间内,提醒账户修改密码,/etc/shadow中记录的第六栏信息
-i 设置密码过期的恕限时间,密码过了需要变更期限而没有重新更改密码,密码已经失效了,但在恕限期限内仍可以使用该账户。如果过了恕限时间,仍然没有更改密码,则密码就会失效,该账户就无法再登录。-1表示超出密码需要重新变更的天数后,账户仍然可以一直使用,/etc/shadow记录中的第七栏信息
-e 强制账户在下次登录时修改密码
-l (L的小写形式)将账号的密码锁住,该账户无法再登录,/etc/shadow中记录的第二栏信息
-u 将账号的密码解锁,/etc/shadow中记录的第二栏信息
-d 将账户的密码删除,账户可用空密码登录系统
-f 强制操作
-k 表示只变更失效密码,如果密码没有失效,则密码不变
-S 查看账户的密码状态,以及密码所采用的加密算法等
--stdin 通过标准输入给账户重新设置密码

    使用passwd命令管理账户密码,示例如图所示:

使用chage管理账户密码
SYNOPSIS:
    chage [dEmMWIl] username
OPTIONS:

选项 含义
-d 设置最后一次变更密码的日期,可以使用距1970.01.01的总天数指定日期,也可以使用”YY-MM-DD”的形式指定日期。设置为0,则代表下次登录强制修改密码,/etc/shadow记录的第三字段信息
-E 以”YY-MM-DD”的形式指定账户的失效日期,0表示立即失效,-1表示账户永远不失效,/etc/shadow记录的第八字段信息
-m 设定密码不可变更天数,0地表任何时候都可以更改密码,/etc/shadow记录的第四字段信息
-M 密码需要重新变更的天数,需要在规定的时间内变更密码,不然密码会失效。将天数设置为99999的话,差不多会有270多年,基本上代表密码不会失效,/etc/shadow记录中第五字段信息
-W 设置密码需要变更期限前的警告期限,在密码到期前规定的天数内给账户发出警告,/etc/shadow记录中的第六字段信息
-I (i的大写形式)设置密码过期的恕限时间,账户过了需要更改期限没有重新更改密码,密码就会失效,但在恕限期限内仍可以使用该账户。如果过了恕限时间,仍然没有更改密码,则密码就失效,账户无法再登录。-1表示密码失效后,账户仍然可以一直使用,/etc/shadow记录中的第七字段数据
-l (L的小写形式)查看帐户的密码状态

    使用chage命令管理账户密码,示例如图所示:

修改账户:usermod命令
    如果需要对系统中的账户信息进行修改,有两种方式:在root权限下使用文本编辑器直接对/etc/passwd、 /etc/shadow 等文件进行修改;或者使用usermod命令对文件进行修改。为了避免因一些失误对系统造成不可挽回的损失,建议使用第二种方法对账户信息进行修改。
    使用usermod命令对账户进行修改
SYNOPSIS:
    usermod [-cdegGlsuLU] username
OPTIONS:

选项 含义
-c 修改账户说明栏信息
-d 修改账户的家目录
-e 以”YY-MM-DD”的格式修改账户的有效日期(/etc/shadow中第八个字段的内容)
-g 修改账户的初始属组(/etc/passwd中账户记录的第四个字段的内容)
-G 修改该账户所属的群组
-l (L的小写形式)修改账号的名称
-s 修改账户的默认shell
-u 修改账户的UID
-L 暂时将账户的密码锁住
-U 将账户解锁

    使用usermod命令修改账户,示例如图所示:

删除账户,userdel指令
SYNOPSIS:
    userdel [-r] username
OPTIONS:
    -r:将账户的家目录一同删除;
    使用userdel命令删除账户,示例如图所示:

以普通账户身份进行账户管理
    上面介绍的账户管理命令:useradd、usermod和userdel等,只有管理员(root)账户才能够使用。普通账户可以使用的命令有chsh、chfn、finger等。
使用chsh命令改变账户的默认shell
SYNOPSIS:
    chsh –l username:查看系统可用shell(/etc/shells中的内容,且参数为L的小写形式)
    chsh –s shell的绝对路径 username:修改账户username的默认shell
    使用chsh命令改变账户的默认shell,示例如图所示:

使用chfn命令添加账户基本说明信息,并使用finger查看
SYNOPSIS:
    chfn [-foph] username
OPTIONS:
    -f:所希望的账户名信息Name
    -o:办公室住址Office
    -p:办公室电话号
    -h:家中的电话号
    使用chfn命令添加账户基本说明信息,示例如图所示:

4.系统中组的创建、删除和修改

添加群组:groupadd命令
SYNOPSIS:
    groupadd [-g gid][-r] groupname
OPTIONS:

选项 含义
-g 给群组指定GID
-r 建立系统群组

    使用groupadd命令添加群组,如图所示:

修改群组:groupmod命令
SYNOPSIS:
    groupmod [-g gid] [-n groupname] groupname
OPTIONS:

选项 含义
-g 修改群组的GID
-n 修改群组名称

    使用groupmod命令修改群组,如图所示:

使用gpasswd命令设置群组密码、添加群组管理员账户
SYNOPSIS1:
    gpasswd groupname :给groupname群组设置密码;
SYNOPSIS2:
    gpasswd [-rR] groupname
OPTIONS:

选项 含义
-r 将groupname 密码移除,可以无密码登入
-R 使groupname密码失效

SYNOPSIS3:
    gpasswd [-A user1,user2,…] [-M user3,user4,…] groupname
OPTIONS:

选项 含义
-A 给群组设置管理员
-M 给群组添加账户成员

    使用gpasswd命令设置群组密码、添加群组管理员账户,如图所示:

5.改变文件属性(改变文件属主、属组)

    知道了Linux系统中的账户和群组的概念,文件的属主和属组的概念也就不难理解了。在使用Linux系统的时候,还经常遇到一个问题:文件属主和属组的变更问题。比如说,我们从别的用户那儿拷贝了一份很重要的文件,但由于文件的属主是别的用户,所以我们可能无法拥有这个文件的所有权限。这时,我们就需要变更文件的属主,以获得该文件的所有权限。
变更文件所属群组:chgrp命令
SYNOPSIS:
    chgrp [-R] groupname dirname/username
OPTIONS:
    -R:进行递归的持续变更,会将目录、目录下的所有文件包括次目录和次目录下所有文件的属组都更改为指定的群组。
    使用chgrp命令改变文件或目录的属组,如下图所示:

变更文件的属主:chown命令
SYNOPSIS:
    chown [-R] username dirname/filename
    chown [-R] username[:groupname] dirname/filename
    chown [-R] username[.groupname] dirname/filename
    使用chown命令改变文件或目录属主,如下图所示:

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/LQ_bit/article/details/104627280

智能推荐

鸡兔同笼应用题 枚举法 python程序_鸡兔同笼流程图python-程序员宅基地

文章浏览阅读1.2k次,点赞2次,收藏2次。用Python做各种各样的问题——枚举 鸡兔同笼。_鸡兔同笼流程图python

mysql数据库存储过程之case_mysql 存储过程case-程序员宅基地

文章浏览阅读512次。本文介绍通过case语法结构。_mysql 存储过程case

iOS安全攻防之代码混淆-程序员宅基地

文章浏览阅读68次。  iOS 代码安全之代码混淆实践:  前言:  在8月份的时候写了个关于 class-dump 反编译的文章(使用 Class-dump 反编译),利用 class-dump 工具可以反编译出工程的头文件,这样很方便“坏人”了解工程代码结构,参数传输,严重危及了应用安全。为了应对反编译,需要对工程进行“代码混淆”。  正文:  首先在工程目录下新建个存放反编译文件的文件..._安全攻与防篇:代码混淆

OpenGL之UBO(Uniform Buffer Object)和SSBO(Shader Storage Buffer Object)-程序员宅基地

文章浏览阅读6.4k次,点赞13次,收藏22次。OpenGL学习笔记_ssbo

python图像清晰度计算_Python 做图片清晰度识别-程序员宅基地

文章浏览阅读2.3k次。在通常情况下,图片是否清晰是个感性认识,同一个图,有可能你觉得还过得去,而别人会觉得不清晰,缺乏一个统一的标准。然而有一些算法可以去量化图片的清晰度,做到有章可循。原理如果之前了解过信号处理,就会知道最直接的方法是计算图片的快速傅里叶变换,然后查看高低频分布。如果图片有少量的高频成分,那么该图片就可以被认为是模糊的。然而,区分高频量多少的具体阈值却是十分困难的,不恰当的阈值将会导致极差的结果。我们..._python 图片的清晰度计算

Arduino UNO + DS1302 + TM1638时间显示+Proteus仿真二_tm1638 arduino-程序员宅基地

文章浏览阅读720次,点赞2次,收藏4次。Arduino UNO + DS1302 + TM1638时间显示+Proteus仿真带按键切换显示_tm1638 arduino

随便推点

python教程下载-python教程pdf下载-程序员宅基地

文章浏览阅读749次。python教程目录介绍前言 Front MatterContents1. 开胃菜 Whetting Your Appetite2. 使用Python解释器 Using the Python Interpreter2.1 调用解释器 Invoking the Interpreter2.1.1 参数传递 Argument Passing2.1.2 交互模式 Interactive Mode2.2 解..._python 教程pdf

图像复原之约束最小二乘方滤波-程序员宅基地

文章浏览阅读2.7w次,点赞24次,收藏141次。图像复原,简单讲,就是恢复图像本来的面貌,但由于各种原因如图像采集过程中出现的误差导致得到的数字图像不清晰,不是我们人眼看到的实物场景那样,因此需要采取技术手段去除图像的不清晰。约束最小二乘方滤波就是其中一种较好的方法。在维纳滤波那一篇讲过,维纳滤波要求未退化图像和噪声的功率谱必须是已知的,通常这两个功率谱很难估计,尽管用一个常数去估计功率谱比,然而并不总是一个合适的解。约束最小二乘方滤波要求噪声_约束最小二乘方滤波

ElasticSearch中的date类型_es date类型-程序员宅基地

文章浏览阅读2.5w次,点赞14次,收藏37次。1. 概述1.1 Date 数据类型Elasticsearch 数据是以 json格式存储的,而 json中是并没有 date 数据类型,因此 Elasticsearch 中虽然有 date 类型,但在展示时却要转化成另外的格式。date 类型在 Elasticsearch 展示的格式有下面几种:将日期时间格式化后的字符串,如 "2015-01-01" 或者 "2015/01/01 12..._es date类型

style="border-collapse:collapse"_table ispastefromword="true" style="border-collaps-程序员宅基地

文章浏览阅读2k次。style=“border-collapse:collapse”第一次写博客有点紧张啊。。。。。先拿一个简单的试试手。。。咳咳,下面进入正题了!!!!关于table中的**style=“border-collapse:collapse”**和没有style样式的table给大家做一个简单的比较。下面这个是没有样式的普通的表格,只是 border=“1”但是如果在table的后边加上sty..._table ispastefromword="true" style="border-collapse:collapse; width

android基础!美团Android开发工程师岗位职能要求,最强技术实现_美团安卓技术-程序员宅基地

文章浏览阅读99次。开头中国互联网发展的这些年,如今90后程序员是中国程序员的主力军,互联网的热潮也让一批批00后蠢蠢欲动,尝试涌入互联网圈。当程序员容易,当一个优秀的程序员需要不断学习,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。1、自我介绍。自我介绍其实是个比较关键的过程,这基本上决定了后续环节将会问哪些问题以及初步给你的评分定位(作为无数候选人的面试官,这一点主观上个人也是如此认为)。_美团安卓技术

667. 优美的排列 II-程序员宅基地

文章浏览阅读46次。667. 优美的排列 II()力扣667

推荐文章

热门文章

相关标签