越是对服务器安全性要求高的服务器,越需要建立合理的用户权限等级制度和服务器操作规范。在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系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统. 用户 也就是说任何需要使用操作系统的用户,都 ...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

随机推荐

  1. a byte of python(摘03)

    a byte of python 第七章 模块 想要在其他程序中重用很多函数,那么你该如何编写程序呢? 答案是使用模块. 模块基本上就是一个包含了所有你定义的函数和变量的文件.为了在其他程序中重用模块 ...

  2. 零件分组_DP

    问题 C: 零件分组 时间限制: 1 Sec  内存限制: 64 MB提交: 31  解决: 14[提交][状态][讨论版] 题目描述 某工厂生产一批棍状零件,每个零件都有一定的长度(Li)和重量(W ...

  3. 获取指定文件下的所有file文件

    /** * 描述:获取所有的文件列表 * @param file * @param list * @return */ private List<File> getAllFiles(Fil ...

  4. SQL Server 子查询

    这些主要是老师上课讲的一些知识点,自己做了一些整理放在这里~~~ 子查询可以是标量的.多值的或是表值的. 在期待单个值的地方可以使用标量子查询.例如,以下查询返回具有最大员工编号的员工信息: SELE ...

  5. LeetCode 171 Excel Sheet Column Number

    Problem: Given a column title as appear in an Excel sheet, return its corresponding column number. F ...

  6. October 6th 2016 Week 41st Thursday

    The outer world you see is a reflection of your inner self. 你拥有什么样的内心,你就会看到什么样的世界. And we eventually ...

  7. September 27th 2016 Week 40th Tuesday

    Friends are lost by calling too often and calling seldom. 交往过密过疏,都会失去朋友. Please mind your own busine ...

  8. Javaweb---Servlet过滤器

    Servlet过滤器从字面上的字意理解为景观一层次的过滤处理才达到使用的要求,而其实Servlet过滤器就是服务器与客户端请求与响应的中间层组件,在实际项目开发中Servlet过滤器主要用于对浏览器的 ...

  9. UISegmentedControl

    1. NSArray *segmentedArray = [[NSArray alloc]initWithObjects:@"1",@"2",@"3& ...

  10. 《CLR via C#》读书笔记(6)类型和成员基础

    6.1 类型的各种成员 在一个类型中,可以定义0个或者多个以下种类的成员: 常量 常量是在编译时设置其值并且永远不能更改其值的字段.使用常量可以为特殊值提供有意义的名称以代替数字文本,以使代码变得更容 ...