系统常见权限信息:
r(4) 读权限:
· 文件信息: 内容信息可以读取
· 目录信息: 查看目录数据信息
w(2) 写权限
· 文件信息: 内容信息可以编辑
· 目录信息: 操作目录数据信息(删除数据/创建数据/移动数据/修改数据名称)
x(1) 执行权限:
· 文件信息: 文件可以进行执行 /etc/rc.local
· 目录信息: 目录可以进行切换
系统权限分配方式:
rwx 第一组权限: 分配给属主用户
rw- 第二组权限: 分配给属组用户
r-- 第三组权限: 分配给其他用户
PS: 系统常用权限位: 9位权限位 实际是为12位 (面试)
系统权限配置方法:
rwx- 000~777 001 002 003
系统权限详细说明:
文件权限总结:
- 文件如果想正常编写, 必须要有读权限
- 文件如果想正常执行, 必须要有读权限
- 文件如果拥有执行权限, 管理员用户拥有文件绝对权限
总结: 对于文件来说, 读取权限是最重要, 可以让写和执行权限有意义
目录权限总结:
- 目录如何想正常查看, 必须要有执行权限
- 目录如何想正常操作, 必须要有执行权限
- 目录没有任何权限信息, 管理员用户拥有目录绝对权限
总结: 对于目录来说, 执行权限是最重要, 可以让读和写权限有意义
目录的权限图
最终结论:
- root用户在系统中属于无敌存在, 只要文件有执行权限, 可以随意操作文件和目录信息
疑问:
-
当目录只有读权限时, 属主用户查看信息为什么只能看见文件名称, 不能看见文件属性信息?
说明:- 目录只有读权限, 只能利用读权限查看目录block信息
- 目录需要有执行权限, 才能进入到目录中, 查看文件的inode获得属性信息
提示: inode block
inode作用: 查看数据内容索引信息
存储: 文件属性信息/block指针信息
block作用: 真正存储数据内容信息
普通文件: inode 文件属性 指针信息
block 真正文件内容
目录文件: inode 目录属性 指针信息
block 目录下面数据名称
一个文件权限为777, 属主属组为oldboy, 但是oldboy用户无法操作管理此文件?
提示: 利用inode block, 理解系统数据文件读写原理 权限说明
说明: 对文件信息进行读写操作, 和文件本身权限有关/和文件所在目录路径权限也有关系
系统数据默认权限
文件默认权限: 644(root)
目录默认权限: 755(root)
如何修改默认权限:
umask: 0022
umask是奇数信息
文件默认权限: 666 - umask(033) = 63(+1)3(+1) == 644 文件做奇数运算位, 做完运算还需要在加1
目录默认权限: 777 - umask(033) = 744
umask是偶数信息
文件默认权限: 666 - umask(022) = 644
目录默认权限: 777 - umask(022) = 755
临时修改:
文件默认权限: 需求 600 666 - umask(066) = 600
需求 611 666 - umask(055) = 61(+1)1(+1) = 622
目录默认权限: 需求 700 777 - umask(077) = 700
永久修改:
vim /etc/profile
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
umask 002
else
umask 022
fi
解释01: 脚本判断语句信息
a 单分支判断语句: if 条件 then 操作 fi
b 双分支判断语句: if 条件 then 方案一操作 else 方案二操作 fi
解释02: 判断条件信息意思
a 条件判断有单一条件和多条件判断(并且关系 或者关系)
b 每个条件表达的意思
-gt 大于什么 >
-lt 小于什么 <
-eq 等于什么 ==
-ge 大于等于
-le 小于等于
-ne 不等于
$UID -gt 199 : 判断当前用户UID数值是否大于199
"`/usr/bin/id -gn`" = "`/usr/bin/id -un`" : 当前登录系统用户名称和用户组名称是否一致
系统用户提权方法
解释说明: 让普通用户可以获得管理员部分或者全部权利 皇帝root -大宝剑(sudo)- 将军 -大宝剑(sudo)-> 贪官
实现方式:
第一个里程: 编写提权配置文件
vim /etc/sudoers --- visudo (语法检查)
100: oldgirl ALL=(ALL) /usr/bin/cat /etc/shadow
01 02 03
01: 将管理员权限赋予给哪个普通用户
02: 进行权限统一集中管理 (跳板机服务 jumpserver)
03: 赋予普通用户权限信息
赋予权限方法:
a 赋予权限命令必须绝对路径信息
b 多个权限之间必须有分隔符号 利用,分隔
方法一: 配置单一权限信息
方法二: 配置多个权限信息
oldgirl ALL=(ALL) /usr/bin/cat /etc/shadow, /usr/bin/rm /etc/hosts
oldgirl ALL=(ALL) /usr/bin/cat, /usr/bin/rm
oldgirl ALL=(ALL) /usr/bin/*, /usr/sbin/*
oldgirl ALL=(ALL) /usr/bin/*, /usr/sbin/*, !/usr/bin/rm, !/usr/sbin/visudo
方法三: 免密码进行提权操作
oldgirl ALL=(ALL) NOPASSWD: /usr/bin/*, /usr/sbin/*, !/usr/bin/rm, !/usr/sbin/visudo
第二个里程: 切换到普通用户查看自己提权信息
[oldgirl@linux67 ~]$ sudo -l
User oldgirl may run the following commands on linux67:
(ALL) /usr/bin/cat /etc/shadow
第三个里程: 测试提权操作是否成功
sudo cat /etc/shadow
总结结论: 普通用户操作系统权限拒绝, 可以如何调整
修改文件或者目录权限 (权限位信息 chmod)
用户身份信息进行调整 (切换管理员身份 su -) OK
设置普通用户提权配置 (普通用户拥有管理员部分权限 sudo) OK
修改文件数据特殊权限
检查数据是否加锁配置
操作系统特殊权限位
setuid : s 属主权限 4 属主权限位总结: s r w x
概念说明: 可以让所有普通用户获得指定文件属主用户能力, 像属主用户一样执行命令或者操作文件
以文件的所属用户身份执行,而非执行文件的用户
作用说明: 特殊命令操作权限 --> 赋予 --> 所有普通用户
设置方法: chmod u+s/u-s 文件信息 u(user 属主) | chmod 4755 文件信息setgid : s 属组权限 2 属组权限位总结: s r w x
概念说明: 可以让所有普通用户获得指定文件属组用户能力, 像属组用户一样执行命令或者操作文件
以文件的所属用户组身份执行,而非执行文件的用户
设置方法: chmod g+s/g-s 文件信息 g(group 属组) | chmod 2755 文件信息Sticky bits (粘滞位) : t 1 ***** 其他用户权限位总结: t r w x
概念说明: 给目录设置特殊权限, 将目录变为共享资源目录, 文件数据只能被属主用户所管理
其他用户只看文件内容
设置方法: chmod o+t/o-t 文件信息 o(other 其他用户) | chmod 1777 目录信息总结权限命令: chmod -- 修改数据权限信息
针对不同用户修改权限
· 属主用户: chmod u +-= s r w x 文件/目录
· 属组用户: chmod g +-= s r w x 文件/目录
· 其它用户: chmod o +-= t r w x 文件/目录
针对所有用户修改权限
· 按照字符进行修改: chmod a +-= r w x 文件/目录
· 按照数值进行修改: chmod 000 ~ 777 文件/目录
chmod 0000 - 7777 文件/目录
PS: 使用chmod前提, 必须对权限非常熟悉
chown -- 修改文件数据属主和属组信息
chown oldgirl oldboy.txt --- 只修改文件属主信息
chown .oldboy01 oldboy.txt --- 只修改文件属组信息
chown oldgirl.oldboy01 oldboy.txt --- 属主和属组信息同时修改
chown oldgirl. oldboy.txt
chown -R oldgirl. /oldboy --- 递归修改目录属主属组以及目录下面所有数据属主和属组给文件上锁命令:
chattr +i 文件信息 --- 给文件上锁
lsattr 文件信息 --- 查看文件是否上锁
chattr -i 文件信息 --- 给文件解锁
说明: 系统中非常重要文件必须上锁
- 普通用户操作系统, 出现权限拒绝, 如何处理
修改文件或目录权限 chmod OK
进行用户身份信息转换 su - root OK
进行用户提权操作 sudo OK
修改文件特殊权限位 setuid setgid 粘滞位 OK
-
文件数据信息上锁
面试题: 根据以下文件属性信息, 判断文件权限, 但是此时root用户无法编辑文件什么原因:
-rw-r--r-- 1 root root 158 Nov 8 11:38 /etc/hosts
可能文件被上锁了, 利用lsattr查看确认, 利用chattr -i 解锁
操作系统用户管理
操作系统用户知识回顾
用户分类:
· 创建管理员 权限比较大 root uid 0
· 虚拟用户 管理进程信息 nobody uid 1-999 不能登录系统 不能有家目录
· 普通用户 权限较低用户 oldboy uid 1000+
用户和用户组关系:
用户标识信息:
uid : 用户身份证号
gid : 用户组编号
和用户或者用户组相关文件信息
/etc/passwd ****** : 保存系统所有用户信息
/etc/shadow : 保存系统所有用户密码信息
/etc/group : 保存系统所有用户组信息
/etc/gshadow : 保存系统所有用户组密码信息
sunwukong01:x:1024:1024::/home/sunwukong01:/bin/bash
sunwukong02:x:1025:1025::/home/sunwukong02:/bin/bash
sunwukong03:x:1026:1026::/home/sunwukong03:/bin/bash
sunwukong04:x:1027:1027::/home/sunwukong04:/bin/bash
sunwukong05:x:1028:1028::/home/sunwukong05:/bin/bash
01 02 03 04 05 06 07
- 用户名称信息
- 早期密码信息
- 用户UID数值信息
- 用户GID数值信息
- 用户描述信息
- 用户家目录信息
- shell信息 登录系统方式
/bin/bash --- 可以登录
/sbin/nologin --- 不可以登录系统
测验: passwd文件中有多少个虚拟用户
grep
awk
思路1) 查出虚拟用户
grep "/sbin/nologin" /etc/passwd
awk '$NF~/nologin/' /etc/passwd
思路2) 将查出虚拟用户进行统计
grep -c "/sbin/nologin" /etc/passwd
awk '$NF~/nologin/{i++}END{print "虚拟用户数量:",i}' /etc/passwd
- 和用户相关目录信息
/etc/skel --- 用户家目录样板房
.bash_logout --- 用户退出系统后执行操作
.bash_profile --- 可以配置变量 环境变量 别名 局部配置
.bashrc --- 可以配置变量 环境变量 别名 局部配置
/home/oldboy --- 用户房子
用于修复加目录
命令提示符出现错误/家目录中没有任何信息
cp /etc/skel/.b* ~/
面试题: 命令提示符显示异常了如何修复: -bash-4.2$
方法一: 修复用户家目录
方法二: 设置PS1环境变量
useradd --- 创建用户命令
-u --- 指定用户uid信息
-c --- 设置用户描述信息
-g --- 指定用户属于哪个主要组
-G --- 指定用户属于哪个附属组
[root@linux67 ~]# useradd alex07 -u 2002 -c dba -g olddog -G linux
[root@linux67 ~]# grep -E "olddog|linux" /etc/group
linux:x:1500:alex07
olddog:x:1201:
[root@linux67 ~]# id alex07
uid=2002(alex07) gid=1201(olddog) groups=1201(olddog),1500(linux)
创建虚拟用户:
-s --- 指定登录方式 /sbin/nologin
-M --- 指定不能创建家目录
useradd alex08 -M -s /sbin/nologin ***** --- 如何创建虚拟用户
ll -d /home/alex08
ls: cannot access /home/alex08: No such file or directory
[root@linux67 ~]# grep alex08 /etc/passwd
alex08:x:2003:2003::/home/alex08:/sbin/nologin
[root@linux67 ~]# su - alex08
su: warning: cannot change directory to /home/alex08: No such file or directory
This account is currently not available.
测验: 创建一个database用户, uid为888, 并且不能登录系统, 不能有家目录
useradd -u 888 -s /sbin/nologin -M
usermod - 修改用户信息
-u --- 修改用户uid信息
-c --- 修改用户描述信息
-g --- 修改用户属于哪个主要组
-G --- 修改用户属于哪个附属组
-s --- 修改登录方式 /sbin/nologin
userdel --- 删除用户家目录
userdel -r 用户信息 --- 彻底删除用户
问题: 删除用户不彻底, 有可能原有家目录会被别人占用
掌握用户相关命令信息
groupadd : 创建指定用户组 -g 指定组id
groupadd dev -g 2000
grep dev /etc/group
dev:x:2000:
groupdel :
groupmod : 修改指定用户组 -g 指定组id
开发人员 -- 线上服务器 完全控制 开发目录
chown dev01.dev01 /development/
chmod g+w /development/
ll /development/ -d
drwxrwxr-x 2 dev01 dev01 6 Nov 11 15:44 /development/
usermod sa01 -G dev01
运维人员 -- 线上服务器 完全控制 开发目录 运维目录 数据库目录
???
据库人员 -- 线上服务器 完全控制 数据库目录
???
如何查看用户信息:
whoami --- 以什么用户登录系统
id --- 查看用户uid数值 所属组信息 以及组id数值
w --- 显示系统当前状态登录用户信息
ps -ef|grep ssh ---> kill 进程号
last --- 记录谁远程连接破坏过系统
lastlog --- 系统用户登录情况
合理设置不同用户权限, 设置用户密码信息
密码信息如何设置管理:
方法一: excel 表格
方法二: 利用密码管理软件/jumpserver ******
方法三: 需要密码令牌 动态变化