加入收藏 | 设为首页 | 会员中心 | 我要投稿 均轻资讯网 (https://www.ijunqing.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Unix > 正文

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

发布时间:2022-10-26 15:42:18 所属栏目:Unix 来源:
导读:  从50年前的电子时代到1977年苹果计算机问世之间,计算硬件十分稀缺,而且购置和操作成本非常昂贵。 当今(相对)原始系统中可能发生的循环是珍贵的商品,只勉强地分配给最棘手的问题。 争夺项目是为了节省计算机
  从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.杀死自己的进程
 
  $ 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 32733UNIX 文件权限,进程32733( yes命令)终止。
 
  尽管这是一个相对简单的概念,但强大的所有权和按用户配置是使UNIX比Microsoft?Windows?安全得多的两个功能。
 
  会员有其特权
 
  像您启动的作业一样,您还拥有创建的目录和文件。 例如,在主目录和$HOME上运行ls -alFG命令以查看您拥有的内容,如所示。
 
  清单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组的麻烦
 
  更改文件的组所有者是与该组的所有成员共享文件的便捷方法。 例如,如果您, jane和joe组成了science UNIX组,并且您想与两个用户共享敏感的nuclear.csv数据文件,则只需将该文件的组所有者更改为science。
 
  但是,如果sam和bertha也需要访问该文件又不在科学组中怎么办? 您当然可以将两个用户都添加到科学中,但这将使他们能够访问科学组拥有的所有文件。
 
  这是UNIX组实现的一个不幸限制:文件可以只有一个组拥有者,并且实施复杂的共享方案通常会导致组爆炸。 (您可以为joe,jane,sam和bertha创建一个新的组,例如jjsb 。但是,当donald也需要访问时会发生什么?)
 
  如果需要复杂的访问控制方案,请考虑使用许多UNIX实现提供的访问控制列表(ACL)。 ACL扩展了标准UNIX所有权模型,以授予(或排除)每个用户或每个组的特定权限。 ACL就像在门口放着蹦蹦床一样:您可以让您的好友以及某些名人和其他亲手采摘的客人进入,但可以将狗仔队和其他即兴表演者拒之门外。
 
  如您所见,我拥有主目录中的所有目录和文件。 作为所有者,我可以删除,重命名和移动我的任何文件和目录,也可以编辑我的任何文件。 您对文件拥有相同的权限( 文件是指文件和目录的总称,除非有特殊的例外情况)。
 
  此外,您可以选择与他人共享文件。 确实,由于UNIX被设计为多用户系统,因此共享文件是操作系统的另一个主要原则。
 
  除了特定的用户所有者外,每个文件和目录还具有一个组所有者。 UNIX组只是用户的集合,您可以是一个或多个组的成员。 使用id查找您的会员资格:
 
  $ id
  uid=501(strike) gid=501(strike) groups=501(strike),
    81(appserveradm), 79(appserverusr), 80(admin)
  在我的系统上,我的主要组是组ID(GID)501,或名为strike的组。 我也属于其他三个组:
 
  通常,默认情况下,您创建的文件的组所有者是您的主要组,但随后您可以将组所有者更改为您所属的任何组。 在主目录上运行ls -laF ,以显示有关文件的更多信息,如所示。
 
  清单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/
  注意: 显示了ls -l的典型输出。 看起来有所不同,因为故意隐藏了组所有者以简化前面的讨论。 您可以使用-G隐藏组所有者。
 
  名为backups的目录具有组所有者admin,该管理员将某些特权扩展到该组的所有成员。 同时,我其余文件的组所有者是罢工。 通常,用户是他或她的同名组的唯一成员,这实际上限制了仅对该用户的访问。
 
  精美的细节
 
  如果回头看一下上面ls的输出,您可能会注意到每行开头有10个字符的序列。 每个字符都是关闭或打开的设置或位,代表三个选区之一的特定权利:您,一个组和其他组。 显示了每个位的用法。
 
  图1. UNIX文件的权限位
 
  在图1中:
 
  使用上面找到的ls -laF输出作为示例:
 
  使目录粘滞
 
  如果要确保目录持久存在并且不会被意外删除,请使用chmod +T设置粘滞位。
 
  设置了粘性位并且将权限设置为所有人都可以读取,写入和执行 ,每个人都可以将文件放入我的保管箱,但是我是唯一可以删除目录中的文件或删除目录本身的用户。
 
  如果运行ls -ld /tmp ,则可能是整个系统范围的临时目录(被广泛用作应用程序暂存空间)很粘。
 
  您可以使用chmod ( 更改模式 )命令来修改权限(目录位除外)。 您可以使用chgrp ( 更改组 )命令来操纵文件的组分配。 (超级用户root也可以通过使用chown或change owner命令来更改文件所有权。)
 
  这是chmod示例应用程序:
 
  如果使用+添加权限,它将添加指定的权限,但其他权限保持不变。 同样,如果您使用- ( 减号 )撤消权限,则它会禁用某些权限,但会保持现状。 如果要一次设置所有权限,请使用数字文件模式。 (您也可以使用chmod =运算符。有关详细信息,请参见手册页。)
 
  注意: 数字文件模式是0到7之间的八进制数字,或者是三位数字,读,写和执行中的每一位都为一位。 因为有三个组别为每个文件中,完全指定的文件模式是三位数字,例如400 , 644 ,或777 。 这里有些例子:
 
  的图表显示了用户所有者,组所有者和其他用户的数值和相关结果。 只需在每个部分中添加值即可找到要设置的正确值。
 
  表1.数值和相关结果 WHO 值 结果
 
  用户
 
  0400
 
  允许所有者读取。
 
  0200
 
  允许所有者写信。
 
  0100
 
  对于文件,允许所有者执行; 对于目录,允许所有者在目录中搜索。
 
  组
 
  0040
 
  允许小组成员阅读。
 
  0020
 
  允许小组成员写信。
 
  0010
 
  对于文件,允许所有者执行; 对于目录,请允许组成员在目录中搜索。
 
  其他
 
  0004
 
  允许他人阅读。
 
  0002
 
  允许他人写。
 
  0001
 
  对于文件,允许其他人执行; 对于目录,允许其他人在目录中搜索。
 
  例如,要为其他用户设置读取和写入权限,请添加0004和0002以产生0006 。 对用户和组执行类似的操作,并将所有三个总和相加即可得出完全限定的数字模式。
 
  权限至关重要
 
  在UNIX系统上,一次又一次地设置和管理权限。 您通常需要对特定文件和目录具有适当的权限才能运行守护程序。 只有设置了正确的权限,目录(例如/ tmp)才能工作; 当然,要与他人共享文件或保护文件,您必须能够设置,更改和读取权限。
 
  本系列的下一篇文章将继续介绍文件,并探讨实用程序和技术来管理多台计算机上成百上千个文件。
 

(编辑:均轻资讯网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章