是无效登录名或您没有相应的权限_Linux编程 14 文件权限(用户列表,用户控制,模板与useradd命令)...

是无效登录名或您没有相应的权限_Linux编程 14 文件权限(用户列表,用户控制,模板与useradd命令)..._第1张图片

一. 概述

linux安全系统的核心是用户账户。 创建用户时会分配用户ID(UID)。 UID是唯一的,但在登录系统时不是用UID,而是用登录名。在讲文件权限之之前,先了解下linux是怎样处理用户账户的。以及用户账户需要的文件和工具,这样处理文件权限问题时,就知道如何使用它们了。

1.1 /etc/passwd用户文件

/etc/passwd 是用来将用户的登录名,匹配到对应的UID上。它包含了一些与用户有关的信息。下面截取二个片断。如下图所示:

是无效登录名或您没有相应的权限_Linux编程 14 文件权限(用户列表,用户控制,模板与useradd命令)..._第2张图片
b8a692887f5fb4f8eabfe0aff03c245a.png

root用户账户是linux系统管理员,固定分配给它的UID是0。 上面linux系统会为各种各样的功能创建不同的用户账户,而这些账户并不是真正的用户。它们叫作系统账户,是系统上运行各种服务进程访问资源用的特殊账户。root用户UID是0,mysql用户的UID是998。如下图所示:

c558486a414bf60fb3de8555108dd15b.png

linux系统账户预留了500以下的UID值。有些服务甚至要用特定的UID才能正常工作。在/etc/passwd文件中冒号分隔的字段包含以下信息:

 mysql:x:998:1000::/home/mysql:/bin/bash 
是无效登录名或您没有相应的权限_Linux编程 14 文件权限(用户列表,用户控制,模板与useradd命令)..._第3张图片

1.2 /etc/shadow 用户文件  

/etc/shadow文件对linux系统密码管理提供了更多的控制。只有root用户才能访问/etc/shadow文件。比起/etc/passwd安全许多,文件内容如下图所示:

是无效登录名或您没有相应的权限_Linux编程 14 文件权限(用户列表,用户控制,模板与useradd命令)..._第4张图片

比如让mysql 用户来查看该文件,是没有这个权限的。

805c4341aa866960780f175508619907.png

下是copy出来的root用户账户信息:

root:$6$BSeXl2xuiNYlDwkO$X4dfd8A97XHRO9S.9KNqL/bRX4B33tIAzOu1dwiPVLDS42YqwaY8JrwYAExGPuvc42yhnMmO28VRMP.qVjYDY1::0:99999:7:::

每条记录都有9个字段,字符串以冒号分隔的字段信息如下:第一个字段:登录名。 第二个字段:加密后的密码。其它字段以后在解读。使用/etc/shadow,可以控制用户多久更改一次密码,以及什么时候禁用该用户账户(在其它字段上设置这些功能)。

二. 用户工具管理

2.1 useradd 模板介绍

在linux系统中添加新用户的工具是useradd, 可以一次性创建新用户账户及设置用户HOME目录结构。useradd命令使用系统的默认值以及命令行参数来设置用户账户。系统默认值被设置在/etc/default/useradd文件中,可以定位到/etc/default/useradd文件,修改默认值。使用useradd -D 选项查看这些默认值。如下图所示:

是无效登录名或您没有相应的权限_Linux编程 14 文件权限(用户列表,用户控制,模板与useradd命令)..._第5张图片

如果用户不指定具体的值,使用useradd添加用户时就会使用这些默认值。默认值解释如下:

是无效登录名或您没有相应的权限_Linux编程 14 文件权限(用户列表,用户控制,模板与useradd命令)..._第6张图片

2.2 useradd -m SKEL参数是指:useradd命令允许管理员创建一份默认的HOME目录配置,然后把它作为创建新用户HOME目录的模板。这样就能自动在每个新用户的HOME目录里放置默认的系统文件(上篇讲到的系统环境变量位置)。新用户HOME目录下的系统文件模板。如下图所示:

是无效登录名或您没有相应的权限_Linux编程 14 文件权限(用户列表,用户控制,模板与useradd命令)..._第7张图片

在上篇中,知道了.bashrc, .bash_profile这些文件都是bash shell的标准启动文件。系统会自动将这些默认文件复制到你创建的每个用户HOME目录下。我的linux系统在很久前创建了一个mysql用户,下面去/home/mysql下检查有没有这些标准启动文件。

fbdcaf7549f5ecc1bff370c4742516cd.png

上图告诉我们,mysql目录不存在,这是因为创建用户默认情况下,useradd命令不会创建HOME目录,需要使用useradd -m 命令来创建HOME目录。我推测当mysql用户没有这些bash shell标准启动文件时,会去继承root用户下的标识启动文件。

上面mysql用户没有指定HOME目录,下面是创建一个新test用户,并使用参数m来创建HOME目录,并将/etc/skel目录中的文件复制了过来,/home/test 下面就有了标准启动文件。如下图所示:

是无效登录名或您没有相应的权限_Linux编程 14 文件权限(用户列表,用户控制,模板与useradd命令)..._第8张图片

再次查看passwd用户列表,多出来一个test用户,创建的这个test除了指定了HOME目录,其它参数都是使用的默认值(没有指定组,密码,过期时间)。如下图所示:

e81978a7248338b2d769e84ab7a4bedd.png

下面是切换到test用户下,如下图所示:

9b2277d7a30d83e842d90426c99d19b0.png

2.3 useradd 命令参数

要想在创建用户时改变默认值或默认行为,可以使用命令参数,下面列出一些常用参数

是无效登录名或您没有相应的权限_Linux编程 14 文件权限(用户列表,用户控制,模板与useradd命令)..._第9张图片

当创建用户账户时,如果总需要修改某个值的话,最好还是修改一下系统的默认值,修改(useradd模板),也可以使用"useradd -D 默认参数"来修改模板,这里就不再介绍useradd默认值参数。

欢迎添加个人微信号:Like若所思。

欢迎关注我的公众号,不仅为你推荐最新的博文,还有更多惊喜和资源在等着你!一起学习共同进步!

是无效登录名或您没有相应的权限_Linux编程 14 文件权限(用户列表,用户控制,模板与useradd命令)..._第10张图片

你可能感兴趣的:(是无效登录名或您没有相应的权限)