【问题标题】:sudo -H -u git gitosis-init < ~/id_rsa.pub | error: no such file or directorysudo -H -u git gitosis-init < ~/id_rsa.pub |错误:没有这样的文件或目录
【发布时间】:2016-06-10 02:01:56
【问题描述】:

我从一篇关于如何为 git 配备 gitosis 的博客中获得了这个 shell 脚本。 但是运行脚本后出现“没有这样的文件或目录”错误。

[git@209285 ~]$ sudo -H -u git gitosis-init < ~/id_rsa.pub
Traceback (most recent call last):
  File "/usr/local/bin/gitosis-init", line 9, in <module>
    load_entry_point('gitosis==0.2', 'console_scripts', 'gitosis-init')()
  File "/usr/local/lib/python2.7/site-packages/gitosis-0.2-py2.7.egg/gitosis/app.py", line 24, in run
    return app.main()
  File "/usr/local/lib/python2.7/site-packages/gitosis-0.2-py2.7.egg/gitosis/app.py", line 38, in main
    self.handle_args(parser, cfg, options, args)
  File "/usr/local/lib/python2.7/site-packages/gitosis-0.2-py2.7.egg/gitosis/init.py", line 138, in handle_args
    user=user,
  File "/usr/local/lib/python2.7/site-packages/gitosis-0.2-py2.7.egg/gitosis/init.py", line 75, in init_admin_repository
    template=resource_filename('gitosis.templates', 'admin')
  File "/usr/local/lib/python2.7/site-packages/gitosis-0.2-py2.7.egg/gitosis/repository.py", line 63, in init
    close_fds=True,
  File "/usr/local/lib/python2.7/subprocess.py", line 522, in call
    return Popen(*popenargs, **kwargs).wait()
  File "/usr/local/lib/python2.7/subprocess.py", line 710, in __init__
    errread, errwrite)
  File "/usr/local/lib/python2.7/subprocess.py", line 1335, in _execute_child
    raise child_exception
OSError: [Errno 2] No such file or directory

我很困惑,正如手册所说:

  -H          The -H (HOME) option sets the HOME environment variable to the homedir of the target user (root by default) as specified in passwd(5).  By default, sudo
           does not modify HOME (see set_home and always_set_home in sudoers(5)).

,引用自linux手册。

-H 选项只是将 HOME 环境变量设置为 passwd 中指定的目标用户的 homedir。

但是我在 /etc/passwd 文件中将“/home/git”指定为 git 用户的 homedir。

apache:x:48:48:Apache:/var/www:/sbin/nologin
git:x:100:101:git version control:/home/git:/bin/bash
duanduan:x:101:500::/home/duanduan:/bin/bash

但是为什么我仍然收到这条消息?还是我对手册中描述的理解不正确?


为 cmets 附加:

而且好像之前指定了一个绝对路径。也许,这不是原因。

 sudo -H -u git gitosis-init < /home/git/id_rsa.pub
Traceback (most recent call last):
  File "/usr/local/bin/gitosis-init", line 9, in <module>
    load_entry_point('gitosis==0.2', 'console_scripts', 'gitosis-init')()
  File "/usr/local/lib/python2.7/site-packages/gitosis-0.2-py2.7.egg/gitosis/app.py", line 24, in run
    return app.main()
  File "/usr/local/lib/python2.7/site-packages/gitosis-0.2-py2.7.egg/gitosis/app.py", line 38, in main
    self.handle_args(parser, cfg, options, args)
  File "/usr/local/lib/python2.7/site-packages/gitosis-0.2-py2.7.egg/gitosis/init.py", line 138, in handle_args
    user=user,
  File "/usr/local/lib/python2.7/site-packages/gitosis-0.2-py2.7.egg/gitosis/init.py", line 75, in init_admin_repository
    template=resource_filename('gitosis.templates', 'admin')
  File "/usr/local/lib/python2.7/site-packages/gitosis-0.2-py2.7.egg/gitosis/repository.py", line 63, in init
    close_fds=True,
  File "/usr/local/lib/python2.7/subprocess.py", line 522, in call
    return Popen(*popenargs, **kwargs).wait()
  File "/usr/local/lib/python2.7/subprocess.py", line 710, in __init__
    errread, errwrite)
  File "/usr/local/lib/python2.7/subprocess.py", line 1335, in _execute_child
    raise child_exception
OSError: [Errno 2] No such file or directory

【问题讨论】:

标签: linux git bash


【解决方案1】:

我猜是因为~在传递到sudo作为参数之前被bash扩展了,为什么不尝试为你的公钥文件指定一个绝对路径呢?

【讨论】:

  • 或者~git/id_rsa.pub,如果这是你想要的。你的问题不是很清楚。
  • 在指定绝对路径时似乎也像以前一样。也许这不是原因。 ```
猜你喜欢
  • 2015-05-12
  • 1970-01-01
  • 2018-03-09
  • 2017-01-22
  • 2014-12-06
  • 1970-01-01
  • 2022-06-14
  • 2017-09-19
  • 1970-01-01
相关资源
最近更新 更多