Linux学习笔记:Linux命令之权限管理命令
权限管理命令
chmod(重要)
- 命令名称:chmod
- 英文原意:change the permissions mode of a file
- 执行权限:所有用户
- 功能描述:改变文件或目录权限
- 语法:chmod [{ugoa}{+-=}{rwxX}] [文件或目录] [mode=421] [文件或目录]
- -R:递归修改
- u 表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
- + 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
- r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。
- 关于mode,用数字来表示权限
- r ---- 4
- w ---- 2
- x ---- 1
- 所以`rwxrw-r--`对应的是764

image-20210510190713527
例子1:
1root@atomy-virtual-machine:/tmp# ls -l linuxstudy.list
2-rw-r--r-- 1 root root 0 5月 10 18:53 linuxstudy.list
3root@atomy-virtual-machine:/tmp# chmod u+x linuxstudy.list
4root@atomy-virtual-machine:/tmp# ls -l linuxstudy.list
5-rwxr--r-- 1 root root 0 5月 10 18:53 linuxstudy.list
上述例子中我们用chmod u+x linuxstudy.list语句修改了linuxstudy.list文件的权限,其含义是赋予该文件的拥有者执行权限。
例子2:
1root@atomy-virtual-machine:/tmp# chmod g+w,o-r linuxstudy.list
2root@atomy-virtual-machine:/tmp# ls -l linuxstudy.list
3-rwxrw---- 1 root root 0 5月 10 18:53 linuxstudy.list
可以同时修改多个权限,用逗号分隔即可。上述语句令用户组拥有写的权限,去除了其他人读的权限。
例子3:
1root@atomy-virtual-machine:/tmp# chmod g=rwx linuxstudy.list
2root@atomy-virtual-machine:/tmp# ls -l linuxstudy.list
3-rwxrwx--- 1 root root 0 5月 10 18:53 linuxstudy.list
我们也可以直接用=来赋予权限!
不过,我们在实际操作中用的最多的并不是这种方式,而是用数字来表示。
例子4:
1root@atomy-virtual-machine:/tmp# chmod 640 linuxstudy.list
2root@atomy-virtual-machine:/tmp# ls -l linuxstudy.list
3-rw-r----- 1 root root 0 5月 10 18:53 linuxstudy.list
640代表要将权限修改为rw-r-----
例子5:关于-R,递归修改权限的操作
创建一个递归的文件夹,两个文件夹a和b的权限如下:
1root@atomy-virtual-machine:/tmp# mkdir -p /tmp/a/b
2root@atomy-virtual-machine:/tmp# ls -ld /tmp/a
3drwxr-xr-x 3 root root 4096 5月 10 19:12 /tmp/a
4root@atomy-virtual-machine:/tmp# ls -ld /tmp/a/b
5drwxr-xr-x 2 root root 4096 5月 10 19:12 /tmp/a/b
修改文件夹a的权限,然后查看两者的权限:
1root@atomy-virtual-machine:/tmp# chmod 777 /tmp/a
2root@atomy-virtual-machine:/tmp# ls -ld /tmp/a
3drwxrwxrwx 3 root root 4096 5月 10 19:12 /tmp/a
4root@atomy-virtual-machine:/tmp# ls -ld /tmp/a/b
5drwxr-xr-x 2 root root 4096 5月 10 19:12 /tmp/a/b
可以发现我们只改变了文件夹a的权限,文件夹b的权限没有变化。如果我们有一个需要,改版一个目录权限时,该目录下的文件也随着改变。我们将其权限改为766试试:
1root@atomy-virtual-machine:/tmp# chmod -R 766 /tmp/a
2root@atomy-virtual-machine:/tmp# ls -ld /tmp/a
3drwxrw-rw- 3 root root 4096 5月 10 19:12 /tmp/a
4root@atomy-virtual-machine:/tmp# ls -ld /tmp/a/b
5drwxrw-rw- 2 root root 4096 5月 10 19:12 /tmp/a/b
关于rwx权限的补充
| 权限 | 对于文件 | 对于目录 |
|---|---|---|
| r——读权限 | 可以查看文件内容 | 可以列出目录中的内容 |
| w——写权限 | 可以修改文件内容 | 可以在目录中创建、删除文件 |
| x——执行权限 | 可以执行文件· | 可以进入目录 |
特别注意w权限,举个例子:
一个目录的权限是777,该目录下一个文件的权限是700,那么创建了一个同组用户,能否删除这个文件?
答案是可以的!
因为对于文件来说,w权限只是针对修改文件内容,而删除文件的权限在目录中!
所以,题目提到目录权限是777,不管文件是什么权限,都可以被删除。
chown
- 命令名称:chown
- 英文原意:change file ownership
- 执行权限:所有用户
- 功能描述:改变文件或目录的所有者
- 语法:chown [用户] [文件或目录]
以下实例来自菜鸟教程
把 /var/run/httpd.pid 的所有者设置 root:
1chown root /var/run/httpd.pid
将文件 file1.txt 的拥有者设为 runoob,群体的使用者 runoobgroup :
1chown runoob:runoobgroup file1.txt
将当前前目录下的所有文件与子目录的拥有者皆设为 runoob,群体的使用者 runoobgroup:
1chown -R runoob:runoobgroup *
把 /home/runoob 的关联组设置为 512 (关联组ID),不改变所有者:
1chown :512 /home/runoob
chgrp
- 命令名称:chgrp
- 英文原意:change file group ownership
- 执行权限:所有用户
- 功能描述:改变文件或目录的所属组
- 语法:chgrp [用户组] [文件或目录]
- 选项:
- -v或--verbose 显示指令执行过程。
- -c或--changes 效果类似"-v"参数,但仅回报更改的部分。
- -f或--quiet或--silent 不显示错误信息。
- -R或--recursive 递归处理,将指定目录下的所有文件及子目录一并处理。
- -h或--no-dereference 只对符号连接的文件作修改,而不更动其他任何相关文件。
与chown命令不同,chgrp 允许普通用户改变文件所属的组,只要该用户是该组的一员。
实例1:改变文件的群组属性
命令:
chgrp -v bin log2012.log
输出:
1[root@localhost test]# ll
2
3---xrw-r-- 1 root root 302108 11-13 06:03 log2012.log
4
5[root@localhost test]# chgrp -v bin log2012.log
6
7“log2012.log” 的所属组已更改为 bin
8
9[root@localhost test]# ll
10
11---xrw-r-- 1 root bin 302108 11-13 06:03 log2012.log
说明:
将log2012.log文件由root群组改为bin群组
实例2:根据指定文件改变文件的群组属性
命令:
chgrp --reference=log2012.log log2013.log
输出:
1[root@localhost test]# ll
2
3---xrw-r-- 1 root bin 302108 11-13 06:03 log2012.log
4
5-rw-r--r-- 1 root root 61 11-13 06:03 log2013.log
6
7[root@localhost test]# chgrp --reference=log2012.log log2013.log
8
9[root@localhost test]# ll
10
11---xrw-r-- 1 root bin 302108 11-13 06:03 log2012.log
12
13-rw-r--r-- 1 root bin 61 11-13 06:03 log2013.log
说明:
改变文件log2013.log 的群组属性,使得文件log2013.log的群组属性和参考文件log2012.log的群组属性相同
实例3:改变指定目录以及其子目录下的所有文件的群组属性
命令:
输出:
1[root@localhost test]# ll
2drwxr-xr-x 2 root root 4096 11-30 08:39 test6
3[root@localhost test]# cd test6
4[root@localhost test6]# ll
5---xr--r-- 1 root root 302108 11-30 08:39 linklog.log
6---xr--r-- 1 root root 302108 11-30 08:39 log2012.log
7-rw-r--r-- 1 root root 61 11-30 08:39 log2013.log
8-rw-r--r-- 1 root root 0 11-30 08:39 log2014.log
9-rw-r--r-- 1 root root 0 11-30 08:39 log2015.log
10-rw-r--r-- 1 root root 0 11-30 08:39 log2016.log
11-rw-r--r-- 1 root root 0 11-30 08:39 log2017.log
12[root@localhost test6]# cd ..
13[root@localhost test]# chgrp -R bin test6
14[root@localhost test]# cd test6
15[root@localhost test6]# ll
16---xr--r-- 1 root bin 302108 11-30 08:39 linklog.log
17---xr--r-- 1 root bin 302108 11-30 08:39 log2012.log
18-rw-r--r-- 1 root bin 61 11-30 08:39 log2013.log
19-rw-r--r-- 1 root bin 0 11-30 08:39 log2014.log
20-rw-r--r-- 1 root bin 0 11-30 08:39 log2015.log
21-rw-r--r-- 1 root bin 0 11-30 08:39 log2016.log
22-rw-r--r-- 1 root bin 0 11-30 08:39 log2017.log
23[root@localhost test6]# cd ..
24[root@localhost test]# ll
25drwxr-xr-x 2 root bin 4096 11-30 08:39 test6
26[root@localhost test]#
说明:
改变指定目录以及其子目录下的所有文件的群组属性
实例4:通过群组识别码改变文件群组属性
命令:
chgrp -R 100 test6
输出:
1[root@localhost test]# chgrp -R 100 test6
2
3[root@localhost test]# ll
4
5drwxr-xr-x 2 root users 4096 11-30 08:39 test6
6
7[root@localhost test]# cd test6
8
9[root@localhost test6]# ll
10
11---xr--r-- 1 root users 302108 11-30 08:39 linklog.log
12
13---xr--r-- 1 root users 302108 11-30 08:39 log2012.log
14
15-rw-r--r-- 1 root users 61 11-30 08:39 log2013.log
16
17-rw-r--r-- 1 root users 0 11-30 08:39 log2014.log
18
19-rw-r--r-- 1 root users 0 11-30 08:39 log2015.log
20
21-rw-r--r-- 1 root users 0 11-30 08:39 log2016.log
22
23-rw-r--r-- 1 root users 0 11-30 08:39 log2017.log
24
25[root@localhost test6]#
说明:
通过群组识别码改变文件群组属性,100为users群组的识别码,具体群组和群组识别码可以去/etc/group文件中查看
umask默认权限
概述
当我们新建一个文件或者文件夹时,系统都会默认设置权限,默认情况下的umask值是022(可以用umask命令查看),此时你建立的文件默认权限是644,建立的目录的默认权限是755,可以通过建立一个文件和文件夹通过ls -l验证。
当我们登录系统之后创建一个文件是会有一个默认权限的,那么这个权限是怎么来的呢?这就是umask干的事情。umask可用来设定[权限掩码]。[权限掩码]是由3个八进制的数字所组成,将现有的存取权限减掉权限掩码后,即可产生建立文件时预设的权限。
语法
1umask [-S][权限掩码]
- -S 以文字的方式来表示权限掩码。
使用指令"umask"查看当前权限掩码,则输入下面的命令:
1umask
执行上面的指令后,输出信息如下:
10022
接下来,使用指令"mkdir"创建一个目录,并使用指令"ls"获取该目录的详细信息,输入命令如下:
1mkdir test1
2ls –d –l test1/
得到结果显示,该文件夹的权限为drwxr-xr-x。即755。
umask计算权限
对于文件和目录来说, 最大的权限其实都是777,但是执行权限对于文件来说是很危险的,而对目录来说执行权限是个基本权限。所以默认目录的最大权限是777,而文件的默认最大权限就是666。
对于root用户的umask=022这个来说,777权限二进制码就是(111)(111)(111),022权限二进制码为(000)(010)(010)。
- 所有权限二进制的1:代表有这个权限
- umask二进制1:代表要去掉这个权限,不管你原来有没有权限,你最终一定没有这个权限。
- umask二进制的0:代表我不关心对应位的权限,你原来有权限就有权限,没有就没有, 我不影响你。
umask为022的目录默认权限计算方法
| 所有者 r | 所有者 w | 所有者 x | 所在组 r | 所在组 w | 所在组 x | 其他 r | 其他 w | 其他 x | |
|---|---|---|---|---|---|---|---|---|---|
| 所有权限777 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
| umask掩码022 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 |
| 计算后的值 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 1 |
umask为022的文件默认权限计算方法
| 所有者 r | 所有者 w | 所有者 x | 所在组 r | 所在组 w | 所在组 x | 其他 r | 其他 w | 其他 x | |
|---|---|---|---|---|---|---|---|---|---|
| 所有权限666 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 0 |
| umask掩码022 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 |
| 计算后的值 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 |
umask为023的目录默认权限计算方法
| 所有者 r | 所有者 w | 所有者 x | 所在组 r | 所在组 w | 所在组 x | 其他 r | 其他 w | 其他 x | |
|---|---|---|---|---|---|---|---|---|---|
| 所有权限777 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
| umask掩码023 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 |
| 计算后的值 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 0 |
umask为023的文件默认权限计算方法
| 所有者 r | 所有者 w | 所有者 x | 所在组 r | 所在组 w | 所在组 x | 其他 r | 其他 w | 其他 x | |
|---|---|---|---|---|---|---|---|---|---|
| 所有权限666 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 0 |
| umask掩码023 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 |
| 计算后的值 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 |
上面就是一个umask的正常计算过程,但是这样实在是太麻烦了。我们使用如下的简单的方法快速计算。
- 对于目录,直接使用777-umask即可,就得到了最终结果。
- 对于文件,先使用666-umask。
- 如果对应位上为偶数:最终权限就是这个偶数值。
- 如果上面的对应为上有奇数,就对应位+1。
上面的这个方法计算是非常方便的, 为何得到奇数要+1呢。
文件的最大权限是666,都是偶数,你得到奇数,说明umask有奇数,读为4,写为2,都是偶数,说明你有执行权限的。
就按照上面的umask=023为例,在计算其他用户权限的时候6-3=3 ,6是读写,3是写和执行,其实应该是读写权限减去读权限的得到写权限的,相当于我们多减去了一个执行权限。所以结果加1。
Linux学习笔记:Linux命令之权限管理命令的更多相关文章
- Linux学习笔记(八)权限管理命令
权限管理命令 权限位含义 chmod chown chgrp umask默认权限 权限位含义 第1位代表文件类型 "-":普通文件 "b":块设备文件 &quo ...
- Linux学习笔记 (六)用户管理命令
一.用户帐号 1.超级用户:具有操作系统中的最高权限,用来管理和维护操作系统.root用户. 2.普通用户:由root用户来创建,在宿主目录中具有完全权限. 3.程序用户:由应用程序添加,维护某个应用 ...
- Linux学习笔记(13)权限管理
1 ACL权限 (1)简介和开启方式 ACL(Access Control List)权限的目的是在提供传统的owner.group.others的read.write.execute权限之外的局部权 ...
- Linux分类笔记(一)-权限管理
Linux分类笔记(一) 权限管理 普通权限 文件的普通权限 对一个普通的文件使用ls -ll命令后,看到下面的输出内容 而对于文件权限中的每一位,又分别代表了以下的意思 文件类型又有以下几类: ...
- Linux系列教程(五)——Linux链接命令和权限管理命令
前一篇博客我们讲解了Linux文件和目录处理命令,还是老生常淡,对于新手而言,我们不需要完全记住命令的详细语法,记住该命令能完成什么功能,然后需要的时候去查就好了,用的多了我们就自然记住了.这篇博客我 ...
- Linux常用命令之链接命令和权限管理命令
目录 1.链接命令 一.生成链接文件命令:ln 2.权限管理命令3.总结 一.更改文件或目录权限命令:chmod 二.改变文件或目录所有者命令:chown 三.改变文件或目录所属组命令:chgrp 四 ...
- Linux系列教程(五)——Linux常用命令之链接命令和权限管理命令
前一篇博客我们讲解了Linux文件和目录处理命令,还是老生常淡,对于新手而言,我们不需要完全记住命令的详细语法,记住该命令能完成什么功能,然后需要的时候去查就好了,用的多了我们就自然记住了.这篇博客我 ...
- linux常用命令:2权限管理命令
权限管理命令 1.权限管理命令:chmod 命令名:chmod 命令英文原意:change the permissions mode of a file 命令所在路径:/bin/chmod 执行权限: ...
- Linux学习笔记-Linux系统简介
Linux学习笔记-Linux系统简介 UNIX与Linux发展史 UNIX是父亲,Linux是儿子. UNIX发行版本 操作系统 公司 硬件平台 AIX IBM PowerPC HP-UX HP P ...
随机推荐
- python中让输出不换行
Python2.x python2.x中输出默认是换行的,为了抑制换行,可以在打印最后加一个逗号 Python3.x 到了python3中,print 变成一个函数,这种语法便行不通了. 我们可以使用 ...
- Win64 驱动内核编程-14.回调监控文件
回调监控文件 使用 ObRegisterCallbacks 实现保护进程,其实稍微 PATCH 下内核,这个函数还能实现文件操作监视.但可惜只能在 WIN7X64 上用.因为在 WIN7X64 上 P ...
- 如何使用flask将模型部署为服务
在某些场景下,我们需要将机器学习或者深度学习模型部署为服务给其它地方调用,本文接下来就讲解使用python的flask部署服务的基本过程. 1. 加载保存好的模型 为了方便起见,这里我们就使用简单的分 ...
- Linux 中如何使用 IP 命令
老版本的 Linux 中都是使用 ifconfig 命令检查和配置网络接口,但是该命令目前已经没有维护了,取而代之的是 ip 命令 ip 命令和 ifconfig 命令很相似,但是 相比起来,ip命令 ...
- OCR-Form-Tools项目试玩记录(二)产品评测
这是一篇软工课程作业博客 项目 内容 这个作业属于哪个课程 北航2020春软件工程 006班(罗杰.任健 周五) 这个作业的要求在哪里 个人博客作业-软件案例分析 个人课程目标 系统地学习软件工程理论 ...
- JVM内存溢出后服务还能运行吗
文章开篇问一个问题吧,一个java程序,如果其中一个线程发生了OOM,那进程中的其他线程还能运行吗? 接下来做实验,看看JVM的六种OOM之后程序还能不能访问. 在这里我用的是一个springboot ...
- 虚拟机快速下载安装配置aarch64-linux-gnu-gcc工具链
方式一:软件仓库安装 此方法不用自己去配置交叉编译工具链 1.查看本地仓库有支持哪些版本哪些 输入命令: apt-cache search aarch64 2.下载安装 gcc-8-aarch64-l ...
- ubuntu查看已安装软件包信息的方法
ubuntu查看已安装软件包信息的方法原创fang141x 最后发布于2019-04-15 10:41:34 阅读数 2802 收藏展开简介ubuntu下面是使用dpkg来管理和安装软件包的,对应ce ...
- Web网站实现用户认证访问(加密访问)
Web网站实现用户认证访问,有效减少流量的访问,具体的实现步骤如下: 我们使用httpd作为测试对象,体现安装好httpd服务,并且可以在浏览器访问测试首页(可以关闭防火墙:如果不关闭防火墙,则需要开 ...
- ubuntu中安装qgit工具-(转自Linux中国)
QGit是一款由Marco Costalba用Qt和C++写的开源的图形界面 Git 客户端.它是一款可以在图形界面环境下更好地提供浏览版本历史.查看提交记录和文件补丁的客户端.它利用git命令行来执 ...