位置:首页 > 其他技术 > Unix > UNIX 文件权限/访问模式

UNIX 文件权限/访问模式

文件所有权是UNIX的一个重要组成部分,提供了一个安全的方法,用于存储文件。 UNIX中的每个文件具有以下属性:

  • 所有者权限: 所有者的权限,确定所采取的操作文件的拥有者可以执行文件。

  • 组权限: 该组的权限确定哪些操作用户,谁是一个文件所属的组的成员,可以执行该文件。

  • 其它权限: 别人的权限表明什么样的操作,所有其他用户可以执行该文件。

权限指示:

当用ls-l命令显示各种信息相关的文件权限如下:

$ls -l /home/amrood
-rwxr-xr--  1 amrood   users 1024  Nov 2 00:10  myfile
drwxr-xr--- 1 amrood   users 1024  Nov 2 00:10  mydir

这里第一列代表不同的访问模式,即关联的权限的文件或目录。

权限被分成三组,每个组中的位置表示一个特定的权限,这个顺序:读(r),写(w),执行(x):

  • 前三个字符(2-4)表示文件所有者的权限。例如 -rwxr-xr--  代表读(r),写(w)和执行(x)许可。

  • 第二组的三个字符(5-7)由文件所属组的权限。例如-rwxr-xr--代表该组读(r)和执行(x)权限,但没有写权限。 

  • 最后一组的三个字符(8-10)表示其他的权限。例如rwxr-XR - 代表其他只允许读(r)

文件访问模式:

一个文件的权限是一个Unix系统安全防御的第一线。 Unix权限的基本构建块的读,写和执行权限,​​说明如下:

1. Read:

即阅读,查看该文件的内容。

2. Write:

修改或删除的文件的内容。

3. Execute:

作为一个程序执行权限的用户可以运行一个文件。

目录访问方式:

目录访问方式列出,像其他文件中相同的方式组织。有一些差异,需要提及:

1. Read:

到一个目录中的访问意味着用户可以读取内容。用户可以看看目录里面的文件名。

2. Write:

访问装置,用户可以添加或删除的文件的目录的内容。

3. Execute:

执行目录并没有真正有很大的意义,认为这是一个遍历权限。

用户必须拥有的bin目录的执行权限,以执行ls或cd命令。

更改权限:

要改变文件或目录的权限,使用chmod(其他模式)命令。有两种方法使用chmod:符号模式和绝对模式。

使用chmod符号模式:

对于一个初学者,修改文件或目录的权限最简单的方法是使用符号模式。具有象征性的权限,可以添加,删除,或使用下表中的操作符,想要指定的权限集。

Chmod 操作符 描述
+ Adds the designated permission(s) to a file or directory.
- Removes the designated permission(s) from a file or directory.
= Sets the designated permission(s).

下面是一个例子,使用testfile的。运行ls -1 在 testfile将显示文件的权限如下:

$ls -l testfile
-rwxrwxr--  1 amrood   users 1024  Nov 2 00:10  testfile

然后每个例子chmod命令从前面的表上运行,其次testfile将ls-l,可以看到权限更改:

$chmod o+wx testfile
$ls -l testfile
-rwxrwxrwx  1 amrood   users 1024  Nov 2 00:10  testfile
$chmod u-x testfile
$ls -l testfile
-rw-rwxrwx  1 amrood   users 1024  Nov 2 00:10  testfile
$chmod g=r-x testfile
$ls -l testfile
-rw-r-xrwx  1 amrood   users 1024  Nov 2 00:10  testfile

这里是如何将这些命令放在一行:

$chmod o+wx,u-x,g=r-x testfile
$ls -l testfile
-rw-r-xrwx  1 amrood   users 1024  Nov 2 00:10  testfile

使用chmod绝对权限:

使用chmod命令修改权限的第二种方法是使用一些指定每个组的文件的权限。

每个权限分配一个值,按照下表中所示,每一组的总的权限提供了许多用于该集合。

Number 八进制权限表示 Ref
0 No permission ---
1 Execute permission --x
2 Write permission -w-
3 Execute and write permission: 1 (execute) + 2 (write) = 3 -wx
4 Read permission r--
5 Read and execute permission: 4 (read) + 1 (execute) = 5 r-x
6 Read and write permission: 4 (read) + 2 (write) = 6 rw-
7 All permissions: 4 (read) + 2 (write) + 1 (execute) = 7 rwx

下面是一个例子,使用testfile。运行ls -1 在 testfile 将显示文件的权限如下:

$ls -l testfile
-rwxrwxr--  1 amrood   users 1024  Nov 2 00:10  testfile

然后每个例子chmod命令从前面的表上运行,其次testfile将ls-l ,所以 可以看到权限更改:

$ chmod 755 testfile
$ls -l testfile
-rwxr-xr-x  1 amrood   users 1024  Nov 2 00:10  testfile
$chmod 743 testfile
$ls -l testfile
-rwxr---wx  1 amrood   users 1024  Nov 2 00:10  testfile
$chmod 043 testfile
$ls -l testfile
----r---wx  1 amrood   users 1024  Nov 2 00:10  testfile

更改所有者和组:

在Unix上创建一个帐户,一个所有者分配给每个用户的ID和组ID。上面提到的所有的权限也被分配基础上的所有者和组。

两个命令都可以改变文件的所有者和组:

  1. chown: chown命令代表“更改所有者”,是用来改变文件所有者。

  2. chgrp: chgrp命令代表“更改组”,是用来改变文件的组。

所有权变更:

chown命令更改文件的所有权。基本语法如下:

$ chown user filelist

用户的值可以是一个用户在系统上的一个用户在系统上的用户ID(UID)的名称。

下面的例子:

$ chown amrood testfile
$

更改给定的文件的所有者用户amrood。

注意:超级用户root拥有不受限制的能力改变任何文件的所有权,但普通用户只能改变他们所拥有的文件的所有者。

更改组所有权:

chrgp命令组文件的所有权更改。基本语法如下:

$ chgrp group filelist

组的值可以是系统或组ID(GID)系统上的一组一组的名称。

下面的例子:

$ chgrp special testfile
$

组给定的文件更改特殊组。

SUID和SGID文件权限:

通常,当执行一个命令,它会以完成其任务,必须具有特殊权限的执行。

作为一个例子,当用passwd命令更改您的密码,新密码存储在文件 /etc/shadow文件。

作为一个普通用户,没有读或写访问此文件出于安全原因,但是当改变你的密码,需要写这个文件的​​权限。这意味着passwd程序给额外的权限,这样就可以写入文件/ etc / shadow中。

其他权限的程序通过设置用户ID(SUID)和设置组ID(SGID)位被称为一种机制。

当执行一个程序,启用了SUID位,继承该程序的所有者的权限。启动程序的用户的权限运行程序没有设置SUID位。

这才是真正为SGID。通常情况下,节目组权限执行,而是您的组将被改变只是对这一计划的程序的组所有者。

如果权限SUID和SGID位会出现字母“s”。位于所有者的权限位执行权限通常会位于SUID位将被“S”。例如,命令

$ ls -l /usr/bin/passwd
-r-sr-xr-x  1   root   bin  19031 Feb 7 13:47  /usr/bin/passwd*
$

这表明了SUID位设置该命令是由root。大写字母S在执行位置,而不是一个小写字母s表示,没有设置执行位。

如果粘位上启用的目录,文件只能被删除,如果是以下用户:

  • 所有者粘性目录

  • 所有者被删除的文件

  • 超级用户root

要设置SUID和SGID位上的任何目录尝试以下操作:

$ chmod ug+s dirname
$ ls -l
drwsr-sr-x 2 root root  4096 Jun 19 06:45 dirname
$