LINUX权限管理
权限:就是约束用户能对系统执行的操作
为什么要使用权限?
linux本身是一个多用户的操作系统,需要对用户进行权限划分才能 保证系统使用的安全科学
1 提高安全性
2 数据隔离
3 职责明确
权限与用户之间的关系
linux系统中权限是用来规定用户能干什么不能干什么
针对文件定义的三种身份分为 owner group other
当一个用户访问文件时其访问流程如下:
1判断用户的文件属性
2判断文件是否为文件属组,如果是则按属组权限进访问
3如果不是文件属主,也不是文件属组,则按其他权限进行访问
权限中的rwx的含义
linux中权限是由 rwx-xr-x 这9位字符标表示
主要控制文件的属主user 属组group 其他用户other
4®
2(w)
1(x)
0(无权限)
例子:
文件权限示例1:
rwxrw-r-- alice hr file.txt
alice是该文件的属主拥有全部的权限
hr 也就是属组拥有读写的权限
other的用户只拥有查看的权限
示例2 :
rw-r----- root dev file2.txt
root 对file2有读写的权限
dev组内的用户对于file2.txt有read权限
jack的附加组为dev组
那么jack对于file文件有读的权限
alice 对于此文件什么权限都没有
示例3
rwxr–rwx jack ops file3.txt
jack 对于fiel3.txt 拥有全部权限
tom 附加组在ops中 所以tom对于该文件只有读的权限
alice 在other用户里面所以拥有全部权限
修改文件的权限
简单的说就是:赋予某个用户或者组能够以某种方式读写执行和访问文件
如何修改权限
命令 chmod (change mode )
对于root而言可以修改任何人的文件权限
对于普通用户而言只能变更属于自己的文件权限
UGO方式
给所有人添加读写执行权限
chmod a = rwx file
a=all(user + group + other )
取消文件的所有权限
chmod a=-rwx file
属组读写执行 属组读写 其他人无权限
chmod u=rwx ,g=rw,o=- file
总结:
u 后面跟用户的属主权限
g 后面跟用户的属组权限
o 后面跟other用户的权限
加什么就写啥
NUM方式(使用最多)
chmod 664 file1.txt
root@localhost tmp]# chmod 664 file1.txt ; ll | grep file1.txt
-rw-rw-r--. 1 alice hr 13 Jul 13 18:13 file1.txt
属主属组 rw权限
其他的用户无权限
chmod 600 file1.txt
chmod 600 file1.txt ; ll | grep file1.txt
-rw-------. 1 alice hr 13 Jul 13 18:13 file1.txt
属主rw权限 其他的无权限
chmod -R 755 dir
root@localhost test]# chmod -R 755 /test/test.conf
[root@localhost test]# ll | grep test.conf
-rwxr-xr-x. 2 root root 599 Jul 9 17:09 test.conf
在此总结下chmod常用的选项:
u 文件属主权限
g 同组用户权限
o 其它用户权限
a 所有用户(包括以上三种)
-R, --recursive 以递归方式更改所有的文件及子目录
权限设定的方案:
针对hr 部门的访问目录 /data/hr 设置权限,要求如下:
超级管理员 root 用户和hr 组员工可读,写,.执行
其他的用户没有任何权限
groupadd hr
useradd hr01 -G hr ; useradd hr02 -G hr
mkdir /home/hr
chgrp hr /home/hr
chmod 770 /home/hr
linux中权限对于文件和目录的区别
这里使用touch创建不能创建 能够使用vim编辑但是不保存
## 验证r权限
使用root 身份新建文件
切换到普通用户
测试普通用户对改文件是否拥有可读权限
测试普通用户对该文件是否拥有可执行和删除权限
[root@localhost ~]# su -
Last login: Tue Jul 13 19:40:55 CST 2021 on pts/1
[root@localhost ~]# echo "date" > /opt/filename
[root@localhost ~]# useradd oldxie
[root@localhost ~]# su - oldxie
[oldxie@localhost ~]$ cat /opt/file
file filename
[oldxie@localhost ~]$ cat /opt/filename
date
[oldxie@localhost ~]$ rm -r /opt/filename
rm: remove write-protected regular file ‘/opt/filename’?
如上所述:root下创建的文件默认下普通用户是不能删除只能查看,就算能用vim编辑但是也不能保存
## 验证w权限
修改权限只有W
测试能否查看文件
测试是否能写入数据至文件
测试是否能删除文件
[root@localhost ~]# chmod 642 /opt/filename
[root@localhost ~]# su - oldxie
Last login: Tue Jul 13 19:51:07 CST 2021 on pts/1
[oldxie@localhost ~]$ cat /opt/filename
cat: /opt/filename: Permission denied
[oldxie@localhost ~]$ vim /opt/filename
Error detected while processing /etc/vimrc:
line 5:
E488: Trailing characters: #export PS1=
Press ENTER or type command to continue
[oldxie@localhost ~]$ echo 'date'>> /opt/filename
[oldxie@localhost ~]$ rm -f /opt/filename
rm: cannot remove ‘/opt/filename’: Permission denied
[oldxie@localhost ~]$
从上面能看出:
当只有w权限时只能够查看文件
能重定内容到文件
使用vim编辑是不能保存的
不能够删除文件(因为是roor下创建的文件普通用户没有删除的权限)
验证x权限
修改权限只有x
测试能否查看文件
测试能否写入数据至文件
测试能否删除文件
测试能否读取文件
[oldxie@localhost root]$ ll /opt/ | grep filename
-rw-r----x. 1 root root 15 Jul 13 20:01 filename
[oldxie@localhost root]$ cat /opt/filename
cat: /opt/filename: Permission denied
[oldxie@localhost root]$ echo 'date' >>/opt/filename
bash: /opt/filename: Permission denied
[oldxie@localhost root]$ rm -f /opt/filename
rm: cannot remove ‘/opt/filename’: Permission denied
[oldxie@localhost root]$
vim能进入编辑但是也是不能保存
不能查看不能删除文件
文件权限总结
读取权限r : 具有读取,阅读文件内容权限
只能使用cat head tail less more
写入权限w :具有新增,修改文件内容的权限
1使用vim 会提示权限拒绝,但可以强制保存会覆盖文件中的所有内容
2使用echo命令重定向的方式可以往文件内写入数据,>>可以追加内容
使用rm 无法删除文件,因为删除文件需要看上级目录是否具有w的权限
执行权限x:具有执行文件的权限
单独的使用x权限是什么用都没有
如果普通用户需要执行文件,需要配合r权限
权限对目录的影响
验证r权限
使用root 身份创建目录,修订权限为774
在目录中创建一个普通文件
测试是否能查看目录中的内容
测试是否能进入该目录
[root@localhost ~]# mkdir /data
[root@localhost ~]# echo '123' > /data/filename
[root@localhost ~]# chmod 774 /data/
[root@localhost ~]# su - oldhong
Last login: Tue Jul 13 20:18:59 CST 2021 on pts/1
[oldhong@localhost ~]$ ls /data
ls: cannot access /data/filename: Permission denied
filename
[oldhong@localhost ~]$ cd /data/
-bash: cd: /data/: Permission denied
[oldhong@localhost ~]$
只能查看文件名但是不能打开,也不能进入此目录
验证w权限
使用root 修改权限为772
测试是否能查看文件中的内容
测试是否能进入此目录
测试是否能删除文件中的目录
Last login: Tue Jul 13 20:35:05 CST 2021 on pts/1
[root@localhost ~]# chmod 772 /data/
[root@localhost ~]# su - oldhong
Last login: Tue Jul 13 20:36:02 CST 2021 on pts/1
[oldhong@localhost ~]$ ls /data/
ls: cannot open directory /data/: Permission denied
[oldhong@localhost ~]$ cd /data/
-bash: cd: /data/: Permission denied
[oldhong@localhost ~]$ rm -f /data/filname
rm: cannot remove ‘/data/filname’: Permission denied
[oldhong@localhost ~]$
验证x权限
使用root 用户修订权限为771
测试是否能查看目录中的内容
测试是否能进入目录
[oldhong@localhost ~]$ su - root
Password:
Last login: Tue Jul 13 20:39:37 CST 2021 on pts/1
[root@localhost ~]# chmod 771 /data/
[root@localhost ~]# su - oldhong
Last login: Tue Jul 13 20:40:08 CST 2021 on pts/1
[oldhong@localhost ~]$ ls /data/
ls: cannot open directory /data/: Permission denied
[oldhong@localhost ~]$ cd /data/
[oldhong@localhost data]$ pwd
/data
能够进入目录但是不能查看
目录权限小结
读取权限r :具有浏览目录及目录权限
使用ls 命令浏览目录及子目录,但同时也会提示权限拒绝
ls -l 命令浏览目录及其子目录,文件属性会带问号,并且只能看见文件名
写入权限w :具有增加删除或修改目录文件名权限,但需要配合x权限使用
可以在目录中创建文件删除文件但是不能进入目录,不能复制目录,不能删除目录,不能移动目录
执行权限x:具有执行文件的权限
只能进入目录
不能浏览,复制,移动,删除
文件与目录权限总结
文件权限小结:
r权限,只给用户查看,没有其他的操作
rw 可以编辑和查看文件,但是不能执行
rx 可以查看和执行文件,不能修改
rwx可读可写可执行文件不能删除
目录权限小结:
目录rx权限,允许浏览目录文件以及子目录,不允许在该目录下创建文件和删除文件
目录rw权限,能够查看目录,能往目录中写入文件但是没办法进入目录(使用非常少)
默认系统设定的安全权限:
文件权限644 rw-r–r--
目录权限755 rwx-r-xr-x 属主:啥都能干
属组:不能创建文件删除文件
其他:能看能进入但是不能创建文件,删除文件
修改文件所属关系
命令:chown (change owner)
chgrp (change group)
chown bin /data/ | ll -d /data/
drwxrwx--x. 2 bin root 22 Jul 13 20:35 /data/
drwxrwx--x. 2 bin adm 22 Jul 13 20:35 /data/
修改目录属主为root ,所属组为root 并且进行递归传递授权
[root@localhost /]# chown -R root.root /data/
[root@localhost /]# ll -d /data/
drwxrwx--x. 2 root root 22 Jul 13 20:35 /data/
chgrp(change group)
[root@localhost /]# chgrp adm /data/ | ll -d /data/
drwxrwx--x. 2 root adm 22 Jul 13 20:35 /data/
修改文件所属关系场景
进程能够以一种什么样的方式访问一个文件,取决于这个进程所运行的用户对这个文件有什么样子的权限
我们下面做一个http场景的说明
首先
在这里插入图片描述
关闭防火墙
yum install -y httpd
sed -i ‘s#SELINUX=enforece#SELINUX=disabled#g’ /etc/selinux/config
setenforce 0
systemctl stop firewalld
systemctl restart httpd
echo ‘i am from sichuan’ >>/var/www/html/index.html
chown apache.apache /var/www/html/index.html