7 用户和用户组


7.1 用户配置文件

7.1.1 用户信息文件 /etc/passwd

man 5 passwd  查看配置文件功能

1字段: 用户名称

2字段: 密码标志 X代表有密码 如果用户没有密码,则只允许本地登录

3字段: UID(用户ID

           0     超级用户

           1-499 系统用户(伪用户) 绝对不能删

           500-65535  普通用户  改为0则变为管理员  UID相同被视为同一个用户

4字段: GID(用户初始组ID

5字段: 用户说明

6字段: 家目录

           普通用户: /home/用户名/

           超级用户: /root/

7字段: 登录之后的Shell

 

初始组:用户一登录就立刻拥有这个用户组的相关权限,每个用户的初始组只能有一个,一般就是和这个用户

        的用户名相同的组名作为这个用户的初始组。

附加组:指用户可以加入多个其他的用户组,并拥有这些组的权限,附加组可以有多个。

 

Shell是什么?

Shell就是Linux的命令解释器

/etc/passwd当中,除了标准Shell/bin/bash之外,还可以写如/sbin/nologin

 

7.1.2 影子文件 /etc/shadow

1字段: 用户名

2字段: 加密密码

          >加密算法升级为SHA512散列加密算法

          >如果密码位是“!!”或“*”代表没有密码,不能登录。

3字段: 密码最后一次修改日期

          >使用197011日作为标准时间,每过一天时间戳加1

4字段: 两次密码的修改间隔时间(和第3字段相比)

5字段: 密码有效期(和第3字段相比)

6字段: 密码修改到期前的警告天数(和第5字段相比)

7字段: 密码过期后的宽限天数(和第5字段相比)

          >0代表密码过期后立即失效 不写则默认为0

          >-1代表密码永远不会失效

8字段: 帐号失效时间

          >用时间戳表示

9字段: 保留


把时间戳换算为日期  date -d "1970-01-01 16866 days" #16866是时间戳,基准时间是1970-01-01

把日期换算为时间戳  echo $(($(date --date="2014/01/06" + %s)/86400 + 1)) #86400 每天的秒


7.1.3 组信息文件 /etc/group

1字段: 组名

2字段:组密码标志

3字段:GID

4字段:组中附加用户

 

 

7.1.4 组密码文件 /etc/gshadow  

用的不多

1字段:组名

2字段:组密码  用的不多,不推荐使用

3字段:组管理员用户名

4字段:组中附加用户

 

用户信息全包含在这四个文件之中,可以通过修改这四个文件来对用户做增删查改的操作

 

7.1.5 用户管理相关文件

1、用户的家目录   用户的初始登录位置

   普通用户: /home/用户名/    所有者和所属组都是此用户,权限是700

   超级用户: /root/    所有者和所属组都是root用户,权限是550

 

2、用户的邮箱

   /var/spool/mail/用户名/

 

3、用户模板目录

   /etc/skel/      创建新用户时,自动将此目录下的文件复制到新用户的家目录

 

 

7.2 用户管理命令

7.2.1 用户添加命令

useradd -u UID  手工指定用户的UID

   -d 家目录 手工指定用户的家目录

   -c 用户说明 手工指定用户的说明

   -g 初始组名 手工指定用户的初始组

   -G 附加组名 指定用户的附加组

   -s shell 手工指定用户的登录Shell。默认是/bin/bash

 

useradd sc

passwd sc

grep sc /etc/passwd

grep sc /etc/shadow

grep sc /etc/group

grep sc /etc/gshadow

ll -d /home/sc

ll /var/spool/main/sc

 

useradd -u 666 -G root,bin -d /home/sc1 -c "test user" -s /bin/bash sc


用户默认值文件:

/etc/default/useradd

GROUP=100  #用户默认组

HOME=/home #用户家目录

INACTIVE=-1 #密码过期天数(shadow文件7字段)

EXPIRE=     #密码失效时间(shadow文件8字段)

SHELL=/bin/bash #默认shell

SKEL=/etc/skel  #模板目录

CREATE_MAIL_SPOOL=yes #是否建立邮箱

 

/etc/login.defs

MAIL_DIR /var/spool/mail

 

PASS_MAX_DAYS 9999  #密码有效期(5

PASS_MIN_DAYS 0     #密码修改间隔(4

PASS_MIN_LEN  5     #密码最小5位(PAM)默认是8

PASS_WARN_AGE 7     #密码到期警告(6

 

UID_MIN   500       #最大和最小UID范围

UID_MAX   60000

 

GID_MIN   500       #最大和最小GID范围

GID_MAX   60000

 

CREATE_HOME  yes

 

UMASK 077

 

USERGROUPS_ENAB yes

 

ENCRYPT_METHOD  SHA512 #加密模式

 

7.2.2 修改用户密码

passwd -选项 用户名

       -S 查询用户密码的状态。仅root用户可用。

       -l 暂时锁定用户。仅root可用  将shadow文件中,密码项前加了!!

       -u 解锁用户。仅root可用

       --stdin 可以通过管道符输出的数据作为用户的密码

 

whoami 查看当前用户名

 

echo "123" | passwd -stdin sc

123作为sc用户的密码,用于Shell编程中

 

7.2.3 修改用户信息usermod

usermod -选项 用户名

   -u UID    修改用户的UID

   -c 用户说明 修改用户的说明信息

   -G 组名   修改用户的附加组

   -L        临时锁定用户(lock) 密码前加了!,使密码失效

   -U   解锁用户锁定(Unlock

 

 

 

7.2.4 修改用户密码状态chage  

change user password expiry information

change -选项 用户名

       -l  列出用户的详细密码状态

      -d 日期 密码最后一次更改日期(shadow 3字段)

      -m 天数 两次密码修改间隔(4字段)

      -M 天数 密码有效期(5字段)

      -W 天数 密码过期前警告天数(6字段)

      -I 天数 密码过期后宽限天数(7字段)

      -E 日期 帐号失效时间(8字段)

 

vim修改更直观

用的最多的是

chage -d 0 sc

#这个命令其实是把密码修改日期归零了(shadow3字段)

#这样用户一登陆就要修改密码

 

 

7.2.5 删除用户userdel

userdel -r 删除用户的同时删除用户家目录

 

手工删除用户

vi /etc/passwd

vi /etc/shadow

vi /etc/group

vi /etc/gshadow

rm -rf /var/spool/mail/sc

rm -rf /home/sc

 

7.2.6 查看用户ID

id 用户名

查看用户id 初始组id 附加组id

 

 

7.2.7 用户切换su  

run a Shell with substitute user and group IDs

 

env

查看用户环境变量

 

su root #只切换了部分环境变量

 

su 选项 用户名

- 连带用户的环境变量一起切换

-c 仅执行一次命令,而不切换用户身份

 

su - root -c "useradd user3"

不切换用户身份,临时调用一次root权限命令

 

exit 退出当前用户

 

 

 

7.3 用户组管理命令

添加用户组

groupadd [选项] 组名

-g GID   指定组ID

 

 

修改用户组  不建议修改组名

groupmod [选项] 组名

  -g GID 指定组ID

  -n 新组名

groupmod -n testgrp group1

把组名group1修改为testgrp

 

 

删除用户组

groupdel 组名

如果组中存在初始用户,不能删除此组

如果组中都是附加用户,可以删除

 

 

把附加用户添加入组或从组中删除

gpasswd -a 用户名  组名 #把用户加入组

   -d 用户名  组名 #把用户从组中删除

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/387294.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#调用Python模块

编程:C#调用Python模块 当下,C#与Python都是比较热门的计算机编程语言,他们各有优缺点,如果能让他们互相配合工作,那是多么美好的事情,今天我来讲解一下如何利用C#来调用Python。 如果让C#支持调用Python模…

面试简单整理之克隆

61.为什么要使用克隆? 克隆获取对象的副本,直接用复制还是一个引用。 62.如何实现对象克隆? 1.被clone的类实现cloneable接口,重写object类的clone()方法 2.如果深克隆则克隆对象的引用对象也要实现接口、重…

8 权限管理

8.1 ACL权限 8.1.1 简介与开启 用于解决身份不够用的问题 ACL(access control list) 访问控制表 ACL是存在于计算机中的一张表,它使操作系统明白每个用户对特定系统对象,例如文件目录或单个文件的存取权限。 这张表对于每个系统用户有拥有一个访问…

windows下GitHub的SSH Key 配置

https://www.jianshu.com/p/9317a927e844转载于:https://www.cnblogs.com/lishidefengchen/p/10481889.html

PyCharm调试错误

JetBrains PyCharm 2017.3.2 这就说明python.exe的环境没有配,点击蓝色的configure Python Interpreter,然后选择对应的路径就可以了

Java06集合

13 集合 实现方法时,不同的数据结构会导致性能有很大差异。 13.1 集合接口 Java集合类库将接口(interface)与实现(implementation)分离。 可以使用接口类型存放集合的应用,一旦改变了想法,可…

Tensorflow验证码识别应用

简单的Tensorflow验证码识别应用,供大家参考,具体内容如下 1.Tensorflow的安装方式简单,在此就不赘述了. 2.训练集训练集以及测试及如下(纯手工打造,所以数量不多): 3.实现代码部分(参考了网上的一些实现来完成的) main.py(主要的神经网络代码) ?123456…

9 文件系统管理

9.1 回顾分区和文件系统 分区类型 主分区:总共最多只能分四个 扩展分区:只能有一个,主分区加扩展分区最多有四个,必须再划分成逻辑分区才能使用。 逻辑分区:在扩展分区中划分的 IDE硬盘最多支持59个逻辑分区 SCSI…

Linux 桌面玩家指南:09. X Window 的奥秘

Linux 桌面玩家指南:09. X Window 的奥秘 原文:Linux 桌面玩家指南:09. X Window 的奥秘特别说明:要在我的随笔后写评论的小伙伴们请注意了,我的博客开启了 MathJax 数学公式支持,MathJax 使用$标记数学公式的开始和结…

Storm教程1理论介绍

流式计算的历史: 早在7、8年前诸如UC伯克利、斯坦福等大学就开始了对流式数据处理的研究,但是由于更多的关注于金融行业的业务场景或者互联网流量监控的业务场景,以及当时互联网数据场景的限制,造成了研究多是基于对传统数据库处理的流式化&…

梯度下降原理及Python实现

梯度下降算法是一个很基本的算法,在机器学习和优化中有着非常重要的作用,本文首先介绍了梯度下降的基本概念,然后使用python实现了一个基本的梯度下降算法。梯度下降有很多的变种,本文只介绍最基础的梯度下降,也就是批…

dagger2的初次使用

一、使用前准备 1、打开app的build.gradle文件: 顶部停用apt插件: //添加如下代码,应用apt插件 apply plugin: com.neenbedankt.android-apt dependencies中添加依赖: //Dagger2compile com.google.dagger:dagger:2.4apt com.goog…

Storm教程2安装部署

Storm 安装部署 部署Storm集群需要依次完成的安装步骤: 1.安装jdk6及以上版本;   2. 搭建Zookeeper集群;   3. 安装Storm依赖库;   4. 下载并解压Storm发布版本;   5. 修改storm.yaml配置文件;   6…

matplotlib一些常用知识点的整理,

本文作为学习过程中对matplotlib一些常用知识点的整理,方便查找。 强烈推荐ipython 无论你工作在什么项目上,IPython都是值得推荐的。利用ipython --pylab,可以进入PyLab模式,已经导入了matplotlib库与相关软件包(例如…

JAVA课程09

package 月份输出;import java.util.*;public class 月份输出 {public static void main(String[] args) {// TODO Auto-generated method stubScanner sc new Scanner(System.in);int s sc.nextInt();String a[] {"January","February","March&q…

Storm教程3编程接口

Spouts Spout是Stream的消息产生源,Spout组件的实现可以通过继承BaseRichSpout类或者其他Spout类来完成,也可以通过实现IRichSpout接口来实现。 需要根据情况实现Spout类中重要的几个方法有: open方法 当一个Task被初始化的时候会调用此…

梳理操作系统概论

1、用一张图总结操作系统的结构、功能特征、采用的技术和提供服务方式等。 2、用一张图描述CPU的工作原理。 3、用一张图描述系统程序与应用程序、特权指令与非特权指令、CPU状态、PSW及中断是如何协同工作的? 转载于:https://www.cnblogs.com/ljgljg/p/10503190.ht…

机器学习01简介

Machine Learning 是人工智能的核心,主要使用归纳、综合而不是演绎。 让计算机模拟人类行为,以获取新的知识或技能 重新组织已有的知识结构使之不断改善自身性能 一个程序能从经验 E 中学习,解决任务 T,达到性能度量值P&#xf…

位置指纹法的实现(KNN)

基本原理 位置指纹法可以看作是分类或回归问题(特征是RSS向量,标签是位置),监督式机器学习方法可以从数据中训练出一个从特征到标签的映射关系模型。kNN是一种很简单的监督式机器学习算法,可以用来做分类或回归。 对于…

室内定位系列 ——WiFi位置指纹(译)

摘要 GPS难以解决室内环境下的一些定位问题,大部分室内环境下都存在WiFi,因此利用WiFi进行定位无需额外部署硬件设备,是一个非常节省成本的方法。然而WiFi并不是专门为定位而设计的,传统的基于时间和角度的定位方法并不适用于WiFi…