用户管理文件及介绍:
当 一台 计算机 被 多个 人 使用 时, 为了 保留 这些 人 之间 的 隐私, 所以 提出 了 “用户” 这个 概念, 不同 用户 之间 的 访问 是 需要 一些 权限 的, 这 可以 很好 的 保护 用户 之间 的 隐私, 而 有些 情况 下, 人们 希望 可以 共享 一些 文件, 多以 就 提出 了 “组” 这个 概念, 人们 可以 把 一些 用户 规划 成 一个 组, 以 方便 的 共享 某一类 问题, 所以, 组 也 可以 认为 是 用户 的 容器, 用户 的 一个 “文件夹”。
用户 这种 东西, 当然 还是 要有 用户名 和 密码 得啦~, 不过 有 密码 就 不得不 说 一下 加密 了,系统 里的 密码 当然 是 要 加密 的。。, 要不 密码 被 其他人 看到 那 这个 密码 就 没什么 意义 了。。, 这里 我们 先 说一下 加密。
加密:
常用 的 加密 形式 有 三种, 分别是:
对称加密:这个就是 用 什么 秘钥 加密 的 就 用 什么 秘钥 解密, 比较 流行 的 对称加密 有 DES, 3DES, AES。
公钥加密:这个 有 两个 秘钥, 一个 是 公开 的, 一个 是 隐藏 的, 用 公钥 进行 加密 的 文件 只能 用 私钥 进行 解密, 反之亦然, 也就是 说, 这 是 一对 秘钥, 用 其中 一个 加密 的话 就要 用 另一个 进行 解密。。, 流行 的 加密 算法 有: DSA, RSA
单向加密:这个 加密 是 不需要 解密 的, 他 加密 之后 生成 的 密文 可以 作为 这个 文件 的 唯一 标示符, 相当于 是 文件 的 ***, 一旦 文件 被 改变, 密文 也会 随之改变, 哪怕 文件 里面 只 改变 一个 字符, 也会 引起 密文 的 巨大变化, 流行 加密 算法 有 : MD5, SHA1, SHA256, SHA512, 例如 MD5 就是 应用 于 光盘 上 的, 一般 网上 下载 光盘镜像, 或者 其他 什么 的(是 什么 自己 想。。), 都会有 一段 公开 的 MD5 密文, 一旦 这个 文件 被 人更改, 那么 MD5 密文 就会 改变 的, 所以, 只要 对照 MD5 密文 就 可以 知道 这个 文件 是否 被 篡改 了, 另外, 用户 的 密码 也 可以 用 这种 形式 加密 的, 因为 这个 加密 是 单项 的, 所以, 即使 被 别人 得到 了 密文 也 不知道 这个 用户 的 密码 是 什么(。。。, 理论 上 是 这样 的, 不过 md5 解密 网站 上面 那 160t 的 密文 数据库 可 不是 闹着玩 的), 也 正是 因为 有 这种 相当 暴力 的 破解 md5 的 方法, 所以, 在 Linux 中 的 密文 是 分为 两段 的, Linux 在 加密 你的 密码 文件 时 , 会 自动 向 密码 里面 随机 加一点 其他 东西, 也就是 加点 盐,这时 即使 我们 能 解密 这个 密文 也 不会 很容易 的 得到 相应 的 密码 了。。
先 看一下 密码 加密后 是 什么 样子 的 把~, 虽然 什么 也 看不懂。。
这里面 使用 : 进行 分隔 的, 一共 8 个 段
1、 用户名
2、 加密形式 和 盐 和 加密后 的 密文
这三个 之间 是 用 $ 分隔 的
第一段 两个 $6$ 之间 的 6 是 表示 加密 方式
1: MD5 加密
2: Blowfish 加密
5: SHA-256 加密
6: SHA-512加密
第二段 就 是 盐 了, 也 就是 加密 之前 就 加进 密码 里 的 杂质
第三段 就是 加密 之后 的 密文 了。
3、 密码 修改 日期, 就是 距离 1970-1-1 的 天数。。, 这个 有点 蛋疼,怎么 什么 都是 1970.1.1
4、 密码 不可修改 的 天数, 这里 是 0.。。, 也就是 说 可以 随时 修改 密码 的
5、 密码 用 多少天 之久 就 需要 更改 密码。,这里 的 天数 也是 以 1970.1.1 为 起点 计算 的, 又蛋疼 了 一次。。。 这里 是 99999, 也 就是 永久 的 意思, 反正 现在 人类 还 活不到 那一天。。
6、 距离 密码 修改 期限 前 n 天 发出 警告, 我 这里 是 提前 一种 会 提醒 用户 更改 密码。
7、 密码 过期 宽限, 我这里 是 空, 如果 用户 没有 在 规定 时间 内 修改密码 , 那么 这个 用户 就会 给 锁定, 只能 通过 管理员 进行 解锁
8、 账号 失效 的 期限, 这个 还是 1970.1.1 为 起点 的。 , 有些 时候 需要 一些 临时 账号 的,所以 就 有了 这条 设置。。
OK, 这个 密码 文件 就 差不多 说完 了, 这个 文件 位于 /etc/shadow,
对了, 还有 最后 一个 要 说 的, 。。
注意 到 了 把。。, 这里 的 第二段, 也就是 密码段 是 两个 叹号, 这个 的 意思 是 这个 用户 已经 被 锁定 了,
--------------------------------------------------------------------------------
另外 一个 比较 重要 的 文件 也 说一下 把, 刚才 说 的 那个 是 密码 文件, 现在 要说 的 是 用户 文件, 这个 是 用来 存放 用户 的 基本 信息 的, 位于 /etc/passwd
就是 这个 了~~, 这个 只是 其中 的 一条 哦。。
1、 用户名
2、 密码,。。 这里 的 x 只是 象征性 的 一个 密码, 最开始 的 系统密码确实 是 存放在 这里 的, 而且 是 不加密 的, 后果 可想而知。。, 这样 的 密码 当然 是 没意义 的, 后来 就 改了, 把 密码 单独 作为 一个 文件, 就是 刚才 的 那个 /etc/shadow
3、 用户的属主, 就可以 说 是 用户 id, 用户 的 唯一标识号, 这里 用户 id 范围 是 0-65535, 其中 0 是 root 的 id, 1-499 作为 系统保留,用于 管理 账号, 500 - 65535 是 普通 用户 可用 id
4、 用户的属组, 也就是 用户 的 组id, 这里 的 id 范围 的 分配和 用户属主 是 一样 的,就不说 了
5、 用户的备注, 这里 存放 一些 用户 信息, 不过 我 这里 没有 写 备注。
6、 用户 的 家目录, 普通 用户 的 家目录 一般 会在 "/home" 这个 目录 下 , 而 root 的 家目录 就是 /root, 这就是 普通 用户 和 管理员 的 不同。。, 管理员 是 万能 的, 千万 别 得罪 管理员。。
7、 用户 的 默认 shell, 我 这里 是 bash, 其实 我 也 就 会 那么 一丢丢 bash。。。
------------------------------------------------------------------------------------------------
还有 几个 文件 也 一起 说 了 算了。。, 先 把 用户 管理 的 体系 都 介绍 一下, 最后 再说 命令 把。。
/etc/group : 这个 文件 是 用来 存放 用户 的 属组 信息 的, 要 强调 一点, 用户 属组 和 用户 是 相互 独立 的 两个 东西, 就像 文件夹 和 文件 一样, 没有 文件, 文件夹 依然 可以 存在, 但 没有 文件夹, 文件 就 不知道 往哪里 放 了, 所以, 每个 用户 都 必须 有 一个 基本组 来 存放 这个 用户 , 这个 基本组 可以 在 创建 用户 时 设定, 如果 没有 设定 就会 自动 创建 一个 和 用户 同名 的 组, 作为 基本组, 另外, 一个 用户 也 可以 属于 多个 组, 这个 就 是 用户 的 附加组, 好了, 还是 回过头 来 看看 /etc/group 这个 文件 把。。
一般 会 分为 三段,
1、 组名
2、 组密码, 这里 也是 用 x 来 代替 的
3、 组 id
不过 大家 有没有加 注意到 , 组 jing 这个 里面 有 4个 字段, 这事 怎么 回事 呢。。, 因为 这个 是 user1 把 jing 当做 了 自己 的 附加组, 而 这个 信息 并没有 记载 在 存放用户信息 的 passwd 里面, 而是 把他 记载 在 存放 在 group 这个 文件 里面, 意思 是 说 jing 这个 组 的 附加 成员 都 会 记录在 这里 了, 再 说 一句 废话 把, 这里 并 没有 记载 这个 组 的 基本 成员, 因为 没意义。。。。, 用户 的 基本组 是 在 passwd 文件 里面 记载 的。
还有, 组密码 也是 单独 存放 一个 文件 的 , 位于 /etc/gshadow, 形式 和 /etc/shadow 差不多, 这里 就 不说 了。。
-------------------------------------------------------------------
/etc/default/useradd : 这个 是 最后 一个 要 说 的 文件 了。。, 这个 文件 存放 的 是 创建 一个 用户 时 默认 的 一些 基本 信息。
1、 可 创建 的 普通 组,
2、 把 普通 用户 的 家目录 存放 在 "/home“ 这个 文件夹 下
3、 是否 启用 账号 过期 停权, -1 表示 不启用, 宽限天数: 0一下 都是 无效数字。。
4、 账号 终止日期, 不设置 就是 没有,( 账号 失效日期 如 : 20141212)
5、 默认 shell 类型, 我 这里 是 bash 的,
6、 创建 用户 时, 这个 用户 的 家目录 环境。。, ”/etc/skel“ 这个 是 一个 目录, 里面 存放 着 一个 用户 家目录 的 模板, 在 创建 家目录 是 会 把 这个 skel 目录 复制 一份 到 “/home” 下 的。
7、是否 创建 用户 邮件 缓冲, 这里 默认 是 创建 的。
好了, 最后 再 看一下 /etc/skel 这个 目录 下 的 文件夹把。, 不过 这里 并 不打算 说 点 什么。。
用户管理命令:
useradd : 添加用户
useradd 选项 用户名
-u UID : 指定 UID, 指定 用户ID
-g GID: 指定 用户 基本组
-G GID: 指定用户 附加组
-d /path/to/somewhare : 指定 用户 家目录
-c ”Comment“ : 指定 用户的 备注
-s /path/to/shell : 指定 默认 shell, 应该 使用 /etc/shells 中 出现 的 shell,
-m: 创建 用户 时, 强制 给 用户 创建 家目录:, 默认 也是 创建 的。。
-M: 创建 用户 时, 不 创建 家目录。
-r : 创建 系统 用户,
id : 1-499, 系统 用户 是 无 家目录 的 , 默认 shell 为 /sbin/nologin, 也就是 不允许 登录
------------------------------------------------------------------------
groupadd Group_name : 创建组
-g GID: 指定 组 ID
-----------------------------------------------------------------------
passwd : 修改 密码
直接 使用 passwd 命令, 这个 可以 修改 自己 的 密码,
passwd 用户名, 这个 可以 修改 这个 用户 的 密码, 不过 这个 只有 管理员 可以 使用。。。
这里 说 一下, 输入 密码 时 密码 是 隐藏 的, 他 不会 显示 到 屏幕 上,只要 输入 就 好了, 两次 输入 的 密码 是 一样 的 就 ok。。, 另外 也 可以 避免 输入 密码 这种 人机 交互 的, 批量 添加 用户 时 很有用。。 echo ”密码“ | passwd --stdin [用户]
OK, 这就 可以 避免 和 人机 交互 了。, 至于 echo 后面 的 | 是 管道 的 意思, 他 是 把 输出 的 字符串 传给 下一个 命令 的 意思, 以后 还会 详细 说 的, 这里 就 先 用着。。
另外, 还有 -l 和 -u 两个 选项, 他们 分别 是 锁定用户 和 解锁用户
passwd -l 用户名, 锁定 这个 用户
passwd -u 用户名, 解锁 这个 用户
---------------------------------------------
gpasswd 组名, 这个 和 passwd 差不多 拉~, 添加 组密码, 这里 就 不细说 了。。, 有的 时候 会 有用 的,
---------------------------------------------
usermod 修改 用户 的 属性定义, 也就是 修改 uid, gid 什么 的。。,
-u UID: 修改 UID
-g GID: 修改 GID
-G GID: 默认会 覆 盖原有的附加组; 如果是 添加,则同 时使用-a选项;
-c "String": 修改 备注
-d /path/to/New_Home: 修改 家目录, 不过 默认不会 迁移用户的家目录;如果要迁移,则同时使用-m
-s SHELL: 修改 默认 shell, /etc/shells/###
-l New_login_name: 换一个 用户名
-L: 锁定用户帐号
-U: 解锁
这里 也 就 不演示 了, 这个 命令 太简单 了。。。
-----------------------------------------------
groupmod : 修改 用户 的 组定义, 这个 比较少, 因为 /etc/group 这个 文件 比较简单。。
-g : 修改 GID
-n new_group_name : 修改 组名
这个 更 简单。。。。
------------------------------------------------
userdel 用户名: 删除 用户
-r : 删除 用户 同时 删除 家目录
-------------------------------------------------
groupdel 组名, 删除 组, 这里 要 注意 一点, 这个 组 必须 是 空的, 也就是 不能 包含 任何 用户 的 组, 否则 是 禁止 删除 这个 组 的, 其实 从 逻辑 上 也 应该 是 这样 的。。, 要不然 这个 就 乱套 了 。
-----------------------------------------------
id 用户名 : 查看 用户 的 详细 信息
这个 刚才 已经 演示 过 了。。
-----------------------------------------------
su 用户名 : 切换用户
-l : 完全 切换
-c “命令” : 临时 切换 用户, 并 以 这个 用户 的 权限 执行 一个 命令, 这个 挺好玩 的。。
---------------------------------------------
chage : 修改 密码 属性, 比如 密码 最长 使用 天数 什么 的。, 也就是 修改 /etc/shadow 这个 文件
-m 密码可更改的最小天数。为零时代表任何时候都可以更改密码。
-M 密码保持有效的最大天数。
-W 用户密码到期前,提前收到警告信息的天数。
-E 帐号到期的日期。过了这天,此帐号将不可用。
-d 上一次更改的日期(这个 选项 就 有点 自欺欺人 了。。。)
-i 停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。
---------------------------------------------
chfn : 更改 你的 备注, 这个 挺好玩 的。。 是个 交互 试 的 命令
第五段, 用户备注 信息, 用 逗号 隔开 的, 其实 也可以 暴力点, 手动 自己 去 改 passwd。。。。,
--------------------------------------------
chsh : 更改 shell, 这个 其实 也 可以 暴力 改 的。。这里 我 没改, 我 只会 用 bash。。
---------------------------------------------
newgrep 组名
登入 另外 一个 群组, 有些 组 也是 可以 有 密码 的 哦。 有的 是 不能 轻易 登录 的, 因为 登录 这个 组 就 可以 得到 这个 组 里 的 某些 资源, 。。, 当然 对于 本身 就是 这个组 的 用户 来说 是 不用 输入 密码 的..
用户权限:
权限 一共 有 四种, 分别 是
r w x -
读 写 执行 无权限占位符
关于文件:
r: 可以读取这个文件里的内容
w: 可以编辑这个文件里的内容
x: 可以运行这个文件,发起一个进程
关于目录:
r: 可以用ls命令查看目录内容的文件信息
w: 可以创建、删除文件
x: 可以使用 ls -l 命令 查看 目录 内容 的 信息, 并且 可以 使用 cd 切换至 此目录
---------------------------------------------
同样, 用户 也有 三种, 所以, 权限 应该 是 由 9个 字符 组成 的。
属主 属组 其他
u g o
---------------------------------------------
先 看一下 ls -l 把,
这里 看 ls -l 命令 的 第一段, 一共 由 10个 字符 组成, 其中 第一个 字符 是 文件 的 类型
文件 类型 就 不说 了, 前面 说过 了。。, 之后 后 九个 字符 是 三个 一组, 分为 三组
分别 表示 文件 对( 属主, 属组 和 其他 ) 三类 用户 的 权限。
当然, 权限 也可以 用 数字 表示 的, 毕竟 数字 才是 计算机 比较 敏感 的 东西。这个 也叫 八进制 的 权限。
000 : --- : 0 : 无权限
001 : --x : 1 : 执行
010 : -w- : 2 : 写
011 : -wx : 3 : 写,执行
100 : r-- : 4 : 读
101 : r-x : 5 : 读,执行
110 : rw- : 6 : 读,写
111 : rwx : 7 : 读,写,执行
所以 , 例如 rw-r--r-- 也 可以 表示 为 644
文件 的 权限 也是 一种 元数据, 存储在 这个 文件 的 inode 中, inode 中 存储 的 是 文件 的 一些 基本 信息, 如 权限, 属主, 属组 什么 的, 不过 文件名 是 存放 在 文件夹 中 的, 而 文件 的 真正 数据 是 存放 在 block 中 的, 这些 东西 一会 还会说, 这里 只是 先 说一下。。
------------------------------------------------------
chmod 修改 文件 的 权限, 一共 有 三种 形式。。
形式1: 修改三类用户的权限
chmod [-R] 八进制权限 文件
形式2: 修改 一类或多类 用户的 一个或多个 权限
chmod [-R] {u,g,o,a} {+|-} {r,w,x} 文件
这里 u, 表示 属主
g, 表示 属组
o, 表示 其他
a, 表示 全部, 就是 ugo 合起来 的 意思
+|-, 表示 增加 或 减少 权限 的 意思
r,w,x 这个 就 不解释 了。。
形式3: 参照其他文件权限修改当前文件权限
chmod --reference=要参照的文件 要修改权限的文件
chmod 这个 就 差不多 了。。
下面 说 一下 默认 权限, 权限 的 应用 模型
默认 权限, 就是 在 创建 文件 时, 系统 默认 给 用户 的 权限, 这里 有 一个 环境变量, 不过 这个 变量 存放 的 是 文件 权限 的 反码, 需要 用 777 或 666 减去 这个 反码 才能 得到 用户 创建 时 的 权限。
umask :
创建文件: 666-umake
文件 默认 决不允许 出现 执行 权限 的, 假如 一个 文件 给 o类 用户 一个 wx 权限,那么 o类 用户 就 可以 修改 这个 文件, 而且 这个 文件 还 具有 执行 权限, 这样 的 文件 是 很危险 的。。
目录创建: 777-umake
管理员 默认 是 022,
如果 普通用户名 和 基本组 组名 一直: 002, 否则 022
------------------------------------------------------
权限应用模型:
进程的属主,是否与文件的属主相同;如果相同,进程则以文件属主的权限来访问文件;否则
进程的属主所属的组,是否其中之一与文件的属组相同;如果相同,进程则以文件属组的权限来访问文件;否则,
进程则以文件的其它用户的权限来访问文件;
chown : 修改 文件 的 属主, 也可 以 修改 文件 的 属组,
chown [option] UserName[{:|.}GroupName] file。。
chown --reference=要参照的文件 要修改权限的文件, 这里 也 支持 这种 形式
-----------------------------------------------------
chgrp : 修改 文件 的 属组
chgrp 组 文件,
chgrp --reference=参照的文件 要修改 的 文件, 同上。。
ok, 差不多 就 这些 命令 了 把。。, 感觉 这个 权限 写的 不太 清楚 啊, 我 这里 也是 云里雾里 的, 以后 经验 多了 再 整理 把。。
本文出自 “宁静淡泊” 博客,请务必保留此出处http://vrgfff.blog.51cto.com/6682480/1568197
原文地址:http://vrgfff.blog.51cto.com/6682480/1568197