用户和组的管理方法:
在Linux中,有两种账户:用户帐户和组账户。
因为Linux是一个多用户,多任务共同协作的系统,当有多个任务或多个用户同时运作时,要保证他们能够在系统中正常地运行,就得涉及到权限的分配问题了。在Linux中,是按AAA来分配权限的。所谓的AAA就是:
Cisco的AAA的认证体系:
Authentication:认证 核实身份是否正确
Authorization:授权 对已经核实的用户进行资源分配
Accounting: 审计 监督资源被使用的情况
当进程试图访问资源时,安全上下文会比对进程的所有者和资源的所有者的关系
首先查看进程的所有者是不是资源的所有者,
如果是,就按照属主的权限使用资源
如果不是,则判断进程的所有者是否属于资源所属组,
如果是,按照属组的权限使用资源
如果不是,则直接使用资源的其他人访问权限来使用资源
1.用户的管理
用户账户:计算机操作者在操作系统中的映射,在满足了认证条件后的身份映射。
用户分类:
超级用户(管理员):root
普通用户:
系统用户:为了保证安全,
登录用户:能够正常使用整个系统资源的用户
用户的标识:
用户的登录名称:为操作者准备的简单易记的字符标识
用户的ID(UID):为计算机系统准备的数字标识
超级用户的ID:0
系统用户:
CentOS5、 6:1-499
CentOS 7:1-999
登录用户:
CentOS 6:500-60000
CentOS 7:1000-60000
60000+的标识符为用户自定义标识
在Linux中,系统会自己完成名称解析:即从 "名字<-->ID"的相互转换。
在用户登录操作时时,需要系统中解析库和认证库。
解析库: /etc/passwd
系统利用解析库完成认证机制,验证登录是否是你声称的那个人
/etc/passwd:
name:password:UID:GID:GECOS:shell
name:登录名
password:密码字段,现在在使用了shadow机制的系统中,通常使用“x”
UID:
GID:
GECOS:comment,注释类的信息,现在一般都会用来 (可空)
directory: 用户的家目录的绝对路径,
shell: 用户的登录的绝对
认证库:
用户的认证信息库: /ect/shadow
/etc/shadow
login name: 登录名
encrypted password:加了密的密码 root:$6$0Ef5CZmupkY4oM7I$9gKtVNLW0D0IbBTduOGrm0mljjb6tWrCGNHEMsKXXA1a5krPHJxpPeeNyDU4QCStN cemiEIxJ6qvHowTvx5HA0::0:99999:7:::
bin:*:16659:0:99999:7:::
如果该位置为!,则表明用户的密码被禁用
如果该位置为*,则表明该用户为系统用户,不能登录。
如果该字段为空,则表明用户可以
在Linux当中,保存到认证库中的密码信息是经过加密保存的。
hash单项加密算法:抽取原始数据的特征信息,数据指纹。
单项加密算法的特征:
1. 只要数据相同,加密结果必然相同
2. 无论数据多大,加密结果定长输出
3. 雪崩效应
4. 不可逆
单项加密常用算法:
1. md5:message digest。 消息摘要
2. sha1: Secsure Hash Algorithm。 安全的哈希算法
3. sha224:
4. sha256:
5. sha384:
6. sha512:
如果2个密码完全相同的话,则加密后的结果也完全相同,所以在加密后的结果中,还需从熵池中抽取一个随机数。即salt:随机数。有两种抽取情况,一般情况下,我们建议使用第一种情况来抽取,因为这样更安全,
1. /dev/random: 仅仅只是从熵池中返回随机数,如果熵池随机数耗尽,则进程被阻塞。
2. /dev/unrandom: 先试图从熵池中返回随机数,如果熵池耗尽,则利用伪随机数生成器 生成伪随机数
所以最终得到的验证字符串为: 算法+salt+密码
在认证库中存放的信息: $6$salt$crytpyed_password
用户管理的命令:
useradd - 帐 号 建 立 或 更 新 新 使 用 者 的 资 讯
useradd [选项] 登录名
/etc/default/useradd
/etc/login.defs
/etc/skel
useradd [-c comment] [-d home_dir]
[-e expire_date] [-f inactive_time]
[-g initial_group] [-G group[,...]]
[-m [-k skeleton_dir] | -M] [-s shell]
[-u uid [ -o]] [-n] [-r] login
useradd -D [-g default_group] [-b default_home]
[-f default_inactive] [-e default_expire_date]
[-s default_shell]
选项:
-c, --comment COMMENT
任何字符串。通常是关于登录的简短描述,当前用于用户全名。
-d, --home HOME_DIR /PATH/TO/HOME_DIR
将创建新用户,并使用 HOME_DIR 作为用户登陆目录的值。默认值是将 LOGIN 名附加 到 BASE_DIR
后面,并使用这作为登陆目录。目录不一定必须已经存在 HOME_DIR,但是会在需要时 创建。
-g, --gid GROUPNAME
在创建时,为用户指定主组
用户初始登陆组的组名或号码。组名必须已经存在。组号码必须指代已经存在的组。
如果没有指定, useradd 的行为将依赖于 /etc/login.defs 文件中的 USERGROUPS_ENAB
参数。如果此参数设置为了 yes (或者在命令行上指定了
-U/--user-group),将会为用户创建一个组,组名和登录名相同。如果选项设置为了 no
(或者在命令行上指定了 -N/--no-user-group),useradd 会把新用户的主组设置为
/etc/default/useradd 中 GROUP 变量指定的值,再或者默认是 100。
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]
用户还属于的附加组列表。每个组都用逗号隔开,没有中间的空格。这里的组受到了 - g
选项给定的组同样的限制。默认上,用户只属于初始组。
-m, --create-home
如果不存在,则创建用户主目录。骨架目录中的文件和目录(可以使用 -k
选项指定),将会复制到主目录。
默认上,如果没有指定此选项并且 CREATE_HOME 没有启用,不会创建主目录。
-M (不能与-m同时使用)
绝不创建用户主目录,即使系统在 /etc/login.defs 中的设置 (CREATE_HOME) 为 yes。
-r, --system
创建一个系统账户。
-u, --uid UID(可超过6万的限制)
用户 ID 的数字值。此值必须为唯一的,除非使用了 -o 选项。此值必须非负,默认使用大于等于
UID_MIN,且大于任何其他用户 ID 最小值。
-s, --shell SHELL (使用绝对路径)
用户的登录 shell 名。默认为留空,让系统根据 /etc/default/useradd 中的 SHELL
变量选择默认的登录 shell,默认为空字符串。
-D:--defaults
显示或修改用户默认属性值
usermod:
选项:
-a, --append
将用户添加到附加组。只能和 -G 选项一起使用。
-c:
-g:
-G:
-d, --homeHOME_DIR
用户的新登录目录。
如果给了 -m 选项,当前主目录的内容将会移动到新主目录中,如果不存在,则创建。
-m:
-l, --loginNEW_LOGIN
用户的名称将会从 LOGIN 修改为
NEW_LOGIN。不会更改别的任何东西。特别是,用户的主目录名和邮件池也需要手动修改以和新登录名对应
-L, --lock
锁定用户的密码。这会在用户加密的密码之前放置一个“!”,可以快速禁用密码。您可以和 -p 或 -U
配合使用此选项。
注意:如果希望锁定账户(不仅仅是通过密码访问),您也需要设置 EXPIRE_DATE 为 1。
userdel:删除用户
userdel [-r] login
-r 使 用 者 目 录 下 的 档 案 一 并 移 除 。 在 其 他 位 置 上 的
档案 也 将 一 一 找 出 并 删 除 。
用户认证相关命令:
passwd:设置和查看用户的密码信息。
passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays][-S] [--stdin] [username]
1.如果省略用户名,意味着更改当前登录用户的密码
2.如果指定用户名,则更改指定用户名的密码,但只能root使用。
-S --stdin(重要)
借助于管道将输入数据流当作标准输入信息送给passwd命令,常与echo使用。
echo
2.组的管理(对比用户的管理,更容易掌握)
用户组(容器): 将具有某些相同或相似属性的用户联系在一起以便集中授权的容器。
组类别:
管理员组:
普通用户组:
系统组:
登录组:
组的标识方法:
组名:方便操作者使用
组的ID(GID):为系统提供组标志。
管理员组:
CentOS5、 6:1-499
CentOS 7:1-999
登录组:
CentOS 6:500-60000
CentOS 7:1000-60000
在Linux中,系统会自己完成名称解析:即从 "名字<-->ID"的相互转换。
在用户登录操作时时,需要系统中解析库和认证库。
解析库: /etc/group
/etc/group:
group_name:password:GID:user_list
group_name:
password: 密码占位符,默认空
GID:
user_list
组也需要认证,组也有认证库: /etc/gpasswd
组也需要密码保护:
如果组没有设置密码保护时,则不能随时加入。
以用户为核心来对组进行分类:
用户的主要组(基本组):primary
用户的附加组(附属组、额外组):Addition
根据组所容纳的用户来分:
私有组:
公共组:组中可以包含其他多个不同用户
组管理相关命令:
groupadd :
格式:groupadd [-g gid [-o]] [-r] [-f] groupname
-g gid:在创建组用户的时候,指定组账户
-r :
groupdel :
注意:如果某个组是主要组,则删除不了。
groupmod :
格式:groupmod [-g gid [-o]] [-n group_name] group
-g:
-r:
用户管理相关的命令: useradd userdel userhelper usermod
认证管理相关的命令: passwd 、gpasswd、 chage
其他相关管理命令: chsh 、 finger 、 su 、id
组认证相关命令:
gpsswd:
gpasswd [option] groupname
其他命令:
su:switch user
su USERNAME:部分切换,半切换,在切换用户时,不会重新读取目标用户
su - USERNAME(= su-l USERNAME):
-c COMMAND:并不会切换用户身份,而是以目标用户的身份执行某命令
id:显示真实的和有效的用户和组id。
真实的id:
有效的id:
id [OPTION]... [USER]
转载于:https://blog.51cto.com/liangqunzhi/1911887