AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1232669
Accepted
mpb
mpb
Asked: 2020-04-29 16:40:34 +0800 CST2020-04-29 16:40:34 +0800 CST 2020-04-29 16:40:34 +0800 CST

“/bin/login -p --”中的“--”是什么意思?

  • 772

当我通过文本控制台登录 Ubuntu 时,我可以看到一个/bin/login进程是我的 shell 的父进程。 login运行如下:/bin/login -p --. 这可以在下面看到:

$ ps -f -C login
UID          PID    PPID  C STIME TTY          TIME CMD
root         780       1  0 Apr27 tty2     00:00:00 /bin/login -p --

我的问题是,最后一个--论点的意义是什么?手册页中未记录此参数login。

login
  • 2 2 个回答
  • 693 Views

2 个回答

  • Voted
  1. Best Answer
    steeldriver
    2020-04-29T16:59:56+08:002020-04-29T16:59:56+08:00

    其他答案已经描述了--意味着什么(选项处理结束)。在这里,我将尝试回答它是如何以及为什么在基于 TTY 的/bin/login过程中出现的。

    具体来说,如果您查看该[Service]部分,/lib/systemd/system/[email protected]您应该会看到以下ExecStart行:

    ExecStart=-/sbin/agetty -o '-p -- \\u' --noclear %I $TERM
    

    添加的原因--记录在man agetty:

    SECURITY NOTICE
           If  you  use  the --login-program and --login-options options, be aware
           that a malicious user may try to enter lognames with embedded  options,
           which then get passed to the used login program.  Agetty does check for
           a leading "-" and makes sure the logname gets passed as  one  parameter
           (so embedded spaces will not create yet another parameter), but depend‐
           ing on how the login binary parses the command line that might  not  be
           sufficient.   Check  that  the used login program cannot be abused this
           way.
    
           Some  programs use "--" to indicate that the rest  of  the  commandline
           should not be interpreted as options.  Use this feature if available by
           passing "--" before the username gets passed by \u.
    
    • 1
  2. Charles Green
    2020-04-29T16:54:52+08:002020-04-29T16:54:52+08:00

    由于我不能将其标记为非 AksUbuntu 堆栈交换站点的副本…… 我无耻地复制了这个答案。

    在man bash我们可以阅读Shell 内置命令部分:

    除非另有说明,否则本节中记录的每个内置命令都是接受选项,前面有-accept-- 表示选项的结束。

    , :,true和builtins 不接受选项并且不进行false特殊处理。, , , ,和builtins 接受和处理以开头的参数而不需要. 其他接受参数但未指定为接受选项的内置函数将以无效选项开头的参数解释为无效选项,并要求阻止这种解释。test--exitlogoutbreakcontinueletshift------

    请注意,这echo并不--意味着选项的结束。

    还

    --更准确地说,在大多数 bash 内置命令和许多其他命令中使用双破折号 ( ) 来表示命令选项的结束,之后只接受位置参数。

    使用示例:假设您要 grep 字符串的文件-v- 通常-v将被视为反转匹配含义的选项(仅显示不匹配的行),但--您可以像这样 grep 字符串-v:

    grep -- -v file
    
    • 0

相关问题

  • 在登录屏幕上自动选择用户

  • 在哪里可以找到适用于 Ubuntu 的 Novell NetWare 客户端?

  • gdm登录屏幕中的名称顺序存储在哪里?[复制]

  • xubuntu 中没有其他用户的面板

  • 登录失败并显示低图形然后崩溃?[关闭]

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve