linux - sudo -H -u git gitosis-init < ~/id_rsa.pub |错误 : no such file or directory

标签 linux git bash

I got this shell script from a blog about how to equip git with gitosis. But i got a "No such file or directory" error after running the script.

[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

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

  -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

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


附加评论:

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

 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

最佳答案

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

关于linux - sudo -H -u git gitosis-init < ~/id_rsa.pub |错误 : no such file or directory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37738829/

相关文章:

Git 等同于 hg update

bash - ssh无法在多个远程主机中运行脚本

linux - 使用 elasticbeanstalk 配置文件更改文件权限

java - Delphi xe5 exec root命令转换

linux - 打印缺失的单词和文件名 - linux

Git - 如何删除远程仓库中同名的两个文件夹之一

git - 我的 Git 对象包文件夹非常重(push --force 之后)

bash - 在 travis CI 上运行 sh 脚本 : The command exited with 1

linux - bash 脚本中的 z${variable} 和 zfalse 是什么意思?

linux - 基于文件大小的打开限制