注意
目录最高权限755
文件最高权限644
sudo 提权
①可以让普通的用户执行命令拥有root的权限 类似皇帝赏赐尚方宝剑
②和 su 不同 sudo是和权限相关 su是切换用户使用
su - oldboy #切换到 oldboy 用户
在root切换到其他用户 不需要密码
普通用户切换到root用户需要root密码
普通用户切换到普通用户需要普通用户的密码
③禁止root登录系统 普通用户无法执行root的命令
④运维拥有root的密码,禁止root后可以使用,su切换到root身份管理服务器
⑤开发人员没有root密码 使用自己普通用户登录系统
只能查看 没有删除的权限
第一步
准备两个窗口
第一个窗口为root登录 需要配置sudo权限
第二个窗口为普通用户登录 测试sudo的权限
su - oldboy
第二步
oldboy用户查看系统日志 查看日志没有权限
[oldboy1@heng ~]$ cat /var/log/messages
cat: /var/log/messages: Permission denied
第三步
oldboy用户必须拥有可以查看messages的权限
查看文件的权限 600权限 所有普通用户都无法查看
[oldboy1@heng ~]$ ll /var/log/messages
-rw------- 1 root root 134679 Feb 1 16:01 /var/log/messages
[root@heng ~]# chmod o+r /var/log/messages
[root@heng ~]# ll /var/log/messages
-rw----r-- 1 root root 134742 Feb 1 16:10 /var/log/messages
如何针对单个用户设置权限查看,其他用户不授权?
进行sudo授权—>相当于皇帝授予尚方宝剑
sudo授权 只能让你使用cat命令
查看当前授权的命令–>查看我是否拥有尚方宝剑
sudo -l #查看授权的命令 默认没有
[oldboy1@heng ~]$ sudo -l
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
[sudo] password for oldboy1:
Sorry, user oldboy1 may not run sudo on heng.
第四步
root开始对oldboy用户进行授权 —>下发大宝剑
①直接编辑配置文件
vim /etc/sudoers
②使用visudo方式 有语法错误的提示
使用visudo 实际编辑的 /etc/sudoers配置文件
快速切换至100行 增加一行
授权单条
授权给哪个用户 允许的主机=成为谁 授权的命令
oldboy ALL=(ALL) /usr/bin/cat # 授权单条命令
授权多条
oldboy ALL=(ALL) /usr/bin/cat,/usr/bin/less # 授权多条命令
第五步
授权运维人员授权所有命令
授权全部命令
oldboy ALL=(ALL) ALL # 授权所有
命令
第六步
可以空all不允许使用哪些命令 命令取反使用
授权 对几个命令取反
oldboy ALL=(ALL) ALL,!/usr/bin/cat # 授权单条命令
使用sudo不需要输入用户的密码
oldboy ALL=(ALL) NOPASSWD:ALL,!/usr/bin/sed,!/usr/bin/vim
授权格式:
授权给那个用户 | 允许的主机=提升为哪个用户 | 授权命令 |
---|---|---|
oldboy | ALL=(ALL) | /user/bin/cat |
oldboy | ALL=(ALL) | /user/bin/cat,/usr/bin/less |
oldboy | ALL=(ALL) | ALL |
oldboy | ALL=(ALL) | ALL,!/usr/bin/cat |
普通用户使用:
sudo -l # 查看当前授权的命令
sudo -k # 清空缓存密码
sudo cat # 执行sudo命令
如果给开发和测试其他部分授权
1》最小化授权
2》不授权ALL
3》危险的命令不授权
4》如果要授权 必须让开发发邮件申请 领导审批才能通过
大部分公司使用堡垒机 跳板机 日志审计
例如:jumpserver shell跳板机
权限体系
rwx的具体作用,以及隐藏权限等
Linux系统如何知道我对某个文件和某个目录有什么权限?
①我是谁 当前你以什么身份登录的系统
②当前的身份和某个文件对应对的权限位
③根据对用的关系 找到对应的权限
-rw-r–r-- | 1 | root | root | 10 | Feb 1 | 2.txt |
---|
数字表示权限位
r=4
w=2
x===1
三位为一组权限位 三位进行相加得到文件的权限
rw-r–r-- ====> 相加结果 644
修改属主属组使用 chown oldboy.oldboy
修改权限位
第一种当时:字母授权
使用 u g o 的方式
字母 | 英文 | 含义 |
---|---|---|
u | user | 属主====前三位 |
g | group | 属组====中三位 |
o | other | 其他用户====后三位 |
语法格式:
chmod 权限位+权限 file
chmod u+x file
chmod u-x file
案例1: 给属主授予执行权限
[root@heng ~]# chmod u+x 1.txt
[root@heng ~]# ll 1.txt
-rwxr--r--. 1 root root 36 Jan 31 18:49 1.txt
案例2:给属主取消执行权限
[root@heng ~]# chmod u-x 1.txt
[root@heng ~]# ll 1.txt
-rw-r-xr-x. 1 root root 36 Jan 31 18:49 1.txt
案例3:同时修改属主和属组权限位 同时授予执行权限
[root@heng ~]# chmod ug+x 1.txt
[root@heng ~]# ll 1.txt
-rwxr-xr--. 1 root root 36 Jan 31 18:49 1.txt
案例4:所有权限位都授予执行权限
[root@heng ~]# chmod +x 1.txt
[root@heng ~]# ll 1.txt
-rwxr-xr-x. 1 root root 36 Jan 31 18:49 1.txt
案例5:用a表示所有权限位
[root@heng ~]# chmod a+x 1.txt
[root@heng ~]# ll 1.txt
-rwxr-xr-x. 1 root root 36 Jan 31 18:49 1.txt
案例6:不加任何东西表示所有权限位
[root@heng ~]# chmod +x 1.txt
[root@heng ~]# ll 1.txt
-rwxr-xr-x. 1 root root 36 Jan 31 18:49 1.txt
第二种方式:数字授权
语法格式:
chmod 655 file
案例1:授权 某个文件 为 rw-r-xr-x
[root@heng ~]# chmod 655 1.txt
[root@heng ~]# ll 1.txt
-rw-r-xr-x. 1 root root 36 Jan 31 18:49 1.txt
案例2:授权 某个文件 为 rw-------
[root@heng ~]# chmod 600 1.txt
[root@heng ~]# ll 1.txt
-rw-------. 1 root root 36 Jan 31 18:49 1.txt
rwx对于文件的具体作用
r read 读取文件
vim less cat more sed awk 查看文件
w write 写入内容
vim sed echo 等
x execute 可执行
如果文件中是可执行命令 使用x执行权限
授权 某个文件 r权限
普通用户端进行r权限测试
针对r权限 研究发现一下结果:
①可以查看文件 使用 top grep awk sed less等命令
②不允许修改文件 但是可以强制保存
③不能执行文件 PS:可以使用解释器直接运行 bash test.sh
④如果能正常查看文件必须上级目录拥有r-x 权限5
Linux中默认目录权限是755权限 大部分文件 对于普通用户来
授权 某个文件 w权限
普通用户端进行w权限测试
针对w权限 研究发现一下结果:
①不允许读取文件
②不允许修改文件 但是可以追加内容
③可以强制写入 但是会清空原来的内容
④不能执行文件
文件只有w权限 跟 没有权限差不多
如果想写入内容 必须和r一起配置
授权 某个文件 x权限
普通用户端进行x权限测试
针对x权限 研究发现一下结果:
①不能读取文件
②不能修改文件
③不能执行文件
文件只有x权限 如果想要执行文件必须和r一起配置使用
rwx对于目录的具体作用
环境准备
两个窗口
一个root 一个是oldboy
授权 某个目录 r权限
root端
普通端进行r权限测试
针对r权限 研究结果如下:
①不能cd到目录下
②只能看到目录下的文件名称 无法查看到详细信息
③不能写入
④不能执行
⑤不能追加
目录只有w权限和什么权限都没有
w和r配合没有任何权限
w和x配合 能删除 能创建 但是无法查看
w权限意义 控制着目录下是否增删改查 必须和rx配合
授权 某个目录 x权限
普通端进行x权限测试
①可以进入到目录
②不能删除
③可以写入 但是不能查看
目录只有x权限 作用可以cd进入到目录
如果x权限正常cd和查看文件 必须和r配置使用 r-x
Linux系统中
目录默认的权限为755
7为root管理员用户 拥有最高权限
7为r-x权限 所有普通用户可以正常读取系统中的配置文件 但是无法编辑 删除 改名等操作
文件的默认权限为644
6为root管理员用户 可读写权限
4为r–权限 所有普通用户可以读取文件 但是无法编辑文件 必须有上级目录权限
重点
在Linux系统中如果运行程序必须使用一个虚拟用户运行
如果用户通过这个程序往磁盘中写入数据 必须以当前运行程序的虚拟用户的身份写入到磁盘中
所以我们能不能处理permission denied的问题?
当前的nginx服务以虚拟用户www来运行
用户连接nginx服务写入磁盘的时候 比如写入/data目录
data目录对于www用户来说拥有什么权限才可以写入
默认 /data
解决办法
wx 可以往里写内容 无法查看
正常往目录下增删改查 必须有rwx的权限7
给其他位rwx权限
以上的方法 不只是www可以写入内容 其他任何普通用户都可以往/data中写 工作中禁止给其他用户授权twx权限
属主属组修改为www即可
UMASK 控制默认文件和目录权限的值
作用:控制我们默认创建的目录和文件属性
目录默认 755 最高777
文件默认 644
工作中不修改UMASK值
①查看UMASK值
umask
②目录和文件的默认属性是由目录和文件的最大权限减去UMASK值得到了
对于一个目录来说最大的权限是什么?可以做任何操作 增删改查
目录:777权限
对于一个普通文件来说最大的权限是什么?可以读写操作 系统默认创建的就是普通文件
文件:666权限
目录:777
-022
=755 rwxr-xr-x
文件:666
-022
=755 rw-r–r--
③修改UMASK值 临时修改
PS:UMASK特殊情况 如果umask值有奇数位 则在文件相减后需要在奇数位加1
案例:创建一个文件权限是000的 目录权限为111 umask值设置为多少?
隐藏权限 -i -a
常用的隐藏权限
a append 追加
i immutabled 无敌 没有任何权限
①查看隐藏权限 lsattr
[root@heng ~]# lsattr /etc/passwd
---------------- /etc/passwd
②配置隐藏权限 chattr +a passwd
[root@heng ~]# chattr +a /etc/passwd
[root@heng ~]# lsattr /etc/passwd
-----a---------- /etc/passwd
③测试文件权限
root对加a的文件 只能追加新的内容 没有其他任何权限 但是会生成写带波浪线的文件
[root@heng ~]# ll /etc/|grep 'pass'
-rw-r--r-- 1 root root 1196 Feb 1 10:00 passwd
-rw-r--r--. 1 root root 1151 Feb 1 10:00 passwd-
④取消隐藏权限
[root@heng ~]# chattr -a /etc/passwd
[root@heng ~]# lsattr /etc/passwd
---------------- /etc/passwd
⑤配置隐藏权限 i 权限
[root@heng ~]# chattr +i /etc/passwd
[root@heng ~]# lsattr /etc/passwd
----i----------- /etc/passwd
⑥测试 i 权限
root对加i的文件 没有任何权限
文件的特殊权限位
①suid 属主有一个特殊权限 4
②sgid 属组有一个特殊权限 2
③other 其他权限位 有一个特殊权限 1
[root@heng ~]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 27856 Apr 1 2020 /usr/bin/passwd
[root@heng ~]# stat /usr/bin/passwd
File: ‘/usr/bin/passwd’
Size: 27856 Blocks: 56 IO Block: 4096 regular file
Device: 803h/2051d Inode: 50512504 Links: 1
Access: (4755/-rwsr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2021-02-01 10:00:01.458702727 +0800
Modify: 2020-04-01 11:57:19.000000000 +0800
Change: 2020-12-29 16:22:45.025030393 +0800
Birth: -
s权限位 是属于 属主特殊权限位
特点:隐藏属主的x权限 属主的x权限位显示位s
作用:如果给命令s权限 则执行这个命令的时候相当于有这个命令的属主权限
如果我们给命令设置了s权限,则所有用户使用这个命令的时候都相当于root
授权方式
chmod u+s 授权
chmod 4755 授权
chmod 0755 授权
[root@heng ~]# chmod u+s /usr/bin/rm
[root@heng ~]# ll /usr/bin/rm
-rwsr-xr-x. 1 root root 62872 Nov 17 06:24 /usr/bin/rm
sgid 运行命令的时候相当于属于这个命令所在的组的权限
如果给目录加sgid 其他用户在当前目录下创建的所有文件属组都变成当前用户身份
其他位特殊权限t 粘滞位
作用:控制用户在当前的目录只能管理自己的文件 不能删除其他用户文件