非特权用户(非root用户)不能chown
使用其他用户名归档。要使用chown
,用户必须具有目标用户的特权。换句话说,只能root
将文件提供给另一个用户。
正如解释这里(感谢@slhck):
只有有效用户ID等于文件用户ID或具有适当特权的进程才可以更改文件的所有权。如果_POSIX_CHOWN_RESTRICTED对路径有效:
@Gilles在此 Unix&Linux答案中很好地解释了其背后的原理:
进行此限制的原因是,向其他用户提供文件可能会使不良情况在不常见但仍很重要的情况下发生。例如:
- 如果系统启用了磁盘配额,则Alice可以在只能由她访问的目录下创建一个可写入世界的文件(因此,没有其他人可以访问该目录中的该可写入世界的文件),然后运行chown将该文件归所有者所有另一个用户Bill。即使只有Alice可以使用该文件,该文件也将计入Bill的磁盘配额之内。
- 如果Alice向Bill赠送了一个文件,则不会有Bill没有创建该文件的跟踪。如果文件包含非法或其他危害数据,则可能会出现问题。
- 某些程序要求其输入文件属于特定用户才能认证请求(例如,文件包含一些程序将代表该用户执行的指令)。这通常不是安全的设计,因为即使Bill创建了一个包含语法正确的指令的文件,他可能也没有打算在此特定时间执行它们。但是,允许Alice创建具有任意内容的文件并将其用作Bill的输入只会使情况变得更糟。