• 【busybox记录】【shell指令】chown


    目录

    内容来源:

    【GUN】【chown】指令介绍

    【busybox】【chown】指令介绍

    【linux】【chown】指令介绍

    使用示例:

    常用组合指令:

    指令不常用/组合用法还需继续挖掘:


    内容来源:

            GUN : Coreutils - GNU core utilities

            busybox v1.36.1 : 【busybox记录】【shell指令】基于的Busybox的版本和下载方式-CSDN博客

    【GUN】【chown】指令介绍

    1. chown:更改文件所有者和组
    2. chown 将每个给定文件的用户和/或组所有权更改为新所有者或现有引用文件的用户和组。
    3. 简介:
    4. chown [option]... {new-owner | --reference=ref_file} file...
    5. 如果使用new-owner,则指定新的所有者 和 组,如下所示(没有嵌入空白):
    6. [owner] [ : [group] ]
    7. 具体地说:
    8. owner 如果只给出了一个所有者(用户名或数字用户ID),则该用户将成为每个给定文件的所有者,而文件的组不会改变。
    9. owner‘:’group 如果所有者后面跟着一个冒号和一个组(组名或数字组ID),并且在它们之间没有空格,那么文件的组所有权也会改变(变为组)。
    10. owner‘:’ 如果owner后面有冒号但没有组名,则该用户成为文件的所有者,文件的组更改为所有者的登录组。
    11. ‘:’group 如果给出了冒号和后面的组,但省略了所有者,则只改变文件的组;在本例中,chown的功能与chgrp相同。
    12. ‘:’ 如果只给出了冒号,或者new-owner为空,则不会改变所有者和组。
    13. 如果所有者或组打算表示数字用户或组ID,则可以用` + `开头指定。参见第2.4节[消除名称和id的歧义],第6页。
    14. 一些旧的脚本可能仍然使用‘.’代替‘:’分隔符。POSIX 1003.1-2001(参见第2.13节[标准一致性],第11页)不需要对此支持,但对于向后兼容性GNU chown支持。只要没有产生歧义,尽管它会发出警告,支持可能会在未来的版本中被删除。新的脚本应该避免使用‘.’因为它是不可移植的,而且如果整个所有者都持有它会产生不良的结果‘.’组碰巧标识了一个名称包含‘.’的用户。
    15. 用户是否可以将组更改为任意组,或者将可移植性更强的行为限制为设置用户是其中一员的组,这取决于系统。
    16. chown命令有时会清除set-user-ID或set-group-ID权限位。
    17. 这种行为取决于底层chown系统调用的策略和功能,该系统调用可能会对依赖于系统的文件模式进行修改,而chown命令无法控制这些修改。例如,当具有适当权限的用户调用chown命令时,或者这些位表示除可执行权限之外的其他功能时(例如强制锁定),chown命令可能不会影响这些位。如果有疑问,请检查底层系统行为。
    18. 该程序接受以下选项。参见第2章[常见选项],第2页。
    19. ‘-c’
    20. ‘--changes’
    21. 详细描述每个所有权实际改变的文件的操作。
    22. ‘-f’
    23. ‘--silent’
    24. ‘--quiet’
    25. 不要打印关于无法更改其所有权的文件的错误消息。
    26. ‘--from=old-owner’
    27. 仅当文件具有old-owner指定的当前属性时,才更改文件的所有权。旧所有者与新所有者具有上述相同的形式。这个选项主要从安全的角度来看是有用的,因为它大大缩小了潜在滥用的窗口。例如,要反映一个用户的文件的用户ID编号变化而没有类似的选项,可以运行root命令
    28. find / -owner OLDUSER -print0 | xargs -0 chown -h NEWUSER
    29. 但这是危险的,因为find测试现有文件的所有者与chown实际运行之间的间隔可能非常大。缩小差距的一种方法是对找到的每个文件都调用chown:
    30. find / -owner OLDUSER -exec chown -h NEWUSER {} \;
    31. 但是如果有很多受影响的文件,这将非常缓慢。使用这个选项,它更安全(差距更小),但仍然不完美:
    32. chown -h -R --from=OLDUSER NEWUSER /
    33. ‘--dereference’
    34. 不要对符号链接本身进行操作,而是对它们指向的内容进行操作。这是不进行递归操作时的默认值。
    35. 将解除引用选项与 --recursive选项结合起来可能会产生安全风险:在遍历目录树期间,攻击者可能会将符号链接引入到任意目标;当工具到达这个位置时,就会对该符号链接的目标执行操作,这可能会允许攻击者提升权限。
    36. ‘-h’
    37. ‘--no-dereference’
    38. 操作符号链接本身,而不是它们指向的内容。该模式依赖于lchown系统调用。在不提供lchown系统调用的系统上,不会发出诊断,但请参阅— --erbose。
    39. ‘--preserve-root’
    40. 以递归方式修改根目录/时失败。如果没有 --recursive,这个选项就没有效果。参见第2.9节[特殊处理],第9页。
    41. ‘--no-preserve-root’
    42. 取消前面的 --preserve-root选项的效果。参见第2.9节[特殊处理],第9页。
    43. ‘--reference=ref_file’
    44. 将每个文件的用户和组更改为与ref file的用户和组相同。如果ref file是一个符号链接,不要使用符号链接的用户和组,而要使用它所引用的文件的用户和组。
    45. ‘-v’
    46. ‘--verbose’
    47. 为处理的每个文件输出一个诊断。如果在没有lchown系统调用的系统上进行递归遍历时遇到符号链接,并且 --no-dereference生效,则发出诊断,指出符号链接及其引用都没有被更改。
    48. ‘-R’
    49. ‘--recursive’
    50. 递归地更改目录及其内容的所有权。
    51. ‘-H’
    52. 如果指定了 --recursive (-R),并且命令行参数是指向目录的符号链接,则遍历该目录。参见第2.8节[遍历符号链接],第9页。
    53. ‘-L’
    54. 在递归遍历中,遍历遇到的目录的每个符号链接。
    55. 将解除引用选项与 --recursive选项结合起来可能会产生安全风险:在遍历目录树期间,攻击者可能会将符号链接引入到任意目标;当工具到达这个位置时,就会对该符号链接的目标执行操作,这可能会允许攻击者提升权限。参见第2.8节[遍历符号链接],第9页。
    56. ‘-P’
    57. 不要遍历任何符号链接。如果不指定-H、-L或-P,则为默认值。参见第2.8节[遍历符号链接],第9页。
    58. 退出状态为零表示成功,非零值表示失败。例子:
    59. #将 /u 的属主改为root
    60. chown root /u
    61. #类似,但将其分组更改为"staff"。
    62. chown root:staff /u
    63. #将 /u 及其子文件的属主改为root。
    64. chown -hR root /u

    busybox】【chown】指令介绍

    1. [root@localhost bin]# ./chown --help
    2. BusyBox v1.36.1 (2024-04-16 11:16:28 EDT) multi-call binary.
    3. Usage: chown [-RhLHPcvf]... USER[:[GRP]] FILE...
    4. Change the owner and/or group of FILEs to USER and/or GRP
    5. -h Affect symlinks instead of symlink targets
    6. -L Traverse all symlinks to directories
    7. -H Traverse symlinks on command line only
    8. -P Don't traverse symlinks (default)
    9. -R Recurse
    10. -c List changed files
    11. -v Verbose
    12. -f Hide errors

    linux】【chown】指令介绍

    1. [root@localhost bin]# chown --help
    2. 用法:chown [选项]... [所有者][:[组]] 文件...
    3.  或:chown [选项]... --reference=参考文件 文件...
    4. Change the owner and/or group of each FILE to OWNER and/or GROUP.
    5. With --reference, change the owner and group of each FILE to those of RFILE.
    6. -c, --changes like verbose but report only when a change is made
    7. -f, --silent, --quiet suppress most error messages
    8. -v, --verbose output a diagnostic for every file processed
    9. --dereference affect the referent of each symbolic link (this is
    10. the default), rather than the symbolic link itself
    11. -h, --no-dereference affect symbolic links instead of any referenced file
    12. (useful only on systems that can change the
    13. ownership of a symlink)
    14. --from=当前所有者:当前所属组
    15. 只当每个文件的所有者和组符合选项所指定时才更改所
    16. 有者和组。其中一个可以省略,这时已省略的属性就不
    17. 需要符合原有的属性。
    18. --no-preserve-root do not treat '/' specially (the default)
    19. --preserve-root fail to operate recursively on '/'
    20. --reference=RFILE use RFILE's owner and group rather than
    21. specifying OWNER:GROUP values
    22. -R, --recursive operate on files and directories recursively
    23. The following options modify how a hierarchy is traversed when the -R
    24. option is also specified. If more than one is specified, only the final
    25. one takes effect.
    26. -H if a command line argument is a symbolic link
    27. to a directory, traverse it
    28. -L traverse every symbolic link to a directory
    29. encountered
    30. -P do not traverse any symbolic links (default)
    31. --help 显示此帮助信息并退出
    32. --version 显示版本信息并退出
    33. Owner is unchanged if missing. Group is unchanged if missing, but changed
    34. to login group if implied by a ':' following a symbolic OWNER.
    35. OWNER and GROUP may be numeric as well as symbolic.
    36. 示例:
    37. chown root /u 将 /u 的属主更改为"root"。
    38. chown root:staff /u 和上面类似,但同时也将其属组更改为"staff"。
    39. chown -hR root /u 将 /u 及其子目录下所有文件的属主更改为"root"。
    40. GNU coreutils 在线帮助:
    41. 请向 报告 chown 的翻译错误
    42. 完整文档请见:
    43. 或者在本地使用:info '(coreutils) chown invocation'

    使用示例:

    后续补充

    常用组合指令:

    指令不常用/组合用法还需继续挖掘:

  • 相关阅读:
    Docker(一)、linux环境安装Docker
    【C++】特殊类的设计
    AI绘画:midjourney快速生成符合心意的AI人物形象
    QT day1
    html+css(1-50)
    【STM32学习】I2C通信协议 | OLED屏
    利用cmd命令创建、修改、删除、查看与使用数据库
    学习笔记——动态路由——OSPF(OSPF协议的工作原理)
    SpringBoot学习(一)
    【STM32】RCC时钟模块(使用HAL库)
  • 原文地址:https://blog.csdn.net/weixin_44083579/article/details/140451591