如何找到可由组或其他写入的主目录?

时间:2014-07-08 00:34:40

标签: bash shell

我是Bash Scripting的新手,所以如果这个问题听起来很愚蠢,请耐心等待。我也不太清楚在互联网上搜索什么。如果我需要编写一个shell脚本来列出一个用户的主目录可以由其他用户修改的目录,我该怎么办? / strong>我无法理解其他用户修改的内容'。请帮助。谢谢!

2 个答案:

答案 0 :(得分:2)

在:

  

哪个用户的主目录可以被其他用户修改?

可以是:

  1. 如果user1与user2 AND 在同一个组中,则主目录可以进行组写,或
  2. 如果用户具有全局可写目录
  3. 您真的需要了解类似unix的权限是如何工作的。 (或者在更广泛的背景下 - ACL一般如何工作)

    对于(部分)解决方案(许多方式 - 其中一个是下一个):

    1. 您可以从/etc/passwd文件中获取主目录的路径。
    2. 可以在一个循环中读取它们(使用/etc/passwd命令过滤cut)和
    3. 测试,如果它们可以为您写入(为此,请阅读有关shell builtins if的手册页和命令test别名[

答案 1 :(得分:2)

您的问题的答案非常简短:无需脚本,只需:

ls -al /home

这将为您列出所有用户以及每个用户主目录的相应权限。 Linux文件权限由10 bits控制,代表具有访问权限, (如果有)特殊权限与给定文件相关联。权限位通常表示为drwxrwxrwx。第一个或特殊的位含义如下:

     _: (unset) indicates a regular file with no special properties
     d: directory,
     l: link,
     s: the directory is setuid/setgid
     t: sticky bit

接下来的9位rwxrwxrwx(3组rwx)控制owner group world对相关文件的访问权限。那么谁是所有者 群组世界?让我们看看ls -al /home

中的示例
drwxr-xr-x  15 deborah users  4096 Mar 11  2011 deborah

查看信息,我们可以将10位和信息分开如下:

d  rwx  r-x  r-x  ..  deborah  users  ..... deborah
    |    |    |       \        \            \
  owner  |  world      owner    group        filename
       group

特殊权限位上方是d,表示文件名(最右边的 deborah )是目录。第一组3位指定所有者(deborah)对文件具有r ead,w rite和e x ecute权限。同样,下一组3指定组(用户)具有r ead和e x ecute权限但没有w rite权限。 NOTE: with a directory, the execute bit also control whether the (owner, group or world) can descend into the directory。以同样的方式,世界(每个人)组(用户)具有相同的权限。

要操作这些位,请使用chmod(更改模式)命令。要操纵用户或组,请使用chown(更改所有者)命令。 chown命令具有简单的基本用法,只需指定由冒号owner分隔的新group:。例如,要将上面显示的文件更改为由用户david和组samba拥有,命令将为chown david:samba filename

有两种方法可以使用chmod更改权限或(模式)。您可以在数字上一次指定特殊位的八进制等效值和3组所有者,组和世界位。示例:要为用户创建目录rwx,您将发出命令:

chmod 0775 filename    # to set all permissions as desired at once

0只是说明目录没有特殊的位设置,第一个7表示用户的二进制111(或rwx,第二个7表示相同,最后5表示世界应该有(二进制101r_x权限。虽然并非总是需要,但建议提供前导0,即使特殊权限位没有更改也不会有任何歧义。

您还可以将chmod与 + / - / = rwx(对应rwx位)用于{ {1}},ug o ser,u roup或g wner权限(您可以使用o进行切换所有)。要将它们放在一起并使用八进制位将模式设置为与上面所示相同,您只需执行以下操作:

a

使用此方法,您可能需要多次调用chmod g+w filename # to add the single write bit to group 'users' 以根据需要设置所有权限,但使用八进制权限进行对比,您可以设置所有权限字段单个电话。

显然除此之外还有更多内容,但对于一个很好的介绍,这应该足以让您开始管理权限和所有权。 (显然这篇文章的结果也比最初预期的要长,享受)。