【问题标题】:Why ordinary user cannot use chgrp/chown为什么普通用户不能使用 chgrp/chown
【发布时间】:2013-08-16 00:29:59
【问题描述】:
-bash-3.2$ man chgrp | head -1
CHGRP(1)                         User Commands                        CHGRP(1)
-bash-3.2$ man chown | head -1   
CHOWN(1)                         User Commands                        CHOWN(1)

以下内容来自'man 7 man':

1 Commands
            Those commands that can be executed by the user from within a shell.
8 System management commands
            Commands like mount(8), many of which only root can execute.

为什么普通用户不能使用CHGRP(1)/CHOWN(1)?据我了解,普通用户无法使用 CHGRP(8)/CHOWN(8)。

【问题讨论】:

  • 您的问题是:为什么chown 命令在手册页的第 1 部分,而不是第 8 部分?

标签: linux command


【解决方案1】:

让非root用户使用chownchgrp会有很多问题。

  1. 如果用户能够chown otheruser ownfile,那么之后,他将无法再访问自己的文件 - 不好。
  2. 如果某个恶意用户劫持了您的帐户,他将能够更改您文件的权限,使其现在归其他用户所有:如恶意用户或 www 用户。那么,窃取您的数据就轻而易举了。

【讨论】:

  • 嗨,但是:1 命令那些可以由用户在 shell 中执行的命令。
  • 没什么区别 - shell 命令chown 只不过是调用chown 系统调用的瘦包装器。
【解决方案2】:

如果任何用户能够成功地对不属于他的文件调用chown(2) 系统调用(例如通过chrgrpchown 命令),Linux 内核提供的基于用户的访问保护将毫无用处。恶意用户会更改其访问权限仅限于他的每个文件的所有权

当然,用户可以执行chown 命令(例如通过输入/usr/bin/chown file)但是如果从普通用户调用这些命令将失败(并且有一个非退出代码为零),因为底层的chown(2) 系统调用将失败。

注意:如文档所述,普通用户可以chgrp 加入他所属的某个组。

【讨论】:

  • 嗨,但是:1 命令那些可以由用户在 shell 中执行的命令。
  • 能够调用命令并不意味着该命令总是运行成功!
  • 谢谢!我现在明白了!
【解决方案3】:

所有用户都可以使用chgrp 将他们拥有的文件的组更改为他们所属的其他组。试试这个,将组名 lpadmin 替换为以下任何第二组:

touch t; ls -l t; chgrp lpadmin t; ls -l t

beforeafter 调用ls 将显示该组已更改。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-08
    • 2011-12-26
    • 1970-01-01
    • 2023-02-09
    相关资源
    最近更新 更多