Linux常用命令——权限的基本作用

1、权限含义的解释

首先,读、写、执行权限对文件和目录的作用是不同的。

(1)权限对文件的作用。

  • 读(r):
    对文件有读(r)权限,代表可以读取文件中的数据。
    如果把权限对应到命令上,那么一旦对文件有读(r)权限,就可以对文件执行cat、more、less、head、tail等文件查看命令
  • 写(w):
    对文件有写(w)权限,代表可以修改文件中的数据。
    如果把权限对应到命令上,那么一旦对文件有写(w)权限,就可以对文件执行vim、echo等修改文件数据的命令。
    注意:对文件有写权限,是不能删除文件本身的,只能修改文件中的数据。如果要想删除文件,则需要对文件的上级目录拥有写权限

说明:
我们之前说过分区,在root目录下有一个abc文件,abc文件会有自己的i节点,i节点里边存放的是i节点号,时间,权限,位置,与之对应的block块中存放着数据。而abc文件的文件名是存放在他上级目录的block块中的。上级目录的block块中存放着abc文件的文件名和对应的i节点号。
我对abc文件有写的权限,这个权限是控制abc文件的block块的。所以说对文件中数据有写的权限。而abc文件的文件名是放在上级目录的block块中的,所以也要有上级目录写的权限,才能有对目录的block块中的数据有操作权限,因为abc文件名是root目录的数据,要拥有root目录写的权限,最终才能删除abc文件。
如下图:

  • 执行(x):
    对文件有执行(x)权限,代表文件拥有了执行权限,可以运行。
    在Linux中,只要文件有执行(x)权限,这个文件就是执行文件了。
    这个文件到底能不能正确执行,不仅需要执行(x)权限,还要看文件中的代码是不是正确的语言代码。
    对文件来说,执行(x)权限是最高权限

(2)权限对目录的作用。

  • 读(r):
    对目录有读(r)权限,代表可以查看目录下的内容,也就是可以查看目录下有哪些子文件和子目录。
    如果把权限对应到命令上,那么一旦对目录拥有了读(r)权限,就可以在目录下执行ls命令,查看目录下的内容了。
  • 写(w):
    对目录有写(r)权限,代表可以修改目录下的数据,也就是可以在目录中新建、删除、复制、剪切子文件或子目录。
    如果把权限对应到命令上,那么一旦对目录拥有了写(w)权限,就可以在目录下执行touch、rm、cp、mv命令
    对目录来说,写(w)权限是最高权限
  • 执行(x):
    目录是不能运行的,那么对目录拥有执行(x)权限,代表可以进入目录。
    如果把权限对应到命令上,那么一旦对目录拥有了执行(x)权限,就可以对目录执行cd命令,进入目录。(也就是执行权限对于目录来讲没有危险)

2、目录的可用权限其实只有以下几个

  • 0:任何权限都不赋予。
  • 5:基本的目录浏览和进入权限。
  • 7:完全权限。

因为给目录只赋予读的权限是没有意义的,也就是4。因为你要现有执行权限才能进入到目录里,才有查看目录的操作,也就是4+1。
注意:自己做实验的时候不要用root用户,用普通用户进行操作。

3、什么是文件和目录的默认权限

Linux系统的基本权限有6种。
读写执行为基本权限
umask 为默认权限
后边还有4种权限,以后在讲解。

我们先创建一个文件abc,然后查看abc文件的长信息。

[root@192 ~]# touch abc
[root@192 ~]# ls -l abc 
-rw-r--r--. 1 root root 0 12月 30 05:32 abc

可以看到上边新创建的文件,直接就有一定的权限,我们把这种权限叫默认权限。
Linux系统是如何得到文件和目录的默认权限?
是通过umask值来获得文件和目录的默认权限。

4、umask 默认权限

(这个值基本上不用我们自己修改,但是我们一定要知道和能看懂就可以了。)

1、查看系统的umask权限

[root@localhost ~ ] # umask
0022

注意:我们之前学的权限只有三位,我们现在忽略第一位,第一位的作用以后在详细说明。

2、用八进制数值显示umask权限

[root@localhost ~ ] # umask -S  u=rwx,g=rx,O=rx #用字母表示文件和目录的初始权限 

3、umask权限的计算方法

我们需要先了解一下新建文件和目录的默认最大权限。
对文件来讲,新建文件的默认最大权限是666,没有执行(x)权限。这是因为执行权限对文件来讲比较危险,不能在新建文件的时候默认赋予,而必须通过用户手工赋予。
对目录来讲,新建目录的默认最大权限是777。这是因为对目录而言,执行(x)权限仅仅代表进入目录,所以即使建立新文件时直接默认赋予,也没有什么危险。


按照官方的标准算法,umask默认权限需要使用二进制进行逻辑与逻辑非联合运算才可以得到正确的新建文件和目录的默认权限。这种方法对计算机来说很好计算,但是对人来说既不好计算,也不好理解,不推荐。
我们在这里还是按照权限字母来讲解umask权限的计算方法。(推荐算法)
我们就按照默认的umask值是022来分别计算一下新建文件和目录的默认权限吧。

文件的默认权限最大只能是666,而umask的值是022
“-rw-rw-rw-”减去“-----w--w-”等于“-rw-r--r--”
目录的默认权限最大可以是777,而umask的值是022
“drwxrwxrwx”减去“d----w--w-”等于“drwx-r-xr-x”

4、注意:umask 默认权限的计算绝不是数字直接相减。

例如umask是033呢?
修改umask值命令为 [root@192 ~]# umask 033(临时修改,如果需要永久修改,就要修改配置文件)
文件的默认权限最大只能是666,而umask的值是033
“-rw-rw-rw-”减去“---wx-wx”等于“-rw-r-r-”
r- -= r
w- w= -
-- x= -x(所有负的都为 -
例如umask是033用数字相减呢?
666-033=633
翻译成权限为 -rw--rx-rx,这就不对了。
提示:
修改umask值的配置文件在/etc/profile文件,/etc/profile文件是环境变量配置文件。
什么是环境变量配置文件?
修改该文件内容,会影响当前系统的操作环境。

环境变量配置文件并不是只有这一个,默认是有4个环境变量配置文件,另加一个目录(目录中有很多配置文件,以后用到哪个说哪个。)。
说明:
我们进入到上边所提到的/etc/profile环境变量配置文件,可以找到关于umask值的代码块

[user1@192 ~]$ cat /etc/profile

if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
   umask 002
else
   umask 022
fi

#在Linux系统中root用户的UID=0,而普通用户的UID>500,500以内是留给系统用户的。
#[ "`id -gn`" = "`id -un`" ]判断的是用户的UID和GID是相等的,暂时可以忽略不看。

root用户的umask值
[root@192 ~]# umask 
0022

普通用户的umask值
[user1@192 ~]$ umask
0002
总结:umask值重要度很高,默认自动赋值并生效。但是不需要用户介入(修改),能看懂,知道他就可以了。
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值