Linux 用户、组、权限、常用命令
一、用户
数据库是用来保存数据的,操作系统中的用户名和密码也理应存放在数据库中,这个数据库是啥呢?在 Linux 下,它是处于 /etc 下的一个叫 passwd 的文件。我们看一下这个文件中的内容。
root:x:0:0:root:/root:/bin/bash
tfp:x:40:49:FTP:/var/ftp:/bin/bash
weblogic:x:1000:100::/ebank:/bin/bash
规律
每一行文本都有数个英文格式的冒号:
,它们对每一行文本进行了分割
仔细数一数,每行文本的冒号数量都是相同的,
这就是我们的用户表
Linux中UID以如下方式划分:
- 0 表示管理员(root)
- 1 - 500 表示系统用户
- 501 - 65535 表示普通用户
- 不同的 Linux 发行版,这些数字可能不一样
/etc/passwd 中的字段分析
[1]:[2]:[3]:[4]:[5]:[6]:[7]
[1] - 用户名
[2] - 密码占位符
[3] - 用户ID
[4] - 用户组ID
[5] - 注释信息
[6] - 用户家目录
[7] - 用户的默认 shell
用户默认shell:
类似于cmd.exe 它接收用户命令,然后调用相应的应用程序。
其中密码x
是使用的占位符,真正的密码保存在/etc/shadow 文件中,内容如下:
root:$2y$05$yBdPdRV.K1/wJab8/oK7Tek1OtGRGtpoYAATdPKQNVKXX/1pOevl.:16807::::::
ftp:*:16617::::::
weblogic:$2y$10$pajyJjxNX.Xd91AyTUG3a.YdUN/MQLb13CZ6k.KC2BaLF9FpOTuG:17518::::::
/etc/shadow 中的字段分析
[1]:[2]:[3]:[4]:[5]:[6]:[7]:[8]:[9]
[1] - 用户名
[2] - 密码
[3] - 最近一次修改密码的时间(单位/天)自1970年01月01日至今天数
[4] - 两次修改口令间隔最少的天数
[5] - 两次修改口令间隔最多的天数
[6] - 提前多少天警告用户口令将过期
[7] - 在口令过期之后多少天禁用此用户
[8] - 用户过期日期(单位/天),此字段指定了用户作废的天数
[9] - 保留字段
二、组
每个用户都有一个用户组,系统能对一个用户组中的所有用户进行集中管理。不同Linux系统对用户组的规定有所不同。用户组帐号信息保存在/etc/group配置文件中,内容如下:
root:x:0:
bin:x:1:daemon
weblogic:!:100:
/etc/group 中字段分析
[1]:[2]:[3]:[4]
[1] - 组名
[2] - 组密码占位符
[3] - 组ID(GID)
[4] - 组内用户列表(可以多个用“,”隔开)
三、权限
- 权限是操作系统用来限制对资源访问的机制,权限一般分为读、写、执行。系统中每个文件都拥有特定的权限、所属用户及所属组,通过这样的机制来限制哪些用户、哪些组可以对特定文件进行说明样的操作。
- 每个进程都是以某个用户的身份运行,所以进程的权限与该用户的权限一样,用户的权限大,该进程拥有的权限就大。
文件权限
权限 | 对文件的影响 | 对目录的影响 |
---|---|---|
r (读取 4) | 可以读取文件内容 | 可列出目录内容 |
w (写入 2) | 可以修改文件内容 | 可在目录中创建删除文件 |
x (执行 1) | 可以作为命令执行 | 可访问目录的内容 |
U G O
Linux权限基于UGO模型进行控制:
- U代表 User,G代表Group,O代表Other
- 每一个文件的权限基于TGO进行设置
- 权限三个一组(rwx),对应UGO分别设置
- 每一个文件拥有一个所属用户和所属组,对应UG,不属于该文件的所属用户或者所属组的使用O权限。
文件类型
- 文件 -
- 文件夹 d
- 字符设备 c
- 块设备 b
- 套接口文件 s
- 符号链接文件 l
- 命名管道文件 p
四、常用命令
# 新增用户
$ useradd [-u UID] [-g 初始群组] [-G 次要群组] [-c 说明栏] [-d 家目录绝对路径] [-s shell] 使用者账号名 | 新增用户
# 查看用户是否存在
$ id +用户名
# 删除用户
$ userdel +用户名(只会删除用户本身)
$ userdel -r +用户名(将 linux 下的用户彻底删除干净(包括用户的家目录/home/username)
# 用户切换
$ su +用户名
# 添加组
$ groupadd +组名
# 删除组
$ groupdel +组名
# 修改密码
$ passwd +用户名
# 修改文件权限
$ chmod [options] mode files
# 修改文件所属用户和用户组
$ chown 用户名:组名 文件名