fix: userdata not executable due to umask

This commit is contained in:
Qiu Jian
2024-04-15 17:19:16 +08:00
parent 24d57b02f8
commit 060140a64d
4 changed files with 42 additions and 24 deletions
+2 -2
View File
@@ -54,7 +54,7 @@ func (d *sLinuxRootFs) deployUserDataByCron(userData string) error {
if err != nil {
return errors.Wrap(err, "chmod user_data fail")
}
cron := fmt.Sprintf("@reboot %s\n", userDataPath)
cron := fmt.Sprintf("@reboot /bin/sh %s\n", userDataPath)
err = d.rootFs.FilePutContents(userDataCronPath, cron, false, false)
if err != nil {
return errors.Wrap(err, "save user_data cron fail")
@@ -89,7 +89,7 @@ func (d *sLinuxRootFs) deployUserDataBySystemd(userData string) error {
}
}
{
err := d.installInitScript(serviceName, scriptPath)
err := d.installInitScript(serviceName, "/bin/sh "+scriptPath)
if err != nil {
return errors.Wrap(err, "installInitScript")
}
+29
View File
@@ -0,0 +1,29 @@
// Copyright 2019 Yunion
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package sshpart
import "yunion.io/x/log"
type ISSHClient interface {
Run(cmds ...string) ([]string, error)
}
type sFakeSshClient struct {
}
func (c *sFakeSshClient) Run(cmds ...string) ([]string, error) {
log.Debugf("run cmds: %s", cmds)
return []string{}, nil
}
+2 -2
View File
@@ -37,7 +37,7 @@ import (
)
type SSHPartition struct {
term *ssh.Client
term ISSHClient // *ssh.Client
partDev string
mountPath string
isLVM bool
@@ -45,7 +45,7 @@ type SSHPartition struct {
var _ fsdriver.IDiskPartition = &SSHPartition{}
func NewSSHPartition(term *ssh.Client, partDev string, isLVM bool) *SSHPartition {
func NewSSHPartition(term ISSHClient, partDev string, isLVM bool) *SSHPartition {
p := new(SSHPartition)
p.term = term
p.partDev = partDev
+9 -20
View File
@@ -14,46 +14,35 @@
package sshpart
// TODO: rewrite this test
/*
import (
//"syscall"
"testing"
"yunion.io/x/log"
"yunion.io/x/onecloud/pkg/cloudcommon/sshkeys"
"yunion.io/x/onecloud/pkg/hostman/guestfs/fsdriver"
"yunion.io/x/onecloud/pkg/util/ssh"
"yunion.io/x/onecloud/pkg/hostman/hostdeployer/apis"
)
var defaultSSHClient *ssh.Client
var defaultSSHClient ISSHClient
func init() {
var err error
defaultSSHClient, err = ssh.NewClient("192.168.0.254", 22, "root", "oYA79tAcs4A1X4uT", "")
if err != nil {
log.Fatalf("Connect to ssh client error: %v", err)
}
defaultSSHClient = &sFakeSshClient{}
}
func TestNewSSHPartition(t *testing.T) {
dev := NewSSHPartition(defaultSSHClient, "/dev/sda2")
//err := dev.Mount()
//if err != nil {
//t.Errorf("Mount error: %v", err)
//return
//}
//defer func() { dev.Unmount() }()
dev := NewSSHPartition(defaultSSHClient, "/dev/sda2", false)
log.Infof("%v", dev.Exists("/", false))
log.Infof("%v", dev.Exists("/etc/", false))
log.Infof("%v", dev.ListDir("/", false))
dev.Mkdir("/tmp/test123", 0777, false)
dev.Chmod("/", 0777, false)
dev.FilePutContents("/tmp/test123/content", "test1234\nhhhh", true, false)
pubkeys := &sshkeys.SSHKeys{
pubkeys := &apis.SSHKeys{
PublicKey: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCz0BLJD+xXYd3AP26uFs42mQSoznPew6gC84P9eUEAJHdkT/8WqTJV0z9M8ZU+8UbuR3iTSbblatrZepPkU2KkvE9ZkFftCIGCWCgvRWFfrDdMF1jwGYtKDg1xVxCmxzTgR+NCuE7HIyDsNL/IKbIVH6QMCxwAIdxHrAT4WdVvkDrD5ihSmIMgnmbCSidok8N7l9zECN54EccV3LGaABumtO5Y7Um7HRm+gdc6esg3HTkIXW402w92zaeHaqm4EGek/FB24WhIcwSErMhXnnHPoAATNzWD+3RQZo2po+95FE/oZw7QO7hG9lWmCDYpJNim+Ix35ftYs1j1S4hray3z lzx@lzx-t470p",
}
err := fsdriver.DeployAuthorizedKeys(dev, "/home/cloudroot", pubkeys, true)
err := fsdriver.DeployAuthorizedKeys(dev, "/home/cloudroot", pubkeys, true, false)
if err != nil {
log.Errorf("Deploy keys error: %v", err)
}
}*/
}