Debian 默认只有 Debian 用户,无 sudo,如何通过 su 来自动配置一些东西? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
DravenJohnson
V2EX    Linux

Debian 默认只有 Debian 用户,无 sudo,如何通过 su 来自动置一些东西?

  •  
  •   DravenJohnson
    Psiphon-Labs 2017-05-05 05:29:01 +08:00 10178 次点击
    这是一个创建于 3092 天前的主题,其中的信息可能已经有所发展或是发生改变。
    • 某 VPS 商提供的 VPS 只有 Debian 用户,root 默认是禁止的,通过证书登陆。
    • 默认没有安装 sudo,同时即使自己装好 sudo 也会提示说 Debian 不是 sudoers
    • 可以通过 su 来登陆进 root,但是需要输入密码

    现在我们希望通过自动化程序,最好 python,但也可以用 shell,来实现创建 VPS,这一步一句完成了,同时配置 VPS 以及安装内容。

    需要修改:

    • /etc/ssh/sshd_config
    • root 密码 需要安装:
    • 很多东西

    所以基本上第一步就是需要允许 root 登陆比较方便些。可是这样的非 sudoers 的 Debian 用户设置,如何操作呢?一个一个输入密码肯定不好,有没有办法自动输入密码的?

    第 1 条附言    2017-05-09 01:23:20 +08:00
    最终办法:
    用 #32 的办法 python ssh 连接机器,我们本来其实也是用的这个办法

    然后先传一个写好的名为 script.sh 的文件,里面有更新 `/etc/ssh/sshd_config` 里面允许 root 登陆,允许密码登陆以及修改 root 密码

    然后 python 中
    cmd = 'sh -c "sleep 1; echo 密码" | script -qc "su -c \'bash /home/debian/script.sh\' - root"
    ssh.exec_command(cmd)

    更新后 SSH 可以直接以修改过的统一密码进入 root,后面就可以安装 sudo 在此修改密码等所有操作就都没问题了
    36 条回复    2017-05-09 01:25:20 +08:00
    DravenJohnson
        1
    DravenJohnson  
    OP
       2017-05-05 05:30:34 +08:00
    TL;DR 主要就是想通过先用的情况下的一个 VPS,在这上面配置一些东西,包括安装软件,修改密码,修改 ssh 等等。
    zhs227
        2
    zhs227  
       2017-05-05 06:08:39 +08:00
    没用过 debian,其它几种 linux 的话,都是把用户添加到一个特定的用户组就可以了。ubuntu 是添加到 sudo 组,centOS 是添加到 wheel 组。
    网上流传各种修改 /etc/sudoers 的方式,不太推荐。
    还是建议通过普通帐号用 sudo,sudo 可以自己找包装上去。
    ryd994
        3
    ryd994  
       2017-05-05 08:01:29 +08:00
    写好脚本
    su -c
    只要输一次密码
    总之你至少得输一次吧
    ivmm
        4
    ivmm  
       2017-05-05 08:03:22 +08:00
    apt-get install sudo ???
    imn1
        5
    imn1  
       2017-05-05 08:16:27 +08:00
    su
    vi /etc/sudoers

    自己加进去就是了

    其实人家就是为了安全,就算别人“误”登入,不知道 root 密码也不能做太多
    lekai63
        6
    lekai63  
       2017-05-05 08:35:28 +08:00 via iPhone
    没人提 发 ticket 么?
    与其费脑子跟程序死磕,不如试试与人交流套套近乎。说不得就能勾搭上人家 boss 给你免了服务器的费用 23333
    yushiro
        7
    yushiro  
       2017-05-05 08:45:29 +08:00 via iPhone
    安装 sudo 之后,把当前用户加入 sudo 组,就可以用 sudo 了,不需要手动配置 sudoers
    xiaket
        8
    xiaket  
       2017-05-05 09:02:03 +08:00
    不建议直接改 /etc/sudoers, 建议将合适的配置文件放进 /etc/sudoers.d/目录.
    LokiSharp
        9
    LokiSharp  
       2017-05-05 09:14:09 +08:00
    su root
    gpasswd -a USER_NAME wheel

    不要修改 sudoers 不安全
    choury
        10
    choury  
       2017-05-05 09:15:44 +08:00 via Android
    把 debian 加到 sudo 组里面就行了
    DravenJohnson
        11
    DravenJohnson  
    OP
       2017-05-05 09:28:50 +08:00
    @lekai63 发了 Tickets 了,不过这个云服务商什么都没有,不报希望可以解决


    @zhs227
    @ryd994
    @ivmm
    @imn1
    @yushiro
    @xiaket
    @LokiSharp
    @choury

    同一回复一下吧,现在的问题就是不管怎么样都需要输入一次密码:
    不管是安装 用任何 apt-get install sudo 安装 sudo ;或者是很多人说的一样,加到 sudo 组;还是说的 su root

    都无法避免输入一次密码。我们现在是想要通过一个 python 或者 shell 自动化这个步骤。当然如果谁能说出来把密码加在 shell scipt 里面的办法也是可以的。

    原因很简单,我们第一次需要 provisioning 500 个 VPS。以后每天需要删除 + 创建不少于 50 个 VPS,如果这个简单步骤无法自动化的话,那么基本来说就无法使用了。
    choury
        12
    choury  
       2017-05-05 09:38:20 +08:00 via Android
    @DravenJohnson 搜索 sudo 免密码
    ysicing
        13
    ysicing  
       2017-05-05 09:38:25 +08:00
    好奇哪家的 VPS
    yinflying
        14
    yinflying  
       2017-05-05 09:49:15 +08:00
    为了安全,我也把自己的 vps 改成这个样子,root 禁用登陆,使用普通用户登陆,并且没有 sudo 权限。

    楼上的方法都可以,不过个人还是支持直接加到 wheel 组比较好。
    lazycat
        15
    lazycat  
       2017-05-05 09:50:41 +08:00 via Android
    试试 expect ?
    imn1
        16
    imn1  
       2017-05-05 09:50:44 +08:00
    @DravenJohnson
    1.sudoers 可以改成免密的,我 lapton 装 debian 第一件事就是做这个
    2.仍然建议保留现在方式,服务器上还是不免密好
    LokiSharp
        17
    LokiSharp  
       2017-05-05 09:52:24 +08:00
    @DravenJohnson 既然你是 500 VPS 的大用户,你有权力发 Tickets 要求服务提供商为你修改配置脚本。
    嘛,一般来说服务商都会提供 API 文档让你开发自动部署脚本比如说腾讯云和阿里云的修改密码 API https://www.qcloud.com/document/api/213/1245
    https://help.aliyun.com/document_detail/25503.html?spm=5176.doc25485.6.835.jWnaII
    如果连 API 文档都没有的话。。。建议换一家服务商
    CRVV
        18
    CRVV  
       2017-05-05 09:59:22 +08:00 via Android
    man sudoers
    搜索 password
    另外,改配置要用 visudo
    ryd994
        19
    ryd994  
       2017-05-05 10:05:42 +08:00
    你们都想复杂了:
    echo password | su -c script.sh

    还有,这样的大客户,要求 provision 的时候带公钥真不难。大点的云服务商,比如 AWS,DO,包括 Vultr 都是可以的。
    不能注入公钥的服务商,窃以为技术水平不行,不值得用。
    fuxkcsdn
        20
    fuxkcsdn  
       2017-05-05 10:12:45 +08:00
    @ryd994 这命令在 bash 里输入会出现 su: must be run from a terminal 错误

    BTW,大客户要求定制化镜像应该很容易的
    DravenJohnson
        21
    DravenJohnson  
    OP
       2017-05-05 11:25:22 +08:00
    @ryd994 对,会有 20 楼说的那种情况。这个服务商很奇怪,注入公钥了,但是没有 sudo,所以 su 还是需要输入密码,很头疼

    @fuxkcsdn 其实不容易,主要是因为这个服务商比较奇葩。

    @CRVV 这些东西都没办法很好的通过一个 script 完成,尤其是 visudo 的时候系统需要提示输入密码的那个情况

    @LokiSharp 唉,这个 VPS 公司太小了,感觉没人愿意搞。他们的母公司是做服务器托管的,倒是挺大,欧洲和北美可能有近 15 个数据中心。但是 VPS 这个是个新项目,没有自定义镜像,没有 Snapshot,API 的创建还是个坏的,只能开机关机什么的。
    fuxkcsdn
        22
    fuxkcsdn  
       2017-05-05 11:31:29 +08:00
    看看 vps 是否默认有安装 expect
    或者尝试下 apt-get install expect 看需不需要密码,如果不需要的话,那一切就好办,需要的话就真无解了
    ryd994
        23
    ryd994  
       2017-05-05 11:41:44 +08:00
    @DravenJohnson
    @fuxkcsdn
    我在 centos 上测试没有问题
    试试 ssh -tt 还有 getty
    terminal 的话总是有办法造的
    araraloren
        24
    araraloren  
       2017-05-05 12:38:11 +08:00
    这种自动化交互,我第一时间想到的就是
    expect
    7654
        25
    7654  
       2017-05-05 12:46:19 +08:00
    这么大的量,为什么不定制 VPS 模版镜像呢
    Osk
        26
    Osk  
       2017-05-05 13:03:06 +08:00 via Android
    LANG=C expect -c 'spawn su -c /script; expect "Password:"; send "yourpass\n"; interact'
    Showfom
        27
    Showfom  
    PRO
       2017-05-05 13:22:23 +08:00
    su -i
    输入密码
    然后就变成 root 了
    再 apt-get install sudo
    Showfom
        28
    Showfom  
    PRO
       2017-05-05 13:26:31 +08:00
    @Showfom 说错了,直接 su 这个命令就行

    楼上的朋友们是多久没用 iso 装 Debian 8 了

    老早以前他默认就不带 sudo 了,都得自己装,服务商的话得看自己的模板优化,比如 Google Cloud 还有 Linode 这些都是会给你装好的,要是傻乎乎的什么都没有装那自然就没了

    楼主的情况应该是,你用 ssh key 登陆,但是没有给你 debian 默认用户的密码,所以你可以去控制面板找找有没有给你 debian 默认用户的密码,没有的话就去怼客服吧,要他们改模板去。
    Showfom
        29
    Showfom  
    PRO
       2017-05-05 13:27:27 +08:00   1
    或者还有一种迂回的方案,要是控制台里你可以找到 root 密码,那么用 console 进去,然后 root 登陆安装下 sudo 呗
    LokiSharp
        30
    LokiSharp  
       2017-05-05 13:38:25 +08:00
    @Showfom #29 问题是他有 500 台机器要配置。
    目测他的 vps 没有装 expect,在没有 expect 的情况下 如何配置能自动输密码的自动化脚本
    Showfom
        31
    Showfom  
    PRO
       2017-05-05 13:50:06 +08:00
    @LokiSharp 所以应该找服务商去解决而不是来 V2EX 提问
    v2exchen
        32
    v2exchen  
       2017-05-05 13:52:33 +08:00
    用 python ssh 登录,模拟人机交互。https://my.oschina.net/u/142602/blog/191822
    realpg
        33
    realpg  
    PRO
       2017-05-05 17:03:28 +08:00
    redhat 工程师配出来的 debian/ubuntu 就这样……
    sylecn
        34
    sylecn  
       2017-05-06 18:26:42 +08:00 via Android
    装好 sudo 之后,可以配置某个(些)用户免密码使用 sudo。不在电脑前,不记得具体的格式了。在配置时要加一个 NOPASS 之类的参数。
    DravenJohnson
        35
    DravenJohnson  
    OP
       2017-05-09 00:19:13 +08:00
    @Showfom 这个服务商非常高傲,基本来说不管。主要 VPS 也是他们的副业可能。
    DravenJohnson
        36
    DravenJohnson  
    OP
       2017-05-09 01:25:20 +08:00
    @7654
    @CRVV
    @LokiSharp
    @Osk
    @Showfom
    @araraloren
    @choury
    @fuxkcsdn
    @imn1

    感谢所有回复,已经基本解决了,最后写个脚本然后一行 python 代码解决,更新一些 python 的代码就可以完全自动化了,谢谢个人。具体办法已经 Append 欢迎借鉴
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2889 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 50ms UTC 00:24 PVG 08:24 LAX 17:24 JFK 20:24
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86