Linux基础命令-chown修改文件属主
文章目录
前言
一、文件权限有哪些
1.1 文件的普通权限
1.1.1 普通权限案例:
1.2 文件的特殊权限
1.2.1 案例一:特殊权限SUID
1.2.2 案例二:特殊权限SGID
1.2.3 案例三:特殊权限Stickybit
二、chmod命令介绍
三、命令的语法及参数
3.1 先用help或man查看文件语法格式
3.2 常用参数
四、参考实例
4.1 设定文件的权限为775
4.2 设定文件可以让任何人读取
4.3 设定目录及子文件的所有者可以读执行,其他无权限
4.4 让用户临时拥有重启系统的权限
4.5 设定文件无法执行
总结
前言
这个命令是管理linux权限中最重要的一个命令,主要是给文件修改读写执行的权限,学好这个命令就能很好的管理文件的权限,下面先了解什么是文件的权限。
一、文件权限有哪些
在linux系统中,每个文件都有归属的所有者和所有组,并且规定了文件的所有者、以及其他人对文件所拥有的可读(r)、可写(w)、可执行(x)等权限。对于一般文件来说,权限比较容易理解:“可读”表示能够读取文件的实际内容;“可写”表示能够编辑、新增、修改、删除文件的实际内容;“可执行”则表示能够运行一个脚本程序。。对于目录文件来说,“可读”表示能够读取目录内的文件列表;“可写”表示能够在目录内新增、删除、重命名文件;而“可执行”则表示能够进入该目录。
1.1 文件的普通权限
用ll展开文件的详细信息
左边这一框内显示的就是文件的权限;
第一个字符信息就是文件的类型,这个文件类型有(d)目录文件、(-)普通文件、(p)管道文件、(c)字符设备文件、(b)块设备文件、(l)链接文件等等。
文件的普通权限有r(read 读 )、w(write 写)、x(execute 执行)权限。
除了第一个文件类型,一共有9个空位是用来显示文件的权限,分成三个,文件所有者(user)、所有组(group)、其他人(other)、还有一个是所有人(all),包括前面三个的意思。
在linux中,系统只认识二进制(0/1)的内容,那么读写执行是怎么转化成我们认识的权限,实际上,我们能看到的读写执行是八进制(0-7)显示的。
权限 | 二进制 | 八进制 | 内容描述 |
--- | 000 | 0 | 没有任何权限 |
--x | 001 | 1 | 只有执行权限 |
-w- | 010 | 2 | 只有写入权限 |
-wx | 011 | 3 | 有写入和执行权限 |
r-- | 100 | 4 | 只有读的权限 |
rwx | 111 | 7 | 满权限,读写执行都有 |
1.1.1 普通权限案例:
1)文件所有者拥有读写执行权限,所有者、其他用户无权限
[root@localhost ~]# chmod 700 anaconda-ks.cfg
2)目录拥有满权限
[root@localhost ~]# chmod -R a=rwx test/
[root@localhost ~]# chmod -R 777 test/
3) 给脚本文件加执行权限
[root@localhost ~]# chmod +x ping.sh
[root@localhost ~]# ll ping.sh
-rwxr-xr-x. 1 root root 0 2月 17 16:22 ping.sh
1.2 文件的特殊权限
文件的特殊权限有三个:
SUID(s) :限定只能用在二进制执行程序上面,对目录设置是无效的,在设置了SUID的二进制程序,会让其拥有所有者的权限(仅对拥有执行权限的二进制程序有效)。
SGID(s):可以给二进制设置可执行程序,也可对目录进行设置;在设置了SGID权限的目录下建立文件时,新创建的文件的属组会继承上级目录的属组,也就是上级目录是test组,新建的文件也是test组;若对二进制程序进行设置时,能够让执行的用户临时获取文件所属组的权限。
Stickybit(t):粘滞位权限是针对目录的,对文件无效。也叫防删除位。
1.2.1 案例一:特殊权限SUID
给其他用户临时查看/etc/shadow文件的权限;
[root@localhost ~]# ll /etc/shadow
----------. 1 root root 1243 2月 8 00:29 /etc/shadow
[root@localhost ~]# which cat
/usr/bin/cat
[root@localhost ~]# chmod u+s /usr/bin/cat
[root@localhost ~]# ll !$
ll /usr/bin/cat
-rwsr-xr-x. 1 root root 54080 8月 20 2019 /usr/bin/cat
[root@localhost ~]# su - host
[host@localhost ~]$ cat /etc/shadow
root:$6$1f7ze/I1LjSg3xyX$Tvw4ydpoxp9Xn84c3IbJNZ9lnrVgDBOc3qTySQLWKRVoszXBie6qKhiD13Mdf4BnwMj7ByESiWXGW7P1tVBpY/::0:99999:7:::
bin:*:18353:0:99999:7:::
daemon:*:18353:0:99999:7:::
adm:*:18353:0:99999:7:::
lp:*:18353:0:99999:7:::
sync:*:18353:0:99999:7:::
shutdown:*:18353:0:99999:7:::
halt:*:18353:0:99999:7:::
1.2.2 案例二:特殊权限SGID
2)其他用户无法删除目录
[root@localhost ~]# mkdir /data
[root@localhost ~]# chmod o+t /data/
[root@localhost ~]# ll -d /data/
drwxr-xr-t. 2 root root 6 2月 17 16:30 /data/
[root@localhost ~]# su - host
上一次登录:五 2月 17 16:29:15 CST 2023pts/0 上
[host@localhost ~]$ rm -rf /data/
rm: 无法删除"/data/": 权限不够
1.2.3 案例三:特殊权限Stickybit
让新创建的文件归属于上级的组
[root@localhost ~]# mkdir data
[root@localhost ~]# ll -d data/
drwxr-xr-x. 2 root root 6 2月 17 16:33 data/
[root@localhost ~]# chown -R root:host data/
[root@localhost ~]# ll data/ -d
drwxr-xr-x. 2 root host 6 2月 17 16:33 data/
[root@localhost ~]# cd data/
[root@localhost data]# touch a.txt
[root@localhost data]# ll
总用量 0
-rw-r--r--. 1 root root 0 2月 17 16:34 a.txt
[root@localhost data]# cd ..
[root@localhost ~]# chmod g+s data/
[root@localhost ~]# cd data/
[root@localhost data]# touch b.txt
[root@localhost data]# ll
总用量 0
-rw-r--r--. 1 root root 0 2月 17 16:34 a.txt
-rw-r--r--. 1 root host 0 2月 17 16:35 b.txt
好的,讲完了文件的权限,下面来讲下chomd的介绍和格式,以及如何使用。
二、chmod命令介绍
chmod命令来自于英文词组“change mode”的缩写,其功能适用于改变文件或者目录权限的命令。默认只有文件的所有者和管理员可以设置文件权限,普通用户只能管理自己的文件的权限属性。
设置权限时可以使用数字法,亦可使用字母表达式,对于目录文件建议加入-R参数进行递归操作,意味着不仅对于目录本身,也对目录内的子文件/目录进行新权限的设定。
三、命令的语法及参数
3.1 先用help或man查看文件语法格式
[root@localhost ~]# chmod --help
用法:chmod [选项]... 模式[,模式]... 文件...
或:chmod [选项]... 八进制模式 文件...
或:chmod [选项]... --reference=参考文件 文件...
可以看到其中的语法有几种写法,可以在chmod后面加模式,亦可加八进制的格式。
语法: chmod 【选项】 模式 文件
chmod 【选项】八进制模式 文件
其实八进制就是以数字的模式来代表权限,比如说满权限(rwxrwxrwx),写作777,计算格式就是4+2+1、4+2+1、4+2+1。
3.2 常用参数
chmod命令的参数可以说并不多,常用的其实只有几个。
-c | 若该文件权限确实已经更改,才显示其更改动作 |
-f | 若该文件权限无法被更改也不显示错误讯息 |
-v | 显示权限变更的详细资料 |
-R | 对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更) |
四、参考实例
4.1 设定文件的权限为775
[root@localhost ~]# chmod 775 anaconda-ks.cfg
[root@localhost ~]# ll anaconda-ks.cfg
-rwxrwxr-x. 1 root root 1365 2月 8 00:02 anaconda-ks.cfg
4.2 设定文件可以让任何人读取
[root@localhost ~]# chmod a=r anaconda-ks.cfg
[root@localhost ~]# ll anaconda-ks.cfg
-r--r--r--. 1 root root 1365 2月 8 00:02 anaconda-ks.cfg
4.3 设定目录及子文件的所有者可以读执行,其他无权限
[root@localhost ~]# chmod -R 500 data/
[root@localhost ~]# ll data/
总用量 0
-r-x------. 1 root root 0 2月 17 16:34 a.txt
-r-x------. 1 root host 0 2月 17 16:35 b.txt
4.4 让用户临时拥有重启系统的权限
[root@localhost ~]# which reboot
/usr/sbin/reboot
[root@localhost ~]# ll /usr/sbin/reboot
lrwxrwxrwx. 1 root root 16 2月 8 00:25 /usr/sbin/reboot -> ../bin/systemctl
[root@localhost ~]# chmod u+s !$
chmod u+s /usr/sbin/reboot
4.5 设定文件无法执行
[root@localhost ~]# chmod a-x anaconda-ks.cfg
总结
chmod这个命令的要讲的东西是很多的,要理解起来光看概念是比较难理解的,关键要多实操,多上手练,就能很快理解权限之间的关系和用法了;如果觉得内容还行的,可以一键三连支持一下!
文章来源:https://www.toymoban.com/news/detail-724741.html
文章来源地址https://www.toymoban.com/news/detail-724741.html
到了这里,关于Linux基础命令-chmod修改文件权限的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!