一、用户账号管理
1.1 用户账号概述
1.1.1 用户账号类型
linux基于用户身份对资源访问进行控制
-
超级用户
-
普通用户(权限受限)
-
程序用户 ---- 管理程序的用户,给程序用的,不是给人用的,不能登录到系统
为什么有程序账户?
超级管理员和普通用户都是登录到系统中,程序不是完美的,有漏洞,用程序用户管理程序,程序用户不能登录到系统,防止了程序被破解后,继续攻击系统,系统不会受到影响。
1.1.2 组账号
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理
-
基本组(私有组):主要工作,只能有一个
-
附加组(公共组):兼职,可有可无,可以有多个
Tips:
Linux中超级管理员组是wheel
root组只是名字叫root
1.1.3 UID和GID
root为超级管理员
1.1.3.1 UID(User IDentity,用户标识号)
linux根据UID标识用户
UID=0 超级管理员
UID=1-60000 普通用户
UID=1-499 (Cent Os6)1-999(Cent Os7) 程序用户
1.1.3.2 GID(Group IDentify,组标识号)
GID的作用是用于标识和管理用户组,它是一个用于系统内部识别用户组的数字值。
root 组账号的 GID 号为固定值 0,而程序组账号的 GID 号默认为 1~499,500~60000 的 GID 号默认分配给普通组使用。
1.1.4 用户账号文件
1.1.4.1 passwd文件
passwd文件 存放用户基本信息 (用户名称、宿主目录、登录shell等等基本信息)
文件位置 /etc/passwd
passwd文件内容格式
cat passwd //查看passwd文件内容
....
lucas:x:1000:1000:Lucas:/home/lucas/lucas:/bin/bash
lucas 用户名称
:x 密码占位符
:1000 uid
:1000 gid
:lucas 备注信息,描述
:/home/lucas 家目录路径
:/bin/bash shell环境
1.1.4.2 shadow文件
shadow文件用于存放用户密码
文件位置 /etc/shadow
文件内容格式
bin:*:17110:0:99999:7:::
字段1 bin : //用户名
字段2 * //密码 * 和 !! 表示不能登录此用户
字段3 17110 // 上次修改密码后,至今的天数
字段4 0 // 最小修改密码间隔时间 0表示啥时候改都行
字段5 99999 // 密码有效期 99999为默认值 近似于永久有效
字段6 7 // 密码到期提醒 提前7天提醒
字段7 // 密码到期后 不修改 还能用多久 这个时间之后,原密码失效
字段8 // 失效时间 字段5为99999 所以此字段无需设置
字段9 // 保留
1.1.4.3 初始配置文件
- 文件来源
新建用户帐号时,从/etc/skel
目录中复制而来
- 主要的用户初始配置文件
~/.bash_profile
: 这个文件是为系统全局变量配置文件,可以通过重启系统或者执行source /etc/profile
命令使profile文件被读取
~/.bashrc
: 这个文件实际上是/etc/profile
的子目录,存放的是一些应用程序所需的启动脚本
~/.bash_logout
: 每一个允许bash shell 的用户都会执行此文件,可通过执行bash命令打开一个新的bash shell时,使bashrc文件被读取
1.2 用户账号管理(命令)
1.2.1 添加用户 useradd
(新用户)
只能新建用户,不能对已有用户进行修改
命令格式 useradd [选项].... 用户名
选项 | 功能 |
---|---|
-u | 指定用户UID 不能相同 |
-d | 指定用户的家目录 |
-e | 指定用户的账号失效时间 |
-g | 指定用户的基本组名 不指定会自动创建同名组 |
-G | 指定用户的附加组 |
-M | 不指定家目录 优先级大于 -d |
-s | 指定用户的登录Shell |
useradd -s /sbin/nolgin -M -u xxx yy
创建一个用户 不允许登录 不建立家目录 uid为xxx 名为yy
1.2.2 密码管理 passwd
为账号设置密码
passswd [选项].....用户名 //不加选项 默认添加密码
-d --delete 清除用户的密码 用用户名就能登录
-l – lock 锁定用户 ,使用户无法登录(隐藏 不显示)
-S 查看账户状态(是否被锁定)
-u --unlock 解锁用户
echo 123123 |passwd lisi --stdin
非人机交互的方式 修改密码
1.2.3 修改用户 usermod
--对已有用户
usermod
命令用于修改用户帐号的各项设定。
只能修改已有用户
usermod [选项] ....用户名 //对已有用户进行修改 不能修改用户组
选项 | 功能 |
---|---|
-l | 修改用户名 |
-L | 锁定用户 |
-U | 解锁用户 |
-u | 修改用户UID 不能相同 |
-d | 修改用户的家目录 |
-e | 修改用户的账号失效时间 |
-g | 修改用户的基本组名 不指定会自动创建同名组 |
-G | 修改用户的附加组名 |
-s | 指定用户的登录Shell |
-p | 修改密码 |
usermod -L test
usermod -U test
usermod -l new old //更改用户名
补充
su 用户名 //切换用户
su root //切换到超级管理员
sudo //以管理员权限执行命令
sudo -n 用户名 命令 //以其他用户的权限执行命令
1.2.4 删除用户 userdel
userdel [选项]...用户
-r 将家目录一起删除
二、组管理
2.1 组账号文件
与用户帐号文件类似
/etc/group 保存组帐号基本信息
/etc/gshadow 保存组帐号的密码信息,基本不使用
2.2 组账号管理(命令)
2.2.1添加组 groupadd
groupadd [选项] 组名 //添加组
group -g 组名 //添加组并指定GID
2.2.2 管理组 gpasswd
gpasswd 命令——添加、设置、删除组成员
gpasswd -a 用户名 组名 //添加用户到组中
gpasswd -d 用户名 组名 //将用户从组中删除
gpasswd -M
2.2.3 删除组 groupdel
groupdel 组帐号名
三、查询账号相关信息
3.1 id
id命令用于查看用户的UID GID 基本组 附加组
命令格式
id [用户名]
3.2 finger
finger命令用于查询用户帐号的详细信息
命令格式
finger [用户名]
、、、、、、、、、、、、、、、、、、、、、、、、、、、
Login 登录用户
Name 用户名
Directory 用户家目录
Shell 登录shell
3.3 w vs who
- w
w命令用于查询登录过主机的用户信息
w [选项] [用户]
- who
相比较 w 命令,who 命令只能显示当前登陆的用户信息,但无法知晓每个用户正在执行的命令息
3.4 users
四、文件/目录的权限和归属
4.1 权限和归属的基本概述
访问人群分为了三类
- 所属主(u)
- 所属组(g)
- 其他人 (o)
权限分为三种
- 读( r)
- 写(w)
- 执行(x)
对文件的权限
- r 可使用文件查看类工具,比如:cat,可以获取其内容
- w 可修改其内容
- x 可以把此文件提请内核启动为一个进程,即可以执行(运行)此文件(此文件的内容必须是可执行)
对目录的权限
-
r 可以使用ls查看此目录中文件列表
-
w 可在此目录中创建文件,也可删除此目录中的文件,而和此被删除的文件的权限无关
-
x 可以cd进入此目录,可以使用ls -l查看此目录中文件元数据(须配合r权限),属于目录的可访问的最小权限
4.2 查看权限和归属 ll
[root@yzf /]#ll /etc/passwd
-rw-r--r--. 1 root root 2220 7月 22 17:22 /etc/passwd
- 表示文件属性
rw- 表示属主的权限
r-- 表示属组的权限
r-- 表示其他用户的权限
1 表示链接个数
root 属主
root 属组
2220 文件大小
7月 22 17;22 最后修改时间
/etc/passwd 文件位置和文件名
删除文件,和文件的权限无关,只和文件所在文件夹的权限有关
文件夹一定会有执行权限 x
执行权限 x 是文件夹的最小权限 ,没有x权限 文件夹的rw权限不生效
4.3 chmod 修改权限 -文件/文件夹
chmod(change mode)命令用于控制用户对文件/目录的权限
Linux的文件调用权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)
4.3.1数字表示法
r w x 有权限写1 没有写0 然后二进制转十进制相加
r | w | x | 十进制 |
---|---|---|---|
1 | 1 | 1 | 7 |
1 | 0 | 1 | 5 |
1 | 0 | 0 | 4 |
0 | 1 | 1 | 3 |
0 | 1 | 0 | 2 |
0 | 0 | 1 | 1 |
0 | 0 | 0 | 0 |
-rw-r--r--
文件拥有者(属主) 用户组(属组) 其他用户
- rw- r-- r--
文件属性 110 100 100
6 4 4
777 表示所有权限都有
4.3.2 模式法
命令格式
chmod 对谁(所有者,所属组,其他) 操作(+ - =)权限 文件名
'谁'
u -- 文件属主 (属于哪个用户)
g -- 文件属组 (属于哪个组)
o -- 其他用户
a -- 所有用户
'操作权限'
+ -- 添加权限
- -- 减少权限
= -- 覆盖已有权限
'权限(对root无效)'
r -- 读权限
w -- 写权限
x -- 执行权限
4.4 chown 改变文件和目录的属主 属组
chown(change owner)命令用于设置文件/目录的属主和属组
利用 chown 将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户 ID,组可以是组名或者组 ID,文件是以空格分开的要改变权限的文件列表,支持通配符
chown [选项] new [:group] old
new是替换的用户
old是被替换的用户
[选项]
-c : 显示更改的部分的信息
-f : 忽略错误信息
-h :修复符号链接
-v : 显示详细的处理信息
-R : 处理指定目录以及其子目录下的所有文件
举例
1.把 /var/run/httpd.pid 的所有者设置 root
chown root /var/run/httpd.pid
2.将文件 1.txt 的拥有者设为test,群体的使用者gtest
chown test:gtest 1.txt
3.把 11.txt 的关联组设置为 512 (GID),不改变所有者
chown :512 1.txt
4.将当前前目录下的所有文件与子目录的拥有者皆设为t1,群体的使用者gt2
chown -R t1:gt2 *
4.5 umask 权限掩码
umask用于控制 新建文件或者文件夹的权限
文件夹默认最大权限为777
文件默认的最大权限为666 (没有执行权限)
新建目录权限= 777-umask
新建文件权限=666 - umask
umask是需要减去的权限