010 文件管理的基本权限与特殊权限

权限的概念

-   rw-         r--         r--          abc.txt
    所属用户权限  所属组权限    其他用户权限

三个权限位
r(4) : 读
w(2) : 写
x(1) : 可执行


权限的归属
	u : 代表着自己
	g : 代表着组
	o : 代表着其他人

权限的设置(chmod)

# 自己和所属组拥有可读可写权限,其他人拥有可读权限。
rw-    rw-   r--

rw-rw-r--     7 = 4 + 2 + 1

chmod 664 文件名称

权限对⽂件or⽬录的意义

探讨权限对文件及目录的意义

探讨权限对目录下文件可读的影响

[root@localhost ~]# su - test1
Last login: Mon Mar 15 15:25:08 CST 2021 on pts/1
[test1@localhost ~]$ ls -l /a/
ls: cannot open directory /a/: Permission denied
[test1@localhost ~]$ ls -l /a/b
ls: cannot access /a/b: Permission denied
[test1@localhost ~]$ ls -l /a/b/c
ls: cannot access /a/b/c: Permission denied
[test1@localhost ~]$ ls -l /a/b/c/abc.txt
ls: cannot access /a/b/c/abc.txt: Permission denied

# 1、在目录下,只有可读权限,无法查看文件内容(因为你无法操作目录)
# 2、在目录下,只有可读可写权限,无法查看文件内容(理由同上)

# 1、要想查看文件夹下的文件,文件夹必须至少拥有可执行权限;同时文件必须拥有可读权限.

文件夹至少是 1
文件也至少是 4

探讨权限对目录下文件可编辑的影响

# vim  mv   rm

# 要想目录下的文件可以被编辑,目录必须拥有可执行权限同时目录下的文件必须拥有可读可写权限。

文件夹至少是  1
文件至少是    6

探讨权限对目录下的文件的可执行的影响

# 要想目录下的文件可以被执行,目录及文件都必须拥有可执行权限且文件同时还要有可读权限。

文件夹和文件至少是 1
文件至少是	4

权限之特殊权限

SUID

  • 作用对象必须是二进制文件(cat出来是乱码的文件)
  • 该文件必须拥有可执行权限
chmod 4xxx [文件名]	
or
chmod	u+s	[文件名]

SBIT

  • 只对目录有效,用来阻止非文件的所有者删除文件,比较常见的就是/tmp目录
chmod o+t [文件名] 
or
chmod 1xxx [文件名]

SGID

  • 用户对某一目录具有写和执行权限,用户就可以在该目录下建立文件,如果该目录被SGID修饰,则该用户在这个目录下建立的文件都是属于这个目录所属的组
chmod g+s [文件名] 
or
chmod 2xxx [文件名]

Umask

新建的文件、目录的默认权限是由umask决定的

在Linux中,目录的默认权限为777,文件的默认权限为666。

⽂件权限计算⽅法:偶数位直接相减,奇数位相减后加1

⽬录权限计算⽅法:直接相减即可

总结:umask设置的越小,权限就越大,慎用

临时设置umask

[root@localhost ~]# umask 000 //设置umask权限

永久设置umask

#更改配置文件
[root@localhost tmp]# vim /etc/profile # 或者/etc/bashrc内容⼀样
......
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
 umask 002 //表示uid⼤于等于199的默认umask值,表示普通⽤户
else
 umask 022 //表示uid⼩于199的默认umask值,表示root
fi

文件的输入与输出

输入内容到文件和输出内容到文件

追加和覆盖

  • > : 覆盖内容

    覆盖符号是将文件内容清空,之后在将新的内容写入文件。
    
  • >> : 追加内容

    # 在文件的末尾追加内容
    [root@localhost ~]# echo "String" >> abc.txt 
    [root@localhost ~]# cat abc.txt 
    String
    [root@localhost ~]# echo "String" >> abc.txt 
    [root@localhost ~]# cat abc.txt 
    String
    String
    [root@localhost ~]# 
    
  • Linux中:

    0代表标准输入

    1代表标准正确输出

    2代表标准错误输出

  • 将正确输出与错误输出都输出在一个文件上

原文地址:https://www.cnblogs.com/zhaokunhao/p/14539515.html