unix权限_UNIX所有权和权限提供了隐私和参与

从50年前的电子时代到1977年苹果计算机问世之间,计算硬件十分稀缺,而且购置和操作成本非常昂贵。 当今(相对)原始系统中可能发生的循环是珍贵的商品,只勉强地分配给最棘手的问题。 争夺项目是为了节省计算机时间 ,最早的信息技术(IT)经理致力于使系统每天24小时,每周7天保持忙碌状态。 毕竟,闲置的tick虫是浪费金钱。

理想情况下,那些丢失的滴答声将按需分配,并自动分配给任何等待计算的任务。 实际上,这就是分时背后的想法(最早由Robert Berner于1957年提出) 。 正如在Multics,RSTS / E和更高版本的UNIX®及其许多现代变体中实现的那样,分时共享或多任务处理将计算机的资源(CPU,输入和输出以及内存)分配到等待的作业中,从而产生了一种错觉作业具有机器专用功能。 将几个哑终端连接到多任务大型机,每个终端似乎是一台个人计算机。

如今,您很可能拥有自己的UNIX计算机,并与其他人共享功能更强大的多处理器系统。 但是,在两种情况下(笔记本电脑和公司机房中的UNIX庞然大物),同时访问仍然是至关重要的。 UNIX提供了强大的工具和基础结构,因此您可以保护和共享信息。

本文着眼于用户权限,尤其是研究如何操纵文件权限来限制或与他人共享目录和文件。 如果您想流利地讲UNIX,那么了解权限至关重要。

id,ego和UID

首先,让我们探讨一下你是谁。 在命令提示符下,输入whoami

$ whoami
strike

我的计算机回答strike ,这是我的用户名(与我登录时使用的名称相同)。 您的whoami应该返回您的登录名。

事实证明,您的用户名实际上是您的用户ID(UID)的化名 。 要查看您的UID,请输入id -u

$ id -u
501

在这里,我的UID是501。

通常,尽可能使用用户名代替UID仅仅是因为它们易于阅读并且易于记忆。 例如,如果运行ps uxf命令以查看正在运行的进程的列表,则ps将用户名显示为进程的所有者。

$ ps uxf
USER       PID %CPU %MEM   VSZ  RSS TTY      STAT START   TIME COMMAND
strike   32346  0.0  0.1  6496 1832 ?        S    19:39   0:00 sshd: strike@pts/0
strike   32347  0.0  0.1  2592 1476 pts/0    Ss   19:39   0:00  \_ -bash
strike   32358  0.0  0.0  2476  820 pts/0    R+   19:39   0:00      \_ ps uxf

输出显示了三个正在运行的进程: ssh登录名,它生成了一个bash shell,它启动了ps命令本身。 同样,如果在主目录中运行ls -alFG以查看文件的所有者,则将显示用户名而不是UID。

通常,只有您可以中断任务。 (当然,超级用户root可以控制和操作所有任务。)例如,另一个共享同一系统的用户joe无法终止我正在运行的shell,即上面列表中的进程32347:

$ whoami
joe
$ kill -INT 32347
-bash: kill: (32347) - Operation not permitted

在这里, 32347是我的shell的进程ID,joe可以通过运行ps auxf 。 但是,由于我拥有该进程,因此joe无法终止它。 相反,我当然可以终止我自己的任何任务,如清单1所示。

清单1.杀死自己的进程
$ ps uxf
...
strike   32347  0.0  0.1  2592 1488 pts/0    Ss   19:39   0:00  \_ -bash
strike   32733 39.5  0.0  1480  356 pts/0    R    19:50   0:01      \_ yes
$ kill -INT 32733
$ ps uxf
...
strike   32347  0.0  0.1  2592 1488 pts/0    Ss   19:39   0:00  \_ -bash

运行kill -INT 32733 ,进程32733( yes命令)终止。

尽管这是一个相对简单的概念,但强大的所有权和按用户配置是使UNIX比Microsoft®Windows®安全得多的两个功能。

会员有其特权

像您启动的作业一样,您还拥有创建的目录和文件。 例如,在主目录和$HOME上运行ls -alFG命令以查看您拥有的内容,如清单2所示。

清单2.列出您在主目录中拥有的内容
$ ls -alFG $HOME
...
-rw-------   1 strike     6175 Aug 25 07:03 .bash_history
-rw-------   1 strike      567 Apr 20  2005 .bash_profile
-rw-------   1 strike     1834 Apr 20  2005 .bashrc
drwx------   2 strike     4096 Mar  8 10:54 .ssh/
-rw-------   1 strike     9516 Aug 22 16:42 .viminfo
-rw-r--r--   1 strike  1529617 Jul 19 07:00 Archive.zip
drwxrwx---   3 strike     4096 Aug 24 04:04 IBM/
drwxr-xrwx   3 strike     4096 Jun 14 06:06 backups/
...

如您所见,我拥有主目录中的所有目录和文件。 作为所有者,我可以删除,重命名和移动我的任何文件和目录,也可以编辑我的任何文件。 您对文件拥有相同的权限( 文件是指文件和目录的总称,除非有特殊的例外情况)。

此外,您可以选择与他人共享文件。 确实,由于UNIX被设计为多用户系统,因此共享文件是操作系统的另一个主要原则。

除了特定的用户所有者外,每个文件和目录还具有一个组所有者。 UNIX组只是用户的集合,您可以是一个或多个组的成员。 使用id查找您的会员资格:

$ id
uid=501(strike) gid=501(strike) groups=501(strike),
  81(appserveradm), 79(appserverusr), 80(admin)

在我的系统上,我的主要组是组ID(GID)501,或名为strike的组。 我也属于其他三个组:

  • appserveradm
  • appserveruser
  • 管理员

通常,默认情况下,您创建的文件的组所有者是您的主要组,但随后您可以将组所有者更改为您所属的任何组。 在主目录上运行ls -laF ,以显示有关文件的更多信息,如清单3所示。

清单3.了解有关文件的更多信息
-rw-------   1 strike strike     6118 Aug 27 21:59 .bash_history
-rw-r--r--   1 strike strike      567 Apr 20  2005 .bash_profile
-rw-r--r--   1 strike strike     1834 Apr 20  2005 .bashrc
drwx------   2 strike strike     4096 Mar  8 10:54 .ssh/
-rw-------   1 strike strike     9516 Aug 22 16:42 .viminfo
-rw-r--r--   1 strike strike  1529617 Jul 19 07:00 Archive.zip
drwxr-xr-x   3 strike strike     4096 Aug 24 04:04 IBM/
drwxrwxr-x   3 strike admin      4096 Jun 14 06:06 backups/

注意: 清单3显示了ls -l的典型输出。 清单2看起来有所不同,因为故意隐藏了组所有者以简化前面的讨论。 您可以使用-G隐藏组所有者。

名为backups的目录具有组所有者admin,该管理员将某些特权扩展到该组的所有成员。 同时,我其余文件的组所有者是罢工。 通常,用户是他或她的同名组的唯一成员,这实际上限制了仅对该用户的访问。

精美的细节

如果回头看一下上面ls的输出,您可能会注意到每行开头有10个字符的序列。 每个字符都是关闭或打开的设置或位,代表三个选区之一的特定权利:您,一个组和其他组。 图1显示了每个位的用法。

图1. UNIX文件的权限位
UNIX权限

在图1中:

  • 初始位指示文件是否为目录。 (通常,起始位指示文件是否特殊。如果文件特殊,则目录的起始字符为d ,符号链接的起始字符为l 。)该设置是不变的。
  • 接下来的三位(蓝色显示)分别代表您有权读取,写入和执行文件。 例如,您可以禁用写入位,以防止文件被删除。 (是的,您需要具有写权限才能删除文件。)
  • 接下来的三位(绿色)表示组的读取,写入和执行文件的权利。
  • 最后三位(橙色)代表每个其他用户(即,所有用户,您自己和组成员除外)的权利。

使用上面找到的ls -laF输出作为示例:

  • .bash_history,.bash_profile,.bashrc和.viminfo文件仅由我可读和可写。 我可以查看,编辑和删除这些文件。
  • .ssh目录只有我可以访问。 第一位表示它是一个特殊文件,而d表示目录。 我可以显示目录的内容,因为它设置了用户可读取的位。 我可以从目录中添加和删除文件,因为它的用户写入位已设置。 您可能想知道为什么目录也是用户可执行的。 除非设置此位,否则无法遍历(输入和编录)目录。 (顺便说一句,如本系列文章的第3部分所述,您的.ssh目录必须是私有的,否则您的公共密钥访问将无法进行。)
  • 我可以读写Archive.zip文件,其他人可以读取该文件。 (当然, 罢工小组也可以读取该文件,但是如果我是该小组的唯一成员,那么权限就没有意义了。)
  • 我可以在IBM,另一个目录中对文件进行编录,读取和写入,其他人可以对它的内容进行编目。
  • 最后, admin组的成员以及我可以对备份中的文件进行分类,读取和写入,其他所有人都可以进行分类和读取。

您可以使用chmod ( 更改模式 )命令来修改权限(目录位除外)。 您可以使用chgrp ( 更改组 )命令来操纵文件的组分配。 (超级用户root也可以通过使用chown或change owner命令来更改文件所有权。)

这是chmod示例应用程序:

  • chmod u+x script.sh如果要编写Shell脚本并要执行该脚本,请启用其执行位。 这里,短语u+x表示用户所有者( u )启用( + )执行位( x ) 。 chmod的一般形式是chmod ,none(表示用户), ug (对于组)或o (对于其他),一个或多个,a +-以及rw和一个或多个, x
  • chmod go+rx IBM此命令为组和其他组启用读取和执行特权。
  • chmod a+rx script.sh除了ugo ,您还可以对所有用户,用户,组和其他用户使用修饰符a 。 因此,此命令启用对所有三个选区的读取和执行。
  • chgrp admin backups此命令将组所有者更改为admin。

如果使用+添加权限,它将添加指定的权限,但其他权限保持不变。 同样,如果您使用- ( 减号 )撤消权限,则它会禁用某些权限,但会保持现状。 如果要一次设置所有权限,请使用数字文件模式。 (您也可以使用chmod =运算符。有关详细信息,请参见手册页。)

注意: 数字文件模式是0到7之间的八进制数字,或者是三位数字,读,写和执行中的每一位都为一位。 因为有三个组别为每个文件中,完全指定的文件模式是三位数字,例如400644 ,或777 。 这里有些例子:

  • 要使目录私有,您可以为自己启用权限,但撤消对某个组和其他组的权限:
    $ mkdir example
    $ ls -l
    drwxr-xr-x    2 strike  strike       68 Aug 28 11:27 example
    $ chmod 700 example
    $ ls -l
    drwx------    2 strike  strike       68 Aug 28 11:27 example

    模式700转换为启用用户的读,写和执行(前导7 ),但禁用所有其他权限(后两个零) 。
  • 如果要让计算机上的其他所有人读取您的文件之一,请为所有三个选区启用读取权限:
    $ ls -l .aliases
    -rw-------   1 mstreich  mstreich  79 Jul 26 17:08 .aliases
    $ chmod 644 .alias
    $ ls -l
    -rw-r--r--  1 mstreich  mstreich  79 Jul 26 17:08 .aliases

    644是我 ( 6 )的设置,读取和写入权限以及组( 4 )和其他( 4 )读取权限的简写。 当然,如果文件.aliases位于您的主目录中,则$ HOME的权限必须允许分类和读取。

表1中的图表显示了用户所有者,组所有者和其他用户的数值和相关结果。 只需在每个部分中添加值即可找到要设置的正确值。

表1.数值和相关结果
WHO 结果
用户 0400 允许所有者读取。
0200 允许所有者写信。
0100 对于文件,允许所有者执行; 对于目录,允许所有者在目录中搜索。
0040 允许小组成员阅读。
0020 允许小组成员写信。
0010 对于文件,允许所有者执行; 对于目录,请允许组成员在目录中搜索。
其他 0004 允许他人阅读。
0002 允许他人写。
0001 对于文件,允许其他人执行; 对于目录,允许其他人在目录中搜索。

例如,要为其他用户设置读取和写入权限,请添加00040002以产生0006 。 对用户和组执行类似的操作,并将所有三个总和相加即可得出完全限定的数字模式。

权限至关重要

在UNIX系统上,一次又一次地设置和管理权限。 您通常需要对特定文件和目录具有适当的权限才能运行守护程序。 只有设置了正确的权限,目录(例如/ tmp)才能工作; 当然,要与他人共享文件或保护文件,您必须能够设置,更改和读取权限。

本系列的下一篇文章将继续介绍文件,并探讨实用程序和技术来管理多台计算机上成百上千个文件。


翻译自: https://www.ibm.com/developerworks/aix/library/au-speakingunix4/index.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值