UGO权限
1) 文件对于拥有者的权限 User
2) 文件对于所属组里面的用户的权限 Group
3) 文件对于其他人的权限 Others
对于文件的权限
1)对于文件可读 r
2)对于文件可写 w
3)可执行文件 x
权限体现在什么地方?
[root@jenny ~]# ll /usr/sbin/useradd
-rwxr-x---. 1 root root 118232 Oct 31 00:33 /usr/sbin/useradd
1位 显示了文件的类型
- 普通文件
d 目录文件
l 链接文件
c 字符设备文件
b 块设备文件
s 套接字文件
p 管道文件
2-4位 代表的是User的权限
5-7位 代表的是Group的权限
8-10位 代表的是Others的权限
修改权限相关指令
1) chown 修改文件的拥有者
chown jenny file 将文件拥有者修改为jenny用户
chown :testgroup file 将文件所属组变更为testgroup
chown root:root file 同时将文件拥有者和所属组修改为root
2) chgrp 修改文件的所属组
chgrp GROUP FILENAME
3) chmod 修改文件的权限值
通过字符表达方式修改文件权限:
chmod u + r file
g - w
o = x
通过数字表达方式修改文件权限:
r-- = 100 = 4
-w- = 010 = 2
--x = 001 = 1
rw- = 4+2 = 6
r-x = 4+1 = 5
rwx =7
[root@jenny srv]# chmod 645 file
[root@jenny srv]# ls
file
[root@jenny srv]# ll
total 0
-rw-r--r-x. 1 root root 0 Apr 20 09:55 file
练习:
1.添加用户carol,jenny,ivy
2.创建文件/tmp/file
3.要求
1) carol用户能够vim file文件,并正常保存退出 将文件拥有者变更为carol,rw-
2) jenny用户能够看到file文件的内容,不允许修改 r--
3) ivy用户也能够看到file文件的内容,不允许修改 r--
4) 其他剩余用户对于文件没有任何权限 ---
答案:
[root@jenny tmp]# ll /tmp/file
-rw-r-----. 1 carol testgroup 23 Apr 20 10:21 /tmp/file
55 chown carol file
64 groupadd testgroup
65 usermod -aG testgroup ivy
66 usermod -aG testgroup jenny
67 id ivy
68 id jenny
69 ll
70 chown :testgroup file
对于文件的权限
1)对于文件可读 r
2)对于文件可写 w
3)可执行文件 x
对于目录的权限
- r: 可读取目录结构和权限
- w: 可更改目录结构列表、新建 / 删除 / 重命名 / 转移子文件 / 目录。
- x: 表示用户可进入到该目录中
目录/testdir:
carol: r-x
ivy|jenny: rwx
others: r-x
86 mkdir /testdir
87 ll -d /testdir/
88 chown carol:testgroup /testdir/
89 ll -d /testdir/
90 chmod 575 /testdir/
91 ll -d /testdir/
文件testfile:
carol:rw-
ivy|jenny: r--
others: ---
创建文件、目录默认权限和umask值有关
公式: 最大权限值-umask=默认权限值
目录: 777 - 022 = 755
文件默认权限: 666 - 022 = 644
权限分类
1) UGO 基础权限 - 控制文件、目录的用户行为
root 用户是不受UGO权限限制的
2) ACL 权限 - UGO权限的补充
alice r--
bob rw-
jenny rwx
ivy r-x
设置的方式
setfacl -m u:user:permission file
setfacl -m g:group:permission file
删除某一条规则
setfacl -x u:user file
setfacl -x g:group file
罗列ACL规则
getfacl file
3) 特殊权限
SUID: 文件,任何人在执行指定文件的时候,临时拥有文件拥有者用户的权限 /usr/bin/passwd
设置方式 chmod u+s filename
SGID: 目录,继承目录所属组
设置方式 chmod g+s dirname
STICKY: 目录, 只有 root 用户和文件拥有者有权删除目录中的文件
设置方式 chmod +t dirname
4) ATTR权限(隐藏权限)
设置命令:
chattr +权限值 file
查看:
lsattr file
权限的含义:
i: 文件不可被删,不可被改变(root也不行)
a: 文件仅可被追加内容,不可被修改
A: 不修改文件的访问时间
5) selinux
一般情况下,在生产环境中,关闭selinux
查看selinux
[root@jenny tmp]# getenforce
Enforcing
设置的方式
1. [root@jenny tmp]# setenforce 0
Permissive
注意:上述针对当前环境有效,服务器重启后无效
2. vim /etc/selinux/config
SELINUX=disabled
注意:重启服务器后生效
回家作业
1. man chattr查看attr具有哪些权限,分别对应的含义
2、权限相关作业:
题目
创建用户carol,ivy,jenny,kevin,alice
创建/test目录,并在目录下创建testfile1,testfile2,testfile3
要求:
1) 所有用户能够查看testfile1的内容。
usermod -aG testgroup carol
usermod -aG testgroup ivy
usermod -aG testgroup jenny
usermod -aG testgroup jenny
usermod -aG testgroup alice
chown :testgroup /test/testfiel1
chmod g+r /test/testfiel1
2) carol、ivy、jenny能够修改testfile1
setfacl -m u:carol:rw /test/testfiel1
setfacl -m u:ivy:rw /test/testfiel1
setfacl -m u:jenny:rw /test/testfiel1
3) kevin、alice能够修改testfile2
setfacl -m u:kevin:rw /test/testfiel2
setfacl -m u:alice:rw /test/testfiel2
4) kevin、alice能够管理目录下的创建、删除文件操作
setfacl -m u:kevin:rwx /test
setfacl -m u:alice:rwx /test
5) carol、ivy、jenny不能够删除、也不能创建文件
setfacl -x u:carol /test
setfacl -x u:ivy /test
setfacl -x u:jenny /test
6) testfile3 仅允许追加内容,不允许修改
chattr +a /test/testfiel3
7) 创建/tmp/testdir目录,要求该目录下创建的所有文件所属组都为testgroup这个组
sgid权限
mkdir /tmp/testdir
chgrp testgroup /tmp/testdir
chmod g+s /tmp/testdir
查找
whereis 查找命令绝对路径(及其帮助文档)对应的指令
which 查找命令绝对路径所在位置
locate 基于文件名寻找文件路径 (安装locate程序:yum -y install mlocate.x86_64)
1. locate 运行机制
每隔一天,遍历操作系统文件,并将遍历的结果存放至/var/lib/mlocate/mlocate.db
当搜索的时候,直接读取/var/lib/mlocate/mlocate.db,将结果显示出来
locate: can not stat () `/var/lib/mlocate/mlocate.db': No such file or directory
可以通过执行updatedb,遍历操作系统文件
2. locate 特点
1)搜索的速度是相对较快的
2)不是实时的
3)模糊匹配
4)不是全系统扫描
/etc/updatedb.conf
5)查找条件比较单一
find 全方位搜索
1. 特点
1)实时查找 --> 慢
2)查找条件丰富 权限、大小、时间、文件类型
3)可以指定查找后动作
2. find命令格式
find [路径] 查找条件 [执行动作]
一个条件一个参数,一个find命令可以有多个条件
例子:
1. 查找系统中名称为useradd的文件
find / -name useradd
查找系统中/usr/sbin目录下,文件名称不叫useradd的文件
find /tmp ! -name test
2. 查找系统中占用大小大于7M的文件
find / -size +7M
du -sh * 查看当前目录下所有文件大小
查找系统中文件大小在7M到10M之间的文件
find / -size +7M -size -10M
find / -size +7M -size -10M 2> /dev/null
3. 查找系统中的块设备文件
find / -type b
4. 基于用户和组的查找
-user -group
-uid -gid
5. 查找7天内内容修改过的文件名
find / -mtime 7
6. 基于权限查找
find / -perm 644 代表完全匹配644
find / -perm -644 代表需满足的最小权限
找jenny用户可写的文件,且jenny用户是文件的拥有者
find / -user jenny -perm -200
执行动作, {}替代找到的文件 \;代表语句结束符
-ok 交互式的执行方式
find /tmp -name test -ok ls -l {} \;
-exec 非交互的执行方式
find /tmp -name test -exec ls -l {} \;
作业:
1) 查找系统中文件名为wtmp的文件
find / -name wtmp
2) 查找系统中文件大小超过10M的文件名
find / -size +10M
3) 查找access time比/etc/fstab更新的文件
4) 查找系统中拥有者是root,并且所属组是input的文件
find / -user root -group input
5) 查找文件类型是链接文件的名称
find / -type l
6) 将查找文件名为test的文件移动到/srv目录
find / -name '*test*' -exec mv {} /srv \;
打包、压缩
1. zip程序
yum -y install zip
压缩
zip [zipfile] [file]
zip -r test2.zip test # 压缩目录加-r选项
解压
yum -y install unzip
unzip [zipfile] # 默认情况下,解压到当前目录
unzip test2.zip -d /opt/ # 指定解压到/opt目录
2. gzip 程序 、bzip2程序、xz程序
命令的用法
gzip 压缩 gunzip 解压
bzip2 压缩 bunzip2 解压
xz 压缩 unxz 解压
特点
1)压缩时,源文件会自动被压缩程序处理,源文件会不存在
2)解压时,压缩文件会消失,源文件出现
3)不能够压缩目录
4)无法将多个文件压缩至一个压缩包
3. tar ---> 打包
用法:
打包 tar -cf /tmp/test.tar [file]
解包 tar -xf /tmp/test.tar
打包并压缩 tar -czf /tmp/test.tar.gz [file] # 调用gzip程序完成压缩
tar -cjf /tmp/test.tar.bz2 [file] # 调用的bzip2 程序完成压缩
tar -cJf /tmp/test.tar.xz [file] # 调用xz程序完成压缩
解压并解包
tar -xzf test.tar.gz test #调用gzip完成解压
tar -xjf test.tar.bz2 test #调用bzip2完成解压
tar -xJf test.tar.xz test #调用xz程序完成解压
指定位置解压:
tar -xzf test.tar.gz -C /srv/
实验:
1. 在/tmp/创建 test目录,压缩包名为/tmp/test.tar.xz 对该目录调用xz方式进行压缩
tar -cJf /tmp/test.tar.xz /tmp/test
2. 将/tmp/test.tar.xz解压,解压到/opt目录
tar -xJf /tmp/test.tar.xz /tmp/test
注意: tar路径问题
如果被打包的文件是绝对路径,tar会自动将其变为相对路径。
tar -czf /tmp/efg /srv/file1 /srv/file2
tar: Removing leading `/' from member names
[root@jenny srv]# tar -xzf /tmp/efg.tgz -C /opt/
[root@jenny srv]# cd /opt/
[root@jenny opt]# ls
srv
[root@jenny opt]# cd srv/
[root@jenny srv]# ls
file1 file2
重定向作业:
1. 将uid最大的一个用户名字显示出来
sort -t: -k 3 -n /etc/passwd | tail -n1 | cut -d: -f1
2. 将/var/log目录下的文件根据文件大小排序
ll | sort -k5 -n -r
3. 将/etc/fstab文件中非注释行(以#开头的行为注释行) 写入/tmp/fstab文件中
grep -v ^# /etc/fstab > /tmp/fstab
4. 将boot目录下的vmlinuz文件的拥有者截取出来
ll /boot/vmlinuz-* | cut -d' ' -f3