haulm 发表于 2011-9-30 00:36:05

sunshine,关于 MI 过程新建普通用户无效的问题

经确认,MI 安装过程新建的用户并不是权限问题无效,原用户提交 Bug 时描述不准确,曾经我们研究过如何在 MI 中安装过程新建的用户定义权限组别,但问题不在这里。我今天重装系统并在安装时建立的用户,在进入系统时发现这些用户没有生成,更谈不上用户权限了。 MI 界面新建的普通用户根本没有生成,所以在登录时就无法进入,当然安装完用 root 新建的用户是没问题的。

zy_sunshine 发表于 2011-9-30 09:48:01

好,我看看,如果有修复,我会回复的。
还有,,给我你新建本地用户的命令做参考。

haulm 发表于 2011-9-30 10:46:18

原帖由 zy_sunshine 于 2011-9-30 09:48 发表 http://forum.linuxfans.org/images/common/back.gif
好,我看看,如果有修复,我会回复的。
还有,,给我你新建本地用户的命令做参考。
我建用户基本上没有考虑组别权限,有设置密码的用户默认就是普通桌面用户。
useradd user1 -p passwd1

zy_sunshine 发表于 2011-10-10 00:17:57

这是从安装记录中看到的错误记录。
------------------------------------
更改用户 root 的口令 。
passwd: 所有的身份验证令牌已经成功更新。
useradd:未知的组 fuse
passwd: 未知的用户名称 'sunshine'。
--------------------------------------
最后两句,一句是 useradd 时的错误记录,一句是 passwd 的错误记录
因为系统中不存在fuse用户组,所以useradd失败了。
如果有fuse用户组,那么添加用户就正常了。

系统添加用户的完整命令是

/usr/sbin/chroot /tmpfs/tgtsys/ /usr/sbin/useradd -s /bin/sh -d /home/sunshine <realuid> -G users,uucp sunshine

haulm 发表于 2011-10-10 06:11:17

原帖由 zy_sunshine 于 2011-10-10 00:17 发表 http://forum.linuxfans.org/images/common/back.gif
这是从安装记录中看到的错误记录。
------------------------------------
更改用户 root 的口令 。
passwd: 所有的身份验证令牌已经成功更新。
useradd:未知的组 fuse
passwd: 未知的用户名称 'sunshine'。
---------- ...
在 MI 的 src/magic.installer/operations/accounts.py 中找到 # add normal users
      for (username, password, shell, homedir, realuid) in acclist:
            cmd = '/usr/sbin/chroot %s /usr/sbin/useradd -s %s -d %s %s -G users,fuse,uucp %s' % \
                  (tgtsys_root, shell, homedir, '%s', username)
            if realuid == 'Auto':
                cmd = cmd % ''
            else:
                cmd = cmd % ('-u %s' % realuid)
            os.system(cmd)
            password = password.replace("'", """'"'"'""") # escape ' to '"'"'
            os.system("echo '%s' | /usr/sbin/chroot %s /usr/bin/passwd --stdin %s" % \
                      (password, tgtsys_root, username))
      return 0把这个 cmd 指令中的 fuse 组去掉应该就可以了,我找了一下,系统就是没有 fuse 组。

haulm 发表于 2011-10-10 06:32:20

FUSE,用户空间文件系统,一时理解不了,大概一些软件需要这个功用和组别。
所以增加一个用户和组别
# add normal users
os.system('useradd fuse -s /sbin/noglogin')
但是在VBOX下测试,用户没有生成,连fuse都没生成。
我用 scons src 执行了一次,不知道 src 的修改怎样才生效。
没能搞定,普通用户那一节不起作用。

[ 本帖最后由 haulm 于 2011-10-10 08:38 编辑 ]

haulm 发表于 2011-10-27 07:10:42

简单地把建立普通用户中的 fuse 组去掉了,可能还有一个办法就时重新编译 fuse 组件并在脚本中建立 fuse 组。
os.system('/usr/sbin/chroot %s /usr/sbin/useradd fuse -s /sbin/noglogin') 这句我添加进去的,无效,我怀疑是不是画蛇添足加了 -s /sbin/noglogin,所以改成 os.system('/usr/sbin/chroot %s /usr/sbin/groupadd fuse'),还没测试过,不过直接去掉普通用户的 fuse 组的确解决了 MI 建立普通用户失败的问题。for (username, password, shell, homedir, realuid) in acclist:
            cmd = '/usr/sbin/chroot %s /usr/sbin/useradd -s %s -d %s %s -G users,uucp %s' % \
                  (tgtsys_root, shell, homedir, '%s', username)

[ 本帖最后由 haulm 于 2011-10-27 07:19 编辑 ]
页: [1]
查看完整版本: sunshine,关于 MI 过程新建普通用户无效的问题