一、与用户相关的几个文件

1./etc/passwd

储存用户名,格式为 用户名:密码(用密码代位符X代替):UID:GID:用户描述信息:家目录:shell

  • 用户名(login_name):是代表用户账号的字符串。通常长度不超过8个字符,并且由大小写字母和/或数字组成。登录名中不能有冒号(:),因为冒号在这里是分隔符。为了兼容起见,登录名中最好不要包含点字符(.),并且不使用连字符(-)和加号(+)打头。

  • 密码(passwd):一些系统中,存放着加密后的用户口令字。虽然这个字段存放的只是用户口令的加密串,不是明文,但是由于/etc/passwd文件对所有用户都可读,所以这仍是一个安全隐患。因此,现在许多Linux系统(如SVR4)都使用了shadow技术,把真正的加密后的用户口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一个特殊的字符,例如“x”或者“*”。

  • 用户标识号(UID):是一个整数,系统内部用它来标识用户。一般情况下它与用户名是一一对应的。如果几个用户名对应的用户标识号是一样的,系统内部将把它们视为同一个用户,但是它们可以有不同的口令、不同的主目录以及不同的登录Shell等。取值范围是0-65535。0是超级用户root的标识号,1-99由系统保留,作为管理账号,普通用户的标识号从100开始。在Linux系统中,这个界限是500。

  • 组标识号(GID):字段记录的是用户所属的用户组。它对应着/etc/group文件中的一条记录。

  • 注释性描述(users):字段记录着用户的一些个人情况,例如用户的真实姓名、电话、地址等,这个字段并没有什么实际的用途。在不同的Linux系统中,这个字段的格式并没有统一。在许多Linux系统中,这个字段存放的是一段任意的注释性描述文字,用做finger命令的输出。

  • 家目录(home_directory):也就是用户的起始工作目录,它是用户在登录到系统之后所处的目录。在大多数系统中,各用户的主目录都被组织在同一个特定的目录下,而用户主目录的名称就是该用户的登录名。各用户对自己的主目录有读、写、执行(搜索)权限,其他用户对此目录的访问权限则根据具体情况设置。

  • Shell:用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即Shell。Shell是用户与Linux系统之间的接口。Linux的Shell有许多种,每种都有不同的特点。常用的有sh(BourneShell),csh(CShell),ksh(KornShell),tcsh(TENEX/TOPS-20typeCShell),bash(BourneAgainShell)等。系统管理员可以根据系统情况和用户习惯为用户指定某个Shell。如果不指定Shell,那么系统使用sh为默认的登录Shell,即这个字段的值为/bin/sh。

注意:

a)用户自己建立的账户的UID和GID都是从500开始的,500之前为系统的保留账户。

b)Root用户的UID是0,将UID改为0就是登陆的Root账户

c)Root账户的标识符为#,其他账户都为$

2./etc/shadow

密码文件,格式为 登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志

  1. “登录名”是与/etc/passwd文件中的登录名相一致的用户账号

  2. “口令”字段存放的是加密后的用户口令字:
    1. 如果为空,则对应用户没有口令,登录时不需要口令;

    2. 星号代表帐号被锁定;

    3. 双叹号表示这个密码已经过期了;

    4. $6$开头的,表明是用SHA-512加密;

    5. $1$表明是用MD5加密;

    6. $2$ 是用Blowfish加密;

    7. $5$ 是用 SHA-256加密;

  3. “最后一次修改时间”表示的是从某个时刻起,到用户最后一次修改口令时的天数。时间起点对不同的系统可能不一样。例如在SCOLinux中,这个时间起点是1970年1月1日。

  4. “最小时间间隔”指的是两次修改口令之间所需的最小天数。

  5. “最大时间间隔”指的是口令保持有效的最大天数。

  6. “警告时间”字段表示的是从系统开始警告用户到用户密码正式失效之间的天数。

  7. “不活动时间”表示的是用户没有登录活动但账号仍能保持有效的最大天数。

  8. “失效时间”字段给出的是一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是一个合法的账号,也就不能再用来登录了。

3./etc/group

用户组的所有信息都存放在/etc/group文件中,格式为 组名:密码:组标识号:组内用户列表

a)组名:组名是用户组的名称,由字母或数字构成。与/etc/passwd中的登录名一样,组名不应重复。

b)密码:密码字段存放的是用户组加密后的密码,与用户文件中一样一般用密码代位符X代替。

c)组标识号:组标识号与用户标识号类似,也是一个整数,被系统内部用来标识组。别称GID.

d)组内用户列表:是属于这个组的所有用户的列表,不同用户之间用逗号(,)分隔。这个用户组可能是用户的主组,也可能是附加组。

4./etc/gshadow

组密码文件,格式为 组名:口令:组管理者:组内用户列表

a) 组名: 是用户组的名称,由字母或数字构成。  
b) 口令:用户组密码,这个段可以是空的或!,如果是空的或有!,表示没有密码。
c) 组管理者:这个字段也可为空,如果有多个用户组管理者,用,号分割。
d) 组内用户列表:如果有多个成员,用,号分割。

思考:创建一个系统用户需要涉及多少文件?

已知:1./etc/passwd 2./etc/shadow 3./etc/group

4./etc/gshadow 5./home 

扩展:

6./var/spool/mail

用户邮件目录,每创建一个用户就会在该目录下以用户名新建一个邮箱。

二、用户相关命令重认识

1.id查看用户

选项: -g或--group   显示用户所属群组的ID。

   -G或--groups   显示用户所属附加群组的ID。

   -n或--name    显示用户,所属群组或附加群组的名称。

   -r或--real    显示实际ID。

   -u或--user    显示用户ID。

   -help         显示帮助。

   -version      显示版本信息。

在实际使用中一般是直接使用。

例子:

 id Xs

2.useradd添加用户

选项: -u 指定用户的UID

    -g 指定用户的所属群组

    -G 将用户加入指定群组中,方式为覆盖

    -d 指定用户的家目录

    -c 指定用户的描述信息

    -s 指定用户所使用的shell

例子:

 useradd -u  -g Xs -d /home/ljq -c ABeautifulGirl -s /bin/bash MQ 

3.userdel删除用户

选项: -f:强制删除用户,即使用户当前已登录。    

    -r:删除用户的同时,删除与用户相关的所有文件。

直接使用userdel只删除用户但是不删除其家目录和其他文件,使用userdel -r删除用户及其一切文件。

例子:

 userdel cnblogs
userdel -r MQ

4.usermod修改用户基本信息

选项:-c<备注>:修改用户帐号的备注文字;

     -d<登入目录>:修改用户登入时的目录;
-e<有效期限>:修改帐号的有效期限;
   -f<缓冲天数>:修改在密码过期后多少天即关闭该帐号;
   -g<群组>:修改用户所属的群组;
   -G<群组>;修改用户所属的附加群组,方式为覆盖;

    -aG<群组>;修改用户所属的附加群组,方式为覆盖;

   -l<帐号名称>:修改用户帐号名称;    
   -L:锁定用户密码,使密码无效;   
   -s<shell>:修改用户登入后所使用的shell;   
   -u<uid>:修改用户ID;   
   -U:解除密码锁定。
例子:
 useradd -s /sbin/nologin -c test ljq
passwd ljq
tail - /etc/passwd
usermod -u -aG Xs -c ABeautifulGirl -s /bin/bash -l MQ ljq

注意:

在使用-d修改用户家目录时,直接修改是没有作用的而且会造成用户无法登录。

如下图:

图一可以正常登录

图二更改用户家目录操作

图三再次登录提示找不到家目录

因为在/home下没有/lv目录,那么我尝试创建一个/lv目录,尝试在有/home/lv目录时能否登录

图四为创建/home/lv操作

图五提示信息变为找不到"/home/lv/.local"文件

原来在家目录里还有一些看不见的隐藏配置文件,如果不将它们拷贝过去同样无法登录。

图六为MQ账户家目录下的隐藏配置文件(之前MQ账户叫做ljq,因此家目录为/home/ljq,我们利用usermod改变账户名称时,其他文件名称不变)

我们尝试将/home/ljq完整拷贝到/home/lv,再看看能否登陆

图七为拷贝操作

图八可登录

5.groupadd添加组

选项: -g:指定新建工作组的id

    -r:创建系统工作组,系统工作组的组ID小于500;

    -K:覆盖配置文件“/ect/login.defs”;

    -o:允许添加组ID号不唯一的工作组。

例子:

 groupadd -g  mm

6.groupmod修改组基本信息

选项: -g<群组识别码>:设置欲使用的GID;

    -o:重复使用GID;

    -n<新群组名称>:设置欲使用的群组名称。

例子:

 groupmod -g  -n xq mm

7.groupdel删除组

例子:

 groupdel xq

 

Linux菜鸟起飞之路【五】权限管理(一)的更多相关文章

  1. Linux菜鸟起飞之路【六】权限管理(二)

    一.权限信息详解   ls -l 文件 //查看文件权限写法1 ll 文件 //查看文件权限写法2 ls -dl 目录 //查看目录权限写法1 ll -d 目录 //查看目录权限写法2 文件权限格式: ...

  2. Linux菜鸟起飞之路【十】进程管理

    一.基本概念 进程:程序的一次动态执行 守护进程:在后台运行并提供系统服务的进程 僵尸进程:完成了生命周期但却依然留在进程表中的进程,我们称之为 “僵尸进程” 父进程:指已创建一个或多个子进程的进程. ...

  3. Linux菜鸟起飞之路【二】Linux基本常识

    一.Unix操作系统基本常识 1.什么是Unix? Unix是一个计算机操作系统,是一个用来协调.管理和控制计算机硬件与软件资源的控制程序. 2.Unix操作系统的特点? 多用户与多任务.多用户表示在 ...

  4. Linux菜鸟起飞之路【一】基本知识与Linux的安装

    一.操作系统基本常识 1.操作系统的定义:操作系统是用来协调.管理和控制计算机硬件与软件资源的系统程序,介于硬件与应用程序之间. 2.操作系统内核的定义:操作系统内核是一个管理和控制程序,负责管理计算 ...

  5. Linux菜鸟起飞之路【三】Linux常用命令

    一.Linux命令的基本格式 命令 [选项] [参数] a)命令:就是告诉操作系统要做什么 b)选项:说明命令的运行方式,有的会改变命令的功能,选项通常以“-”开始 c)参数:说明命令的操作对象,如文 ...

  6. Linux菜鸟起飞之路【九】系统启动流程

    Linux系统启动流程 BIOS -> MBR  -> BootLoader -> Kernel -> init 1.打开电源后,计算机从主板的BIOS中读取其中存储的程序.这 ...

  7. Linux菜鸟起飞之路【八】文本编辑器

    在Linux中,文本编辑器有两个,VI和VIM.这两个编辑器用法差不多,但vim是vi的升级版,所以功能更强大一些. vim编辑器一共有三种模式,命令行模式.编辑模式和扩展模式. 进入vim界面,首先 ...

  8. Linux菜鸟起飞之路【四】绝对路径、相对路径及常用目录

    一.绝对路径与相对路径 Linux操作系统中存在着两种路径:绝对路径和相对路径.我们在访问文件或文件夹的时候,其实都是通过路径来操作的.两种路径在实际操作中能起到同等的作用. 在开始具体介绍之前,我们 ...

  9. Linux菜鸟起飞之路【七】文件合并、归档和压缩

    一.文件合并操作 1.覆盖符号与追加符号 a)“>”代表将左边文件的内容覆盖右边文件的内容,如果右边文件不存在则创建这个文件 b)“>>”代表将左边文件的内容追加到右边文件中,如果右 ...

随机推荐

  1. Swing 实现的Gui链表

    https://gitee.com/dgwcode/MyJavaCode -Freight类可以实现的功能·构造方法:初始空车厢有5个·装货:当运往某地点的货物大于等于4个的时候,如果有空车箱,则先占 ...

  2. css中的各类问题

    1.水平垂直居中 一.水平居中 (1)行内元素解决方案 只需要把行内元素包裹在一个属性display为block的父层元素中,并且把父层元素添加如下属性即可: .parent { text-align ...

  3. devOps开发(Web API 实例)dotnet core 和 Azure PaaS服务

    使用 dotnet core 和 Azure PaaS服务进行devOps开发(Web API 实例) 作者:陈希章 发表于 2017年12月19日 引子 这一篇文章将用一个完整的实例,给大家介绍如何 ...

  4. eclipse导入基于maven的java项目后没有Java标志和没有maven Dependencies有解决办法

    没有java标志,不识别为Java项目,右键项目-->Properties-->Project Facets-->勾选Java   确定就可以了. 没有maven Dependenc ...

  5. python 4学习 list 和 tuple

    list Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素. 比如,列出班里所有同学的名字,就可以用一个list表示: >>> ...

  6. Spark Mllib里的向量标签概念、构成(图文详解)

    不多说,直接上干货! Labeled point: 向量标签 向量标签用于对Spark Mllib中机器学习算法的不同值做标记. 例如分类问题中,可以将不同的数据集分成若干份,以整数0.1.2,... ...

  7. 关于编译错误ambiguous call of overridden pre R14 auto-imported BIF get/1

    今天写代码用到了进程字典,出现了一个编译错误 根据相关提示改成了erlang:put erlang/get以后即编译通过

  8. CF1088D Ehab and another another xor problem

    思路: 根据异或的性质一位一位来搞.参考了https://blog.lucien.ink/archives/362/ 实现: #include <bits/stdc++.h> using ...

  9. 微信成为HTML5技术流行的最大推手

    很多热点的事件都是厚积薄发,HTML5就是如此.此前iOS和Android系统已经放弃了Flash,这让HTML5有了一个天然的成长基础.而现在手机硬件的提升和HTML5本身的完善,使得基于HTML5 ...

  10. MongoDB远程定时备份与还原

    全手打原创,转载请标明出处:https://www.cnblogs.com/dreamsqin/p/10885165.html,多谢~=.= 备份命令mongodump脚本语法及各项参数含义 mong ...