我是Bash Scripting的新手,所以如果这个问题听起来很愚蠢,请耐心等待。我也不太清楚在互联网上搜索什么。如果我需要编写一个shell脚本来列出一个用户的主目录可以由其他用户修改的目录,我该怎么办? / strong>我无法理解其他用户修改的内容'。请帮助。谢谢!
答案 0 :(得分:2)
在:
哪个用户的主目录可以被其他用户修改?
可以是:
您真的需要了解类似unix的权限是如何工作的。 (或者在更广泛的背景下 - ACL一般如何工作)
对于(部分)解决方案(许多方式 - 其中一个是下一个):
/etc/passwd
文件中获取主目录的路径。/etc/passwd
命令过滤cut
)和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
表示世界应该有(二进制101
)r_x
权限。虽然并非总是需要,但建议提供前导0
,即使特殊权限位没有更改也不会有任何歧义。
您还可以将chmod与 + / - / = r
,w
,x
(对应rwx
位)用于{ {1}},u
或g
o
ser,u
roup或g
wner权限(您可以使用o
进行切换所有强>)。要将它们放在一起并使用八进制位将模式设置为与上面所示相同,您只需执行以下操作:
a
使用此方法,您可能需要多次调用chmod g+w filename # to add the single write bit to group 'users'
以根据需要设置所有权限,但使用八进制权限进行对比,您可以设置所有权限字段单个电话。
显然除此之外还有更多内容,但对于一个很好的介绍,这应该足以让您开始管理权限和所有权。 (显然这篇文章的结果也比最初预期的要长,享受)。