QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1855|回复: 6

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

[复制链接]
发表于 2011-9-30 00:36:05 | 显示全部楼层 |阅读模式
经确认,MI 安装过程新建的用户并不是权限问题无效,原用户提交 Bug 时描述不准确,曾经我们研究过如何在 MI 中安装过程新建的用户定义权限组别,但问题不在这里。我今天重装系统并在安装时建立的用户,在进入系统时发现这些用户没有生成,更谈不上用户权限了。 MI 界面新建的普通用户根本没有生成,所以在登录时就无法进入,当然安装完用 root 新建的用户是没问题的。
发表于 2011-9-30 09:48:01 | 显示全部楼层
好,我看看,如果有修复,我会回复的。
还有,,给我你新建本地用户的命令做参考。
回复

使用道具 举报

 楼主| 发表于 2011-9-30 10:46:18 | 显示全部楼层
原帖由 zy_sunshine 于 2011-9-30 09:48 发表
好,我看看,如果有修复,我会回复的。
还有,,给我你新建本地用户的命令做参考。

我建用户基本上没有考虑组别权限,有设置密码的用户默认就是普通桌面用户。
useradd user1 -p passwd1
回复

使用道具 举报

发表于 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
回复

使用道具 举报

 楼主| 发表于 2011-10-10 06:11:17 | 显示全部楼层
原帖由 zy_sunshine 于 2011-10-10 00:17 发表
这是从安装记录中看到的错误记录。
------------------------------------
更改用户 root 的口令 。
passwd: 所有的身份验证令牌已经成功更新。
useradd:未知的组 fuse
passwd: 未知的用户名称 'sunshine'。
---------- ...

在 MI 的 src/magic.installer/operations/accounts.py 中找到
  1. # add normal users
  2.         for (username, password, shell, homedir, realuid) in acclist:
  3.             cmd = '/usr/sbin/chroot %s /usr/sbin/useradd -s %s -d %s %s -G users,fuse,uucp %s' % \
  4.                   (tgtsys_root, shell, homedir, '%s', username)
  5.             if realuid == 'Auto':
  6.                 cmd = cmd % ''
  7.             else:
  8.                 cmd = cmd % ('-u %s' % realuid)
  9.             os.system(cmd)
  10.             password = password.replace("'", """'"'"'""") # escape ' to '"'"'
  11.             os.system("echo '%s' | /usr/sbin/chroot %s /usr/bin/passwd --stdin %s" % \
  12.                       (password, tgtsys_root, username))
  13.         return 0
复制代码
把这个 cmd 指令中的 fuse 组去掉应该就可以了,我找了一下,系统就是没有 fuse 组。
回复

使用道具 举报

 楼主| 发表于 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 编辑 ]
回复

使用道具 举报

 楼主| 发表于 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 建立普通用户失败的问题。
  1. for (username, password, shell, homedir, realuid) in acclist:
  2.             cmd = '/usr/sbin/chroot %s /usr/sbin/useradd -s %s -d %s %s -G users,uucp %s' % \
  3.                   (tgtsys_root, shell, homedir, '%s', username)
复制代码

[ 本帖最后由 haulm 于 2011-10-27 07:19 编辑 ]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-22 15:26 , Processed in 0.037728 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表