Linux简单权限用法

来源:互联网 发布:印度发展现状知乎 编辑:程序博客网 时间:2024/06/06 00:27

 首先,我们需要知道Linux中的权限是十分重要的,而且权限分为两类:一类是使用者的权限,一类是文件以及目录的是否可读、写、执行的权限。 

  1. 拥有者–所属组–other

      首先很多人不明白这三个使用者的权限是什么意思。一般情况下,拥有者是这个文件的创建者,即哪个用户创建的这个文件。并且在创建新用户的时候会创建出一个同名的组,这个拥有者默认包含在这个所属组中。我们先来理一理这三者的联系去区别,对于初学者来说,我们可以把这三者想象成数学中的集合,拥有者是元素,整个linux大环境是全集,而所属组是一个一个的小集合。 

      拥有者就是一个一个的小红点,每个都在自己的所属组里,而且一个拥有者可以在多个所属组里。例如:1可以在所属组1,也可以在所属组2,也可以在所属组3…可以自定义设置。other就是对于所属组1来说,除所属组1中的所有拥有者外,其他的拥有者、所属组都是other。 
      值得注意的是,在Linux下,有一个超级用户–root,有全部的权限,凌驾一切之上。 
      下面是刚才所讲操作的具体命令: 
      

# user1是生成的用户名创建一个用户:useradd user给他加上密码:password user1删除一个用户:userdel user1写作 userdel -r user1  时会删除user1上的文件创建新增组:groupadd group1删除组:groupdel group1让user1用户归为usergroup1组:useradd -g usergroup1 user1让user1用户也归为usergroup2组:useradd -G usergroup2 user1切换用户:su user1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

  有时,可能我们会需要更改一个用户,或者更改一个所属组,以使其他拥有者或者其他所属组没有权限打开读写执行这个文件或目录。这时我们需要拥戴的命令是:

修改拥有者:chmod 用户名 文件名/目录名   但注意:普通用户的操作命令要加上sudo chmod 用户名 文件名sudo的作用是仅当前操作暂时为超级权限。当然,回车过后要输入当前拥有者的密码修改所属组:普通用户--sudo chgrp 所属组名 文件名/目录名
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

Linux中,输入”ll”(小写L)或者”ls -l”可以显示文件的详细信息。 

若sudo失败,则进入超级用户权限,再执行chown root test.c 
sudo失败的原因,需要将用户添加进sudoers文件: 
报错信息为:dlm is not in the sudoers file. This incident will be reported. 

2.读、写、执行 
  Linux中,一个文件或目录的权限有四种 
  分别是无、读、写、执行权限 
  分别用“-”“r”“w”“x”表示 
  在文件列表中,使用”ll”或者”ls -l”命令查看文件详细信息。

       一个文件或者目录前面共有10位前置字符,第一位表示文件类型,说到这,插一句,在Linux中可以认为“一切皆文件”,且Linux下文件不以文件后缀名区分,而是以第一个字符区分。在细分一下,文件分为: 

普通文件:第一个字符为“-”;目录:第一个字符为“d”;---directory链接文件:第一个字符为“l”,

常见的有两类:软链接(相当于windows中的快捷方式)、硬链接;---link设备和设备文件  

块设备(硬盘):第一个字符为“b”,最小单位为块(字节),支持随机访问。  

字符设备(键盘,显示器):第一个字符为“c”,最小单位为字节,只允许按顺序读取。---char套接字:第一个字符为“s”;---sockets管道:第一个字符为“p”;---pine

  

  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

  一个文件前有10个前缀字符,除第一个为文件类型外,剩下的9个都是文件的权限 
  三三一组,分别对应拥有者、所属组、other 
  即拥有者拥有三个权限,读写执行,所属组和other也相同 
  排列顺序为:读写执行 
  每个权限有则用对应的字母表示,无则使用“-” 
  例如:读写权限:“rw-”;写执行权限:“-wx” 
  且权限也可使用数字表示:每个位就相当于一个2进制数字,有此权限则为“1”,无则为“0” 
  例如:读写权限:“rw-”= 6;写执行权限:“-wx”= 3; 
  在命令输入时,更改拥有者的权限为“u (+/-) (r/w/x)”,括号是为了区分,“+”为增加权限,“-”为去除权限,还可对一个文件或者目录的不同权限修改“u+r-w+x”即为增加读、执行权限,去除写权限。 
  相关命令为: 

首先,给定一个文件,默认权限为"rw- rw- r--",即为"664"增加拥有者的执行权限:chmod u+x file(file为文件名)                  chmod 764 file增加other的写权限:chmod o+w file                chmod 666 file去除所属组的读权限:chmod o-r file                chmod 624 file增加拥有者的读权限,去除写。执行权限:chmod u+r-w-x file                               chmod 464 file
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

  那么对于目录呢?对于一个目录来说,照上图来看,也有拥有者、 所素组、other,而每一个也有自己的读、写、执行权限,有什么用呢? 
  目录的读权限决定进入这个目录后,使用“ls”、“ll”以及这个家族的命令是否可以显示该目录的内容; 
  目录的写权限决定进入这个目录后,是否可以使用“mkdir”创建目录,是否可以使用“touch”创建文件…; 
  目录的执行权限决定是否可以进入这个目录。 

那么,剩下的对于一个目录权限的多种操作就不用多少了吧。

  • umask 
      最后,还有个umask很重要,需要我们去理解记忆 
      umask是我们linux系统里面的默认权限的补集,一般在我们的系统中,umask=002。表示我们创建的文件的默认权限是664。 
      注意,我们创建的所有文件的默认权限为664,即“rw-rw-r–”。 
      不包含拥有者和所属组的执行权限以及other的写和执行权限。 
      所以我们要在更改umask后,计算文件权限时,基础上也不能加上拥有者和所属组的执行权限以及other的写和执行权限,除非更改的权限值给他们中的一个或多个赋上了相应的权限。 
      umask可以自己更改,直接敲出来umask “0xxx”就ok。此后,我们的权限就为“664-xxx” 
     

      初始值为:“rw-rw-r–”即为“664” 
      我们设置的umask=032,即为“— -wx -w- ”, 
      因为二者是互补的关系,所以umask中出现的权限不能出现在新创建的文件中,又因为默认情况下新创建的文件没有拥有者和所属组的执行权限以及other的写和执行权限。 
      所以file_1的文件权限为:“rw- r– r–”。

本文中如有任何不当、不准确。不正确之处,请在评论区指出,我会第一时间改正。

原创粉丝点击