1
0
mirror of https://github.com/directorz/mailfull-go.git synced 2025-12-17 01:27:01 +00:00

Set permission/owner/group when creating files or directories #3

This commit is contained in:
teru
2016-08-11 16:04:25 +09:00
parent a12ba9d8cc
commit d3b125132b
7 changed files with 49 additions and 13 deletions

View File

@@ -184,7 +184,7 @@ func (r *Repository) AliasDomainRemove(aliasDomainName string) error {
// writeAliasDomainsFile writes a AliasDomain slice to the file.
func (r *Repository) writeAliasDomainsFile(aliasDomains []*AliasDomain) error {
file, err := os.OpenFile(filepath.Join(r.DirMailDataPath, FileNameAliasDomains), os.O_RDWR|os.O_TRUNC, 0666)
file, err := os.OpenFile(filepath.Join(r.DirMailDataPath, FileNameAliasDomains), os.O_RDWR|os.O_TRUNC, 0600)
if err != nil {
return err
}

View File

@@ -227,7 +227,7 @@ func (r *Repository) writeAliasUsersFile(domainName string, aliasUsers []*AliasU
return ErrInvalidDomainName
}
file, err := os.OpenFile(filepath.Join(r.DirMailDataPath, domainName, FileNameAliasUsers), os.O_RDWR|os.O_TRUNC, 0666)
file, err := os.OpenFile(filepath.Join(r.DirMailDataPath, domainName, FileNameAliasUsers), os.O_RDWR|os.O_TRUNC, 0600)
if err != nil {
return err
}

View File

@@ -77,7 +77,7 @@ func (r *Repository) CatchAllUserSet(domainName string, catchAllUser *CatchAllUs
return ErrUserNotExist
}
file, err := os.OpenFile(filepath.Join(r.DirMailDataPath, domainName, FileNameCatchAllUser), os.O_RDWR|os.O_TRUNC, 0666)
file, err := os.OpenFile(filepath.Join(r.DirMailDataPath, domainName, FileNameCatchAllUser), os.O_RDWR|os.O_TRUNC, 0600)
if err != nil {
return err
}
@@ -100,7 +100,7 @@ func (r *Repository) CatchAllUserUnset(domainName string) error {
return ErrDomainNotExist
}
file, err := os.OpenFile(filepath.Join(r.DirMailDataPath, domainName, FileNameCatchAllUser), os.O_RDWR|os.O_TRUNC, 0666)
file, err := os.OpenFile(filepath.Join(r.DirMailDataPath, domainName, FileNameCatchAllUser), os.O_RDWR|os.O_TRUNC, 0600)
if err != nil {
return err
}

View File

@@ -64,6 +64,9 @@ func (r *Repository) generateDbDomains(md *MailData) error {
if err != nil {
return err
}
if err := dbDomains.Chown(r.uid, r.gid); err != nil {
return err
}
defer dbDomains.Close()
for _, domain := range md.Domains {
@@ -86,6 +89,9 @@ func (r *Repository) generateDbDestinations(md *MailData) error {
if err != nil {
return err
}
if err := dbDestinations.Chown(r.uid, r.gid); err != nil {
return err
}
defer dbDestinations.Close()
for _, domain := range md.Domains {
@@ -141,6 +147,9 @@ func (r *Repository) generateDbMaildirs(md *MailData) error {
if err != nil {
return err
}
if err := dbMaildirs.Chown(r.uid, r.gid); err != nil {
return err
}
defer dbMaildirs.Close()
for _, domain := range md.Domains {
@@ -159,6 +168,9 @@ func (r *Repository) generateDbLocaltable(md *MailData) error {
if err != nil {
return err
}
if err := dbLocaltable.Chown(r.uid, r.gid); err != nil {
return err
}
defer dbLocaltable.Close()
for _, domain := range md.Domains {
@@ -180,6 +192,9 @@ func (r *Repository) generateDbForwards(md *MailData) error {
if err != nil {
return err
}
if err := dbForwards.Chown(r.uid, r.gid); err != nil {
return err
}
defer dbForwards.Close()
for _, domain := range md.Domains {
@@ -213,6 +228,9 @@ func (r *Repository) generateDbPasswords(md *MailData) error {
if err != nil {
return err
}
if err := dbPasswords.Chown(r.uid, r.gid); err != nil {
return err
}
defer dbPasswords.Close()
for _, domain := range md.Domains {

View File

@@ -116,26 +116,38 @@ func (r *Repository) DomainCreate(domain *Domain) error {
domainDirPath := filepath.Join(r.DirMailDataPath, domain.Name())
if err := os.Mkdir(domainDirPath, 0777); err != nil {
if err := os.Mkdir(domainDirPath, 0700); err != nil {
return err
}
if err := os.Chown(domainDirPath, r.uid, r.gid); err != nil {
return err
}
usersPasswordFile, err := os.Create(filepath.Join(domainDirPath, FileNameUsersPassword))
usersPasswordFile, err := os.OpenFile(filepath.Join(domainDirPath, FileNameUsersPassword), os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0600)
if err != nil {
return err
}
if err := usersPasswordFile.Chown(r.uid, r.gid); err != nil {
return err
}
usersPasswordFile.Close()
aliasUsersFile, err := os.Create(filepath.Join(domainDirPath, FileNameAliasUsers))
aliasUsersFile, err := os.OpenFile(filepath.Join(domainDirPath, FileNameAliasUsers), os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0600)
if err != nil {
return err
}
if err := aliasUsersFile.Chown(r.uid, r.gid); err != nil {
return err
}
aliasUsersFile.Close()
catchAllUserFile, err := os.Create(filepath.Join(domainDirPath, FileNameCatchAllUser))
catchAllUserFile, err := os.OpenFile(filepath.Join(domainDirPath, FileNameCatchAllUser), os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0600)
if err != nil {
return err
}
if err := catchAllUserFile.Chown(r.uid, r.gid); err != nil {
return err
}
catchAllUserFile.Close()
return nil

View File

@@ -255,7 +255,7 @@ func InitRepository(rootPath string) error {
fi, err = os.Stat(c.DirMailDataPath)
if err != nil {
if err.(*os.PathError).Err == syscall.ENOENT {
if err = os.Mkdir(c.DirMailDataPath, 0777); err != nil {
if err = os.Mkdir(c.DirMailDataPath, 0700); err != nil {
return err
}
} else {
@@ -280,7 +280,7 @@ func InitRepository(rootPath string) error {
}
}
aliasDomainsFile, err := os.Create(aliasDomainsFileName)
aliasDomainsFile, err := os.OpenFile(aliasDomainsFileName, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0600)
if err != nil {
return nil
}

12
user.go
View File

@@ -272,7 +272,10 @@ func (r *Repository) UserCreate(domainName string, user *User) error {
filepath.Join(userDirPath, "Maildir/tmp"),
}
for _, dirName := range dirNames {
if err := os.Mkdir(dirName, 0777); err != nil {
if err := os.Mkdir(dirName, 0700); err != nil {
return err
}
if err := os.Chown(dirName, r.uid, r.gid); err != nil {
return err
}
}
@@ -359,7 +362,7 @@ func (r *Repository) writeUsersPasswordFile(domainName string, hashedPasswords m
}
sort.Strings(keys)
file, err := os.OpenFile(filepath.Join(r.DirMailDataPath, domainName, FileNameUsersPassword), os.O_RDWR|os.O_TRUNC, 0666)
file, err := os.OpenFile(filepath.Join(r.DirMailDataPath, domainName, FileNameUsersPassword), os.O_RDWR|os.O_TRUNC, 0600)
if err != nil {
return err
}
@@ -383,10 +386,13 @@ func (r *Repository) writeUserForwardsFile(domainName, userName string, forwards
return ErrInvalidUserName
}
file, err := os.Create(filepath.Join(r.DirMailDataPath, domainName, userName, FileNameUserForwards))
file, err := os.OpenFile(filepath.Join(r.DirMailDataPath, domainName, userName, FileNameUserForwards), os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0600)
if err != nil {
return err
}
if err := file.Chown(r.uid, r.gid); err != nil {
return err
}
defer file.Close()
for _, forward := range forwards {