特殊权限
可执行的setuid作用在属主的位置
权限位作用于属主的位置 可执行的权限位 执行这条令的时候,相当于这条命令的所有者 root
大S 和 小s的区别
拥有执行权限,设置setuid之后是小s
没有执行权限,设置setuid之后是大S
setuid # 的权限是数字4开头的
# 添加特殊权限s
[root@mpd ~]# chmod u+s /usr/bin/passwd
[root@mpd ~]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 Jun 10 2014 /usr/bin/passwd # 查看文件变红色说明特别危险
setgid作用在属组的位置
权限为作用在属组的x为 使用s表示 有大S和小s
用户在某个目录下新创建的目录或者文件,默认的所属组是自己的基本组
当设置setgid之后,用户新创建的目录或者文件的默认所属组不在是自己的组了
默认的组就是这个目录的所属组 让多个用户能够共享一个目录
案例:
root@mpd ~]# mkdir /mysql
[root@mpd ~]# chmod g+s /mysql/
[root@mpd ~]# ll -d /mysql
drwxr-sr-x 2 root root 6 Jul 24 15:13 /mysql
# 属于这个组的在这个组下创建的文件都可以共享相应权限
# 跟属组关联
sticky粘滞位 作用在其他用户上
权限作用于 others 的x为 使用t表示 小t 大T
给目录设置, 一个目录所有用户都拥有管理的权限 777 针对此目录设置一个粘滞位
所有用户都可以在这个目录进行创建、删除文件的权利 但是只能管理自己的文件 或者管理员拥有管理所有文件的权限 root
案例:
[root@mpd ~]# mkdir /test
[root@mpd ~]# chmod o+t /test
[root@mpd ~]# ll -d /test
drwxr-xr-t 2 root root 6 Jul 24 15:21 /test
三位特殊权限总结
chmod u+s /dir # 作用在属主上的特殊权限
chmod g+s /dir # 作用在属组上的特殊权限
chmod o+t /dir # 作用在其他用户上的特殊权限
# 普通用户不能使用yum,命令,即使添加了setuid的权限也不行 此权限不能乱给 知道就行
# setuid的权限是4开头的
# setgid的权限是2开头的
# sticky的权限是1开头的
特殊属性
特殊属性i 和 a
lsattr # 显示特殊属性
chattr # 设置特殊属性
a # 这个文件只能追加内容和查看 别的什么都做不了 删除 移动 复制可以
i # 什么都操作不了
# 针对所有用户包管理员
案例;
[root@mpd ~]# mkdir /nginx
[root@mpd ~]# touch /nginx/pik /nginx/pag
[root@mpd ~]# chattr +i /nginx
[root@mpd ~]# cp /nginx/pag ./
[root@mpd ~]# rm -fr /nginx/pag
rm: cannot remove ‘/nginx/pag’: Permission denied
重定向的概述
将原本要输出到屏幕上面的内容,重定向到一个指定的文件中
将原本从键盘上面输入的内容,改为从命令或者文件当中读取
为什么要用重定向
1. 数据非常重要,需要保存
2. 后台程序的输出重定向到一个文件中
3. 定时任务的执行结果
4. 把一些错误的输出定向到空
5. 把正确和错误的信息都需要保存
stdin #标准输入 0 # 从键盘上面读取输入的内容,
# 或者从命令及文件中读取输入的内容
stdout #标准输出 1 # 默认将正确的信息标准输出到屏幕上方
stderr #错误输出 2 # 默认将错误的信息标准输出到屏幕上方
[root@qls ~]# cat
hello #标准输入
hello #标准输出
# 输出重定向
将原本要输出到屏幕上面的内容,重定向到一个指定的文件中
符号
> #标准覆盖正确输出重定向 # 将正确的内容覆盖源文件的 当文件不存在时,会自动创建
>> #标准追加正确输出重定向 # 将正确的内容追加到指定文件的底部 当文件不存在时,会自动创建
2> #标准覆盖错误输出重定向 # 将错误的信息覆盖到指定的文件中
2>> #标准追加错误输出重定向 # 将错误的信息追加到文件的底部
# 把正确的和错误的信息都保存到一个文件中
[root@qls ~]# ls /roott > file.txt 2>&1 # 不推荐
# 将正确的信息和错误的信息重定向到空
[root@qls ~]# ls /roottt &> /dev/null
# 把正确的和错误的放在不同的文件中
[root@qls ~]# ls /rooot >> file1.txt 2>> file2.txt
# 输入重定向
将原本从键盘上面输入的内容,改为从命令或者文件当中读取
符号
< #标准输入重定向 #将原本从默认的键盘中读取数据改为由命令或者文件中读取
<< #标识符限定输入重定向 #从键盘中读取内容,直到遇到标识符的分解符为止
案例:
[root@qls ~]# grep 'root' < /etc/passwd
[root@qls ~]# grep root
[root@qls ~]# dd if=/dev/zero of=/root/test.log bs=1M count=50
[root@qls ~]# dd </dev/zero >/root/oldboy.log bs=10M count=100
[root@qls ~]# tr 't' 'T' < file1.txt
管道技术
| 管道
连接左右两个命令的使用 把前面的命令作为标准输出通过管道交给后面的命令 作为标准输入
只能把正确的信息交给后面的命令,错误的信息的不会传递
# 管道技术中的tee技术
需要保存一些标准输出的内容
-a # 追加
tee 和 重定向的区别
重定向 # 把要输出到屏幕上面的内容重定向到指定的文件中
tee # 把要输出到屏幕上面的内容重定向到指定的文件中 ,并且可以继续输出一份到屏幕上面
# 管道中xargs技术
让一些不支持管道的命令支持管道 把前面命令的执行结果以文件的参数传递方式传递给后面的命令