前言
学习完如何创建用户之后,我们来学习LINUX系统的文件权限及其管理。Linux系统中的每个文件和目录都有访问许可权限,用他来确定谁能通过何种方式对文件和目录进行访问和操作。文件或目录的访问权限分为只读,只写和可执行三种。
一:文件权限的了解
1.文件权限的查看
首先我们用touch命令创建一个a.txt文件
[root@xj ~]# touch a.txt //创建文件
[root@xj ~]# ll a.txt //查看文件权限
-rw-r--r--. 1 root root 0 3月 6 15:47 a.txt
2.文件的基本权限
3.修改文件权限
使用到的相关命令chmod
chmod命令是非常重要的,用于改动文件或目录的访问权限。用户用它控制文件或目录的访问权限。 该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。 命令的使用方法
chmod [who] [+ | - | =] [mode] 文件名
1.3.1例 我们将a.txt文件取消拥有者可写的权限
[root@xj ~]# chmod u-w a.txt
[root@xj ~]# ll a.txt
-r--r--r--. 1 root root 0 3月 6 15:47 a.txt
由此我们看到a.txt文件的权限变成了-r--r--r--
1.3.2例 我们将a.txt文件增加组可执行的权限
[root@xj ~]# chmod g+x a.txt
[root@xj ~]# ll a.txt
-r--r-xr--. 1 root root 0 3月 6 15:47 a.txt
由此我们看到a.txt文件的组权限变成了-r--r-xr--
1.3.3例 我们将a.txt文件所以权限为只读
[root@xj ~]# chmod a=r a.txt
[root@xj ~]# ll a.txt
-r--r--r--. 1 root root 0 3月 6 15:47 a.txt
1.3.4例 我们将a.txt文件一次性修改多个权限
[root@xj ~]# chmod u=rwx a.txt
[root@xj ~]# ll a.txt
-rwxr--r--. 1 root root 0 3月 6 15:47 a.txt
4.修改目录权限
首先我们用mkdir 命令创建一个名为test 的目录,并且查看目录的权限
[root@xj ~]# mkdir test/
[root@xj ~]# ll -dtest/
drwxr-xr-x. 2 root root6 3月 6 16:19 test/
1.4.1 例 修改目录拥有者权限为可读
[root@xj ~]# chmod u-w test/
[root@xj ~]# ll -d test/
dr-xr-xr-x. 2 root root 6 3月 6 16:19 test/
二:权限的数字设定法
1.数字权限的了解
2.数字权限的计算
3.用数字修改文件权限
2.3.1例 用数字修改a.txt 文件权限为 -rw--w--w-
[root@xj ~]# chmod 622 a.txt
[root@xj ~]# ll a.txt
-rw--w--w-. 1 root root 0 3月 6 15:47 a.txt
三:文件拥有者和所属组
1.修改文件拥有和所属组
语法:chownUSER:GROUP 对象
chown USER 对象
chown :GROUP 对象
首先我们先创建一个为linux 的用户 指定所属组为 spade组 (如果不会创建请看上节课)
[root@xj~]# useradd -g spade linux
3.1.1例 修改a.txt 文件的文件拥有者为linux 所属组为spade
[root@xj ~]# chown linux:spade a.txt
[root@xj ~]# ll a.txt
-rw--w--w-. 1 linux spade 0 3月 6 15:47 a.txt
3.1.2 例 修改 a.txt 文件的文件拥有者为linux
[root@xj~]# chown linux a.txt
[root@xj~]# ll a.txt
-rw--w--w-.1 linux spade 0 3月 6 15:47 a.txt
3.1.3 例 修改 a.txt 文件的文件所属组为root
[root@xj ~]# chown :root a.txt
[root@xj ~]# ll a.txt
-rw--w--w-. 1 linux root 0 3月 6 15:47 a.txt
3.1.4 例 修改 test 目录的下所有文件拥有者为linux
[root@xj~]# chown linux test/ -R
[root@xj~]# ll -d test/
dr-xr-xr-x.2 linux root 6 3月 6 16:19 test/
四:特殊权限
1.什么是特殊权限
linux中除了常见的读(r)、写(w)、执行(x)权限以外,还有3个特殊的权限,分别是suid、sgid和sticky bit
2.特殊权限有什么用
s对应的数值为:u 4,g 2,o 1
SUID:
限定:只能设置在二进制可执行程序上面。对目录文本设置无效。
功能:程序运行时的权限从执行者变更成程序所有者。
[root@xj~]# which passwd
/usr/bin/passwd
[root@xj~]# ll /usr/bin/passwd
-rwsr-xr-x.1 root root 27832 Jan 29 2014/usr/bin/passwd
[root@xj~]# which less
/usr/bin/less
[root@xj~]# chmod u+s /usr/bin/less
[linux@xj~]$ less /etc/shadow
能看到文件里的内容
等同于
[root@xj~]# chmod 4755 /usr/bin/less
SGID
限定:既可以给二进制可执行程序设置,也可以给目录设置。
功能:在设置了SGID权限的目录下建立文件时,新创建的文件的所属组会继承上级目录的所属组
[root@xj~]# mkdir shark
[root@xj~]# chown :linux shark/
[root@xj~]# ll -d shark/
drwxr--r--2 root linux 6 Feb 15 09:03 shark/
[root@xj~]# touch shark/linux.txt
[root@xj~]# touch shark/mk.txt
[root@xj~]# ll shark/
total0
-rw-r--r--1 root root 0 Feb 15 09:04 mk.txt
-rw-r--r--1 root root 0 Feb 15 09:04 linux.txt
加上SGID
[root@xj~]# chmod g+s shark/
[root@xj~]# touch shark/docker.txt
[root@xj~]# ll shark/
total0
-rw-r--r--1 root linux 0 Feb 15 09:06 docker.txt
-rw-r--r--1 root root 0 Feb 15 09:04 mk.txt
-rw-r--r--1 root root 0 Feb 15 09:04 linux.txt
Stickybit
限定:只作用于目录
功能:目录下创建的文件只有root、文件创建者、目录所有者才能删除
[root@xj~]# ll -d /tmp/
drwxrwxrwt.14 root root 4096 Feb 15 09:08 /tmp/
[root@xj~]# chmod 1777 /share/
[root@xj~]# ll -d /share/
drwxrwxrwt2 root root 6 Feb 15 09:10 /share/
[linux@xj~]$ cd /share/
[linux@xjshare]$ ls
[linux@xjshare]$ touch linux.txt
[root@xj~]# useradd mk
[root@xj~]# su - mk
[mk@xj~]$ cd /share/
[mk@xjshare]$ linux -rf linux.txt
linux:cannot remove ‘linux.txt’: Operation not pelinuxitted
3.Linux文件系统扩展
属性:chattr lsattr
语法:+a 只能追加内容
+i 不能被修改
[root@xj~]# echo "spade" > b.txt
[root@xj~]# cat b.txt
spade
[root@xj~]# chattr +a b.txt //给b.txt添加只能追加内容的权限
[root@xj~]# echo "123456" > b.txt //覆盖b.txt
-bash:b.txt: Operation not permitted //覆盖失败
[root@xj~]# echo "123456" >> b.txt //追加成功
[root@xj~]# rm -rf b.txt //尝试删除b.txt
rm:cannot remove ‘b.txt’: Operation not permitted //删除失败
[root@xj~]# chattr +i b.txt //给b.txt添加不能被修改的权限
[root@xj~]# echo "123456" >> b.txt //追加内容
-bash:b.txt: Permission denied //追加失败
[root@xj~]# lsattr b.txt //查看对应的权限
----ia----------b.txt //权限为只能追加不能修改
[root@xj~]# chattr -i b.txt //删除不能修改权限
[root@xj~]# chattr -a b.txt //删除只能追加权限
[root@xj~]# lsattr b.txt //查看权限
----------------b.txt
实际应用:
[root@xj~]# chattr +a /etc/passwd
[root@xj~]# chattr +a /etc/shadow
还能针对日志文件进行设置