Linux命令行大全(9):权限

  • id:显示用户身份标识
  • chmod:更改文件的模式
  • umask:设置文件的默认权限
  • su:以另一个用户的身份运行shell
  • sudo:以另一个用户的身份来执行命令
  • chown:更改文件所有者
  • chgrp:更改文件所属群组
  • passwd:更改用户密码

所有者、组成员和其他用户

更改权限

对文件和目录的访问权限是按照读访问、写访问以及执行访问来定义的。

chmod——更改文件模式

chmod命令支持两种不同的改变文件模式的方式——八进制数字表示法和符号表示法。

八进制数字表示法

八进制 二进制 文件模式
0 000
1 001 –x
2 010 -w-
3 011 -wx
4 100 r–
5 101 r-x
6 110 rw-
7 111 rwx

通过使用3位八进制数,我们可以分别设置文件所有者、组成员和其他所有用户(world)的文件模式。

1
$ chmod 600 foo.txt

通过传递参数600,我们可以设置文件所有者具有读写权限,而取消用户和其他用户(world)的所有权限。常用数对:7(rwx)、6(rw-)、5(r-x)、4(r–)、0(—)。

符号表示法

符号表示发分为三部分:更改会影响谁、要执行那种操作以及要设置哪种权限。可以通过u、g、o和a的组合来制定要影响的对象。

符号 含义
u+x 为文件所有者添加可执行权限
u-x 删除文件所有者的可执行权限
+x 为文件所有者、所属群组和其他所有用户添加可执行权限,等价a+x
o-rw 删除其他用户的读写权限
go=rw 设置所属群组和其他用户仅具有读写权限
u+x,go=rx 为文件所有者添加可执行权限,同时设置所属群组和其他用户仅具有读、执行权限

umask——设置默认权限

umask命令控制着创建文件时指定给文件的默认权限。它使用八进制表示法来表示从文件模式属性中删除一个位掩码。

可以发现所属群组和其他用户没有获得文件的写权限,没有获得的原因在于掩码值。

原始文件模式 rw- rw- rw-
掩码 000 000 010 010
结果 rw- r– r–

观察掩码出现1的地方,将会发现1的位置对应的属性被删除。这就是掩码的操作方式。掩码的二进制数值中每个出现1的位置,其对应的属性都被取消。

更改身份

在很多时候,我们会发现可以拥有另一个用户的身份是很必要的。我们经常需要获得超级用户的特权来执行一些管理任务。有三种方法用来转换身份,具体如下:

  • 注销系统并以其他用户的身份重新登录系统。
  • 使用su命令。
  • 使用sudo命令。

在shell会话的状态下,使用su命令将允许你假定为另一个用户的身份,既可以以这个用户的ID来启动一个新的会话,也可以以这个用户的身份来发布一个命令。使用sudo将允许管理者创建一个称为/etx/sudoer的配置文件,并且定义一些特定的命令,这些命令只有被赋予为假定身份的用户才允许被执行。

su——以其他用户和组ID的身份来运行shell

su命令用来以另一个用户的身份来启动shell。

如果包含选项“-l”选项,那么得到的shell会话洁面将是用于指定用户的登陆shell(login shell)界面。这就意味着,该指定用户的运行环境将被加载,而且其工作目录也将更改为该指定用户的主目录。如果没有指定用户,那么默认假定为超级用户。-l可以缩写为-。我们可以通过以下的操作来以超级用户的身份启动shell。

1
$ su -

我们也可以使用su 命令执行单个命令,而不需要开启一个新的交互式命令界面,

1
$su -c 'command'

使用这种格式,单个命令行将被传递到一个新的shell环境下进行执行。

sudo——以另一个身份执行命令

使用sudo命令并不需要输入超级用户的密码。使用sudo命令时,用户只需要输入自己的密码进行认证。

其他命令

  • chown:更改文件所有者和所属群组
  • chgrp:更改文件所属群组
  • passwd:更改用户密码