帮助文档
专业提供香港服务器、香港云服务器、香港高防服务器租用、香港云主机、台湾服务器、美国服务器、美国云服务器vps租用、韩国高防服务器租用、新加坡服务器、日本服务器租用 一站式全球网络解决方案提供商!专业运营维护IDC数据中心,提供高质量的服务器托管,服务器机房租用,服务器机柜租用,IDC机房机柜租用等服务,稳定、安全、高性能的云端计算服务,实时满足您的多样性业务需求。 香港大带宽稳定可靠,高级工程师提供基于服务器硬件、操作系统、网络、应用环境、安全的免费技术支持。
服务器资讯 / 香港服务器租用 / 香港VPS租用 / 香港云服务器 / 美国服务器租用 / 台湾服务器租用 / 日本服务器租用 / 官方公告 / 帮助文档
【Linux】关于Linux中的权限
发布时间:2024-02-29 09:32:43   分类:帮助文档
【Linux】关于Linux中的权限 文章目录 前言Linux权限文件访问者的分类(人)文件类型和访问权限(事物属性)文件类型基本权限 目录的权限粘滞位权限的总结 前言 前面我们已经知道。Linux下有两种用户:超级用户(root)、普通用户 以及相互之间的切换: 以及引入的权限的一些铺垫。 下面,我们对其进行补充说明。 如果不切换用户,就想让普通用户以root的身份,执行对应的指令,该怎么去做呢? 很简单,加上sudo.sudo加上指令表示短暂的提权,root执行命令。不过这里会有一个问题,不让我们执行,也就是说系统不相信这个用户: 在这个地方,我们授权的时候,让我们输入自己的密码:给受信任的用户,提供最少的执行障碍 解决方法:需要将当前用户添加到系统的文件/etc/sudoers中。这里先不展开说明。后面会做补充。如果暂时使用root,root的权限是最大的,可以随便切换到其他普通用户。也就不存在没有权限的问题了。 Linux权限 简单理解权限:权限简单来说就是进行约束的。(人,一个或者某些群体) ​ 目标对象,本来就没有对应的属性。也就不具备该权限。一个事情是否允许被谁做 文件 = 内容+属性 为什么要有权限❓便于我们系统进行安全管理的 为什么创建的目录或者普通文件,默认的权限是我们看到的这个样子: 为什么创建出来的目录/文件权限是默认上面这个样子的: Linux规定,目录起始的权限是777(二进制表示,这一部分不懂可以先跳过,往下继续看权限的二进制) ​ 普通文件的起始权限是666 umask: 注意这里的umask是可以进行改变的: 0022——系统默认会配置好umask权限掩码:凡是在umask中出现的权限,都必须在起始权限去掉!!! 这也就对应上了: 这里还存在一个问题:去掉是在做减法吗❓ 我们发现file根本没有发生变化如果是减法的话应该是原来的666(110 110 110)--------》001 001 001.所以不是减法 实际上,最终权限 = 起始权限 & (~umask) 起始权限:666 110 110 110 umask: 0111 001 001 001 ~umask: 110 110 110 起始权限 & (~umask): ​ 110 110 110 即 rw- rw- rw- 文件访问者的分类(人) 文件和文件目录的所有者: u—User 文件和文件目录的所有者所在的组的用户: g—Group 其它用户: o—Others 文件类型和访问权限(事物属性) 文件类型 补充:Linux和windows(根据文件的后缀)的差别很大。而Linux的文件类型和后缀无关(后缀名可以作为提示,用户可以使用后缀区分文件类型),但是对linux来说区分文件和文件本身的后缀是无关的(但是gcc等工具对文件后缀可能有要求)。后缀本质就是文件名的一部分。 开始之前,我们输入ll指令,来看看前面10个字符代表什么意思: 在linux中,是通过ll显示的众多属性列中的第一列的第一个字符来区分文件类型的。 d:目录文件 -:普通文件(源代码,库文件,可执行程序,文档压缩包等等) l:链接文件(类似Windows的快捷方式) b:块设备文件(例如硬盘、光驱等) p:管道文件 c:字符设备文件(例如键盘,显示器) [hwc@VM-8-3-centos test5]$ ll /dev/tty crw-rw-rw- 1 root tty 5, 0 Sep 29 16:02 /dev/tty s:socket文件 到了这里,我们已经了解了第一个字符,那其他的呢❓ 对于权限字符所代表的意思,请往下看👇 基本权限 i.读(r/4): Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限 ii.写(w/2): Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限 iii.执行(x/1): execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限 iv.“—”表示不具有该项权限 对于权限我们有了基本的了解,那我们该如何去设置权限呢❓ chmod 功能: 设置文件的访问权限 格式: chmod [参数] 权限 文件名 常用选项:R -> 递归修改目录文件的权限 说明:只有文件的拥有者和root才可以改变文件的权限 chmod 用户表示符+/-=权限字符 +:向权限范围增加权限代号所表示的权限 -:向权限范围取消权限代号所表示的权限 =:向权限范围赋予权限代号所表示的权限 用户符号: u:拥有者 g:拥有者同组用 o:其它用户 a:所有用户 [hwc@VM-8-3-centos test5]$ chmod u+x file.txt [hwc@VM-8-3-centos test5]$ chmod u-r file.txt [hwc@VM-8-3-centos test5]$ chmod g-rw test.txt [hwc@VM-8-3-centos test5]$ chmod g+rwx test.txt [hwc@VM-8-3-centos test5]$ chmod o-r test.txt [hwc@VM-8-3-centos test5]$ chmod o+rw test.txt 当然,我们也可以组合起来: [hwc@VM-8-3-centos test5]$ chmod u-rwx,g-rwx test.txt [hwc@VM-8-3-centos test5]$ chmod u+rw,g+rw,o-rw test.txt 对于所有用户: [hwc@VM-8-3-centos test5]$ chmod a-rwx test.txt 到了这里,我们对于权限的设置有了了解。如果我们把r权限去掉,而去读取呢?当前不能读 [hwc@VM-8-3-centos test5]$ chmod u-r test.c [hwc@VM-8-3-centos test5]$ ll total 20 -rwxrwxr-x 1 hwc hwc 8360 Sep 29 18:59 aaa drwxrwxr-x 2 hwc hwc 4096 Sep 29 18:46 dir -rw-rw-r-- 1 hwc hwc 0 Sep 29 18:46 file.txt --w--w---- 1 hwc hwc 89 Sep 30 17:16 test.c -rw-rw-rw- 1 hwc hwc 0 Sep 30 12:10 test.txt [hwc@VM-8-3-centos test5]$ cat test.c cat: test.c: Permission denied [hwc@VM-8-3-centos test5]$ chmod u-w test.c [hwc@VM-8-3-centos test5]$ ll total 20 -rwxrwxr-x 1 hwc hwc 8360 Sep 29 18:59 aaa drwxrwxr-x 2 hwc hwc 4096 Sep 29 18:46 dir -rw-rw-r-- 1 hwc hwc 0 Sep 29 18:46 file.txt -r---w---- 1 hwc hwc 89 Sep 30 17:16 test.c -rw-rw-rw- 1 hwc hwc 0 Sep 30 12:10 test.txt [hwc@VM-8-3-centos test5]$ echo "you can see me " >> test.c -bash: test.c: Permission denied 这是在普通用户下的,而在root用户下不受约束,我们可以来看看 [root@VM-8-3-centos test5]# cat test.c #include int main() { printf("hello world\n"); return 0; } you can see me [root@VM-8-3-centos test5]# chmod a-rwx test.c [root@VM-8-3-centos test5]# ll total 20 -rwxrwxr-x 1 hwc hwc 8360 Sep 29 18:59 aaa drwxrwxr-x 2 hwc hwc 4096 Sep 29 18:46 dir -rw-rw-r-- 1 hwc hwc 0 Sep 29 18:46 file.txt ---------- 1 hwc hwc 89 Sep 30 17:16 test.c -rw-rw-rw- 1 hwc hwc 0 Sep 30 12:10 test.txt [root@VM-8-3-centos test5]# echo "hello root" >>test.c [root@VM-8-3-centos test5]# ll total 20 -rwxrwxr-x 1 hwc hwc 8360 Sep 29 18:59 aaa drwxrwxr-x 2 hwc hwc 4096 Sep 29 18:46 dir -rw-rw-r-- 1 hwc hwc 0 Sep 29 18:46 file.txt ---------- 1 hwc hwc 100 Sep 30 18:17 test.c -rw-rw-rw- 1 hwc hwc 0 Sep 30 12:10 test.txt [root@VM-8-3-centos test5]# cat test.c #include int main() { printf("hello world\n"); return 0; } you can see me hello root [root@VM-8-3-centos test5]# 对于二进制的表示方法: [hwc@VM-8-3-centos test5]$ chmod 000 test.c [hwc@VM-8-3-centos test5]$ ll total 20 -rwxrwxr-x 1 hwc hwc 8360 Sep 29 18:59 aaa drwxrwxr-x 2 hwc hwc 4096 Sep 29 18:46 dir -rw-rw-r-- 1 hwc hwc 0 Sep 29 18:46 file.txt ---------- 1 hwc hwc 100 Sep 30 18:17 test.c -rw-rw-rw- 1 hwc hwc 0 Sep 30 12:10 test.txt [hwc@VM-8-3-centos test5]$ chmod 777 test.c [hwc@VM-8-3-centos test5]$ ll total 20 -rwxrwxr-x 1 hwc hwc 8360 Sep 29 18:59 aaa drwxrwxr-x 2 hwc hwc 4096 Sep 29 18:46 dir -rw-rw-r-- 1 hwc hwc 0 Sep 29 18:46 file.txt -rwxrwxrwx 1 hwc hwc 100 Sep 30 18:17 test.c -rw-rw-rw- 1 hwc hwc 0 Sep 30 12:10 test.txt 这里如果我们去改文件的拥有者呢❓ chown 功能:修改文件的拥有者 格式: chown [参数] 用户名 文件名 # chown user1 f1 # chown -R user1 filegroup1 很现实的问题:把文件修改为其他人是不能“单方面”就可以的,需要他人的同意。 解决方法:1.使用sudo指令。2.切换到root用户,直接改变。 root的权限是最大的,可以直接将文件修改为其他用户: chgrp 功能:修改文件或目录的所属组 格式: chgrp [参数] 用户组名 文件名 常用选项: -R 递归修改文件或目录的所属组 sudo chgrp hwc test.txt //把文件拥有者和所属组同时改了 sudo chown huangweichang:huangweichang test.txt file指令 功能说明:辨识文件类型。 语法: file [选项] 文件或目录… 常用选项: -c 详细显示指令执行过程,便于排错或分析程序执行的情形。 -z 尝试去解读压缩文件的内容 目录的权限 如果我们要进入一个目录,需要什么权限❓X权限 可执行权限: 如果目录没有可执行权限, 则无法cd到目录中 可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容. 可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件 所以这也是为什么系统规定目录的起始权限从777开始,所有的目录被创建出来,一般都要能够被进入 换句话来讲, 就是只要用户具有目录的写权限, 用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写权限。也就是说,张三创建的一个文件, 凭什么李四可以删掉 [root@VM-8-3-centos Test]# ll total 24 -rwxr-xr-x 1 root root 8360 Sep 28 18:56 no_die -rw-r--r-- 1 root root 107 Sep 28 18:54 no_die.c drwxr-xr-x 2 root root 4096 Sep 28 08:56 test drwxr-xr-x 2 root root 4096 Sep 28 23:36 test5 [root@VM-8-3-centos Test]# chmod 0777 /home/ [root@VM-8-3-centos Test]# ls /home/ -ld drwxrwxrwx. 12 root root 4096 Sep 30 18:53 /home/ [root@VM-8-3-centos Test]# touch /home/root.c [root@VM-8-3-centos Test]# su - hwc Last login: Sat Oct 1 08:18:52 CST 2022 from 222.200.254.195 on pts/0 [hwc@VM-8-3-centos ~]$ rm /home/root.c rm: remove write-protected regular empty file ‘/home/root.c’? y [hwc@VM-8-3-centos ~]$ 为了解决这个不科学的问题, Linux引入了粘滞位的概念 粘滞位 Linux系统中有很多人,我们需要在一个公共的目录下,进行临时文件的操作(增删查改) 通过ll /就会发现有一个这样的目录tmp,这就是公共目录。对于粘滞位:一定是在一个公共的目录下,大家一起进行文件操作。 公共目录通常由root用户来创建: 创建公共目录 至此,我们把公共目录创建完毕。 用不同身份在mytmp创建文件 接下去我们用另一个用户创建文件(由于sudo权限暂时用不了,我们直接暴力一点,用root账号去切换另一个账户(huangweichang)) 这时这两个都可以在公共目录下读写自己的临时文件。现在huangweichang相对于hwc是others,可以进行读吗? 这里的权限只有只读,没有任何问题哦。可以往自己的文件进行读写。 删除文件 hwc1.txt的权限不让huangweichang这个用户去写,就把hwc1.txt这个文件给删除了 这问题可大了,一个文件在公共目录下,不能写,我们却能把它删掉,这是不合理的。一个不能以另一个用户读、写、执行的文件,竟然可以让另一个用户删除。所以创建和删除的权限是目录的权限,即在目录中创建和删除里面文件的权限不是文件本身的权限,而是目录的权限 这时候需要一个策略,让一个公共目录,大家各自可以进行rwx操作,但是禁止大家互删对方的文件,因此我们需要给这个公共目录设置粘滞位(权限的一种特殊情况)。 当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由 一、超级管理员删除 二、该目录的所有者删除 三、该文件的所有者删除 权限的总结 目录的可执行权限是表示你可否在目录下执行命令。如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限 所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。
香港云服务器租用推荐
服务器租用资讯
·广东云服务有限公司怎么样
·广东云服务器怎么样
·广东锐讯网络有限公司怎么样
·广东佛山的蜗牛怎么那么大
·广东单位电话主机号怎么填写
·管家婆 花生壳怎么用
·官网域名过期要怎么办
·官网邮箱一般怎么命名
·官网网站被篡改怎么办
服务器租用推荐
·美国服务器租用
·台湾服务器租用
·香港云服务器租用
·香港裸金属服务器
·香港高防服务器租用
·香港服务器租用特价