越是对服务器安全性要求高的服务器,越需要建立合理的用户权限等级制度和服务器操作规范。在Linux中主要是通过用户配置文件来查看和修改用户信息。

1 用户信息文件

(1)用户信息文件/etc/passwd

vim命令显示该文件的内容:

root:x:::root:/root:/bin/bash

bin:x:::bin:/bin:/sbin/nologin

daemon:x:::daemon:/sbin:/sbin/nologin

可以发现,该文件的每一行共有7个字段。其中:

第1个字段是用户名称;

第2个字段是密码标志;

第3个字段是UID(用户标志),其中0表示超级用户(当普通用户的UID改为0时,服务器将该用户视为超级用户)。1~499为系统用户(伪用户),不能登陆,也不能删除,500~65535为普通用户,因此,新建的第一个用户的UID即为500。

第4个字段为GID(用户初始组ID)。

初始组是指用户一登陆就立即拥有这个用户组的相关权限,每个用户的初始组只能有一个,一般就是和这个用户的用户名相同的组名作为这个用户的初始组。

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

第5个字段为用户说明。可以添加,也可以不添加。

第6个字段为家目录。普通用户的家目录一般为/home/用户名/,超级用户的家目录为/root/。

第7个字段表示登陆之后的Shell。Shell是Linux的命令解释器,除了标准的Shell是/bin/bash之外,如果暂时禁用用户时,可将其写为/sbin/nologin。

(2)影子文件/etc/shadow

1)/etc/shadow的内容:

root:$$NvfaINezKBg3Cqn7$bB5im5NRggTOa45clyXAXjud4YDhyDlTUgBfqy51UieAx1aUOreJCyPkoaG4MRUkSJGp2Xd9lnqXPIHEfM.4A0:::::::

bin:*:::::::

daemon:*:::::::

可以发现,影子文件由9个字段组成。其中:

第1个字段表示用户名。

第2个字段表示加密密码。CentOS 6.5已经加密算法从MD5升级为SHA512散列加密方法。如果密码是"!!"或"*"代表没有密码,不能登陆,即为伪用户。

第3个字段为密码最后一次修改日期,使用1970年1月1号作为标准时间,每过一天时间戳加1。

第4个字段为两次密码修改设定的间隔时间(该时间基于与第3个字段)。

第5个字段表示密码有效期(和第2字段相比)。

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

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

第8个字段表示账号失效时间(要用时间戳表示)。其中0表示密码过期后立即失效,-1表示密码永远不会失效。

第9个字段保留。

2)时间戳的换算

把时间戳换算为日期,其命令为:

[root@localhost ~]# date -d "1970-01-01 16461 days"

Mon Jan  :: CST 

将日期换算为时间戳,其命令为:

[root@localhost ~]# echo $(($(date --date="2015/01/26" +%s)/86400+1))

16461

(3)组信息文件和组密码文件

1)组信息文件/etc/group

[root@localhost ~]# vim /etc/group

root:x::

bin:x::bin,daemon

daemon:x::bin,daemon

sys:x::bin,adm

adm:x::adm,daemon

从组信息文件中可以看出,共有4个字段。

第1个字段为组名;

第2个字段为组密码标志(组密码不常用);

第3个字段为GID(组ID);

第4个字段为组中附加用户。

2)组密码文件/etc/gshadow

[root@localhost ~]# vim /etc/gshadow

root:::

bin:::bin,daemon

daemon:::bin,daemon

sys:::bin,adm

adm:::adm,daemon

组密码文件也具有4个字段:

第1个字段为组名;

第2个字段为组密码;

第3个字段为组管理员用户名;

第4个字段为组中附加用户。

2 用户管理相关文件

1)用户的家目录

普通用户的家目录一般为/home/用户名/,所有者和所属组均为此用户,权限为700。

超级用户的家目录为/root/,所有者和所属组都是root用户。如果将普通用户修改为超级用户时,普通用户的家目录不会改变。

2)用户的邮箱

新建用户的邮箱的路径一般为/var/spool/mail/用户名。

3)用户模板目录

用户的模板目录为/etc/skel,每创建一个用户,用户的家目录都会从该目录下拷贝。

3 用户管理命令

(1)useradd

1)格式为:useradd [选项] 用户名

其中:-u(UID)表示手工指定用户的UID号,-d(家目录)表示手工指定用户的家目录,-c(用户说明)表示手工指定用户的说明,-g(组名)表示手工指定用户的初始组,-G(组名)表示指定用户的附加组,-s(Shell)表示手工指定用户登录的shell,默认为/bin/bash。

2)添加默认用户

例:添加默认用户ws:

[root@localhost ~]# useradd ws

该操作修改了用户的信息文件,可通过如下命令查看:

[root@localhost ~]# grep ws /etc/passwd

ws:x::::/home/ws:/bin/bash

[root@localhost ~]# grep ws /etc/shadow

ws:!!:::::::

[root@localhost ~]# grep ws /etc/group

ws:x::

[root@localhost ~]# grep ws /etc/gshadow

ws:!::

[root@localhost ~]# ll -d /home/ws/

drwx------.  ws ws  Jan   : /home/ws/

[root@localhost ~]# ll /var/spool/mail/ws

-rw-rw----.  ws mail  Jan   : /var/spool/mail/ws

例:添加指定用户:

[root@localhost ~]# useradd -u  -G root,bin -d /home/ws1 -c "test user" -s \

> /bin/bash ws1

其中"\"表示换行。

3)用户默认文件

① /etc/default/useradd

[root@localhost ~]# vim /etc/default/useradd

# useradd defaults file

GROUP=                            #用户默认组

HOME=/home                         #用户默认家目录

INACTIVE=-                            #密码过期宽限天数(shadow第7个字段)

EXPIRE=                                   #密码失效时间

SHELL=/bin/bash                     #默认shell  

SKEL=/etc/skel                         #模板目录

CREATE_MAIL_SPOOL=yes     #是否建立邮箱

② /etc/login.defs

PASS_MAX_DAYS               #密码有效期

PASS_MIN_DAYS                       #密码修改间隔

PASS_MIN_LEN                        #密码最小位数

PASS_WARN_AGE                      #密码到期警告

UID_MIN                       #最小和最大UID范围

UID_MAX          

ENCRYPT_METHOD SHA512         #加密模式

(2)修改用户密码

命令格式

passwd [选项] 用户名

用户修改自己的密码时只需输入passwd即可。其中-S表示查询用户密码状态(仅root可用),-l表示暂时锁定用户, 实际操作是在/etc/passwd文件的密码前加上了感叹号"!!",-u表示解锁用户,--stdin表示可通过管道输出的数据作为用户的密码(shell编程常用到:echo "123" | passwd --stdin ws)。

(3)修改用户信息usermod及修改用户密码状态chage

1)usermod命令格式

usermod [选项] 用户名

其中,-u表示修改用户UID,-G表示修改用户的附加组,-c表示修改用户说明,-L表示临时锁定用户,-U表示解锁用户锁定。

2)chage命令格式

chage [选项] 用户名

其中,-l选项表示列出用户的详细密码状态,-d(日期)表示修改密码最后一次更改日期(shadow第3字段),-m(天数)表示两次密码修改间隔(shadow第4字段),-M(天数)表示密码有效期(5字段),-W(天数)表示密码过期前的警告天数(6字段),-I(天数)表示密码过期后的宽限天数(7字段),-E(日期)表示账号失效时间(8字段)。

例:

chage -d 0 ws            #该命令其实是将密码修改日期归0,这样用户一登陆就要修改密码

(4)删除用户userdel和用户切换命令

1)userdel命令格式

userdel [-r] 用户名

其中,-r选项表示删除用户的同时删除用户家目录,也可以手工修改文件删除用户名。

2)切换命令格式

su [选项] 用户名

只使用"-"选项代表连带用户的环境变量一起切换,-c表示仅执行一次命令,而不切换用户身份。

例:不切换root,但执行useradd命令添加user1用户:

su - root -c "useradd user1"

4 用户组管理

1)添加用户组:groupadd [选项] 组名

其中,-g表示指定GID。

2)修改用户组:groupmod [选项] 组名

其中,-g表示修改组ID,-n表示修改组名(一般不建议修改)。

例:将组名tg修改为wstest:

[root@localhost ~]# groupadd tg

[root@localhost ~]# groupmod -n wstest tg

3)删除用户组:groupdel 组名

注意:如果组中有初始用户,不能删除该组,如果是附加用户,则不影响组的删除。

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

gpasswd [选项] 组名

其中,-a表示将用户加入组,-d表示将用户从组中删除。

例:新建一个用户ws1,将其加入wstest组中,然后删除:

[root@localhost ~]# useradd ws1

[root@localhost ~]# echo "ws1" | passwd --stdin ws1

Changing password for user ws1.

passwd: all authentication tokens updated successfully.

[root@localhost ~]# gpasswd -a ws1 wstest

Adding user ws1 to group wstest

[root@localhost ~]# gpasswd -d ws1 wstest

Removing user ws1 from group wstest

Linux学习笔记(12)用户和用户组管理的更多相关文章

  1. linux常用命令之--用户与用户组管理命令

    linux的用户与用户组管理命令 1.用户和群组 groupadd:用于添加新的组群 其命令格式如下: groupadd [-option] 群组名 常用参数: -g GID:指定创建群组的GID(G ...

  2. linux —— 学习笔记(用户管理与权限控制)

    目录:1.用户的创建和管理    2.组的创建和管理 3.文件执行权限的控制 4.不用密码执行sudo 1.用户的创建和管理 用户的创建和管理: useradd.usermod . userdel . ...

  3. Linux学习笔记1_用户和权限

    自从我大微软终于放下身段,决定给开源社区一个迟来的拥抱,追随多年的拥趸们像是突然得到了女神的垂青,各种茫然失措.痛哭流涕.欢欣鼓舞,纷纷唱了起来:“等了好久终于等到今天,梦了好久终于把梦实现……”唱完 ...

  4. Liunx学习总结(三)--用户和用户组管理

    用户和组的基本概念 用户和组是操作系统中一种身份认证资源. 每个用户都有用户名.用户的唯一编号 uid(user id).所属组及其默认的 shell,可能还有密码.家目录.附属组.注释信息等. 每个 ...

  5. Linux学习笔记12—磁盘管理

    一.查看磁盘或目录的容量 1.  df命令 作用:查看已挂载磁盘的总容量.使用容量.剩余容量等,可以不加任何参数,默认是按k为单位显示的 参数: -I : 查看inodes使用状况 -h: 使用合适的 ...

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

    useradd(添加用户.在使用useradd添加一个用户后,必须使用passwd给该用户设置密码,该用户才能登陆): passwd(设置或修改用户密码): usermod(修改用户信息): chag ...

  7. linux笔记:用户和用户组管理-用户配置文件

    用户信息文件(/etc/passwd): 影子文件(/etc/shadow) 组信息文件(/etc/group)和组密码文件(/etc/gshadow):

  8. Linux学习笔记19-ssh远程管理

    远程管理 服务器一般运行在IDC机房中,一般都是通过远程管理方式对服务器进程控制. 常见的远程管理工具: RDP(remote desktop protocol)协议,window远程桌面管理 Tel ...

  9. Linux学习笔记(6)-工作管理

    什么是工作管理 工作来自job命令的翻译,job命令可以查看后台工作的进程.举例来说什么是工作管理,当你要打包一个比较大的目录时,很耗时间,但是你同时又需要使用别的命令.你会想我可以到开几个终端进行登 ...

  10. Linux学习笔记(八)权限管理命令

    权限管理命令 权限位含义 chmod chown chgrp umask默认权限 权限位含义 第1位代表文件类型 "-":普通文件 "b":块设备文件 &quo ...

随机推荐

  1. 计算城市间的球面距离(C++实现)

    #include<iostream> #include<string> #include<cmath> #include<iomanip> using ...

  2. OpenCV源码分析:RGB到其他色彩空间的转换

    1.流程调用图 2.部分代码分析 //模板函数进行颜色空间的转换 template <typename Cvt> void CvtColorLoop(const Mat& src, ...

  3. android:allowbackup=&quot;true&quot;

    <application android:allowBackup="false" android:label="@string/app_name"> ...

  4. Arrays.asList()生成的List抛UnsupportedOperationException分析

    一.背景:使用工具类 Arrays.asList()把数组转换成集合时,使用其修改集合相关的方 法,它的 add/remove/clear 方法会抛出 UnsupportedOperationExce ...

  5. UEP-下拉

    uep建立下拉 静态下拉: ①private Map<String,String> beanMap = new HashMap<String,String>(); //gett ...

  6. 精力(power)

    [问题描述]假设你有一个属性叫”精力值”, 这个属性的上限为 E, 一开始你的精力值为 E.每天结束时, 该属性会回复 R,但回复后不会超过上限 E. 现在有 N 天时间给你去工作, 若第 i 天花费 ...

  7. maven pom.xml(公司版)

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  8. windows恶意软件删除工具(MRT.exe)检查计算机是否感染病毒使用图解

    Microsoft Windows恶意软件删除工具可以检查运行 Windows XP.Windows 2000 和 Windows Server 2003 的计算机是否受到特殊.流行的恶意软件(包括 ...

  9. 伯克利、OpenAI等提出基于模型的元策略优化强化学习

    基于模型的强化学习方法数据效率高,前景可观.本文提出了一种基于模型的元策略强化学习方法,实践证明,该方法比以前基于模型的方法更能够应对模型缺陷,还能取得与无模型方法相近的性能. 引言 强化学习领域近期 ...

  10. Mysql 获取当天,昨天,本周,本月,上周,上月的起始时间

    转自: http://www.cppblog.com/tx7do/archive/2017/07/19/215119.html -- 今天 SELECT DATE_FORMAT(NOW(),'%Y-% ...