终于开通了系里的小型机,登录后显示SunOS 5.9,查了一下,对应的是现在的Solaris 9这个版本的操作系统,据说这个机器花了十几万,不使用太可惜了。而且发现硬盘超大、CPU超多,哈哈,四个CPU。
相关信息可以用: psrinfo -v查看CPU, iostat -E查看硬盘信息。
今天去图书馆借了两本书,开工了,准备把它拿下,初步有几个打算:
(1)建立一个学生学习的WIKI或者BLOG;
(2)建立一个上传用的FTP;
(3)利用它来进行NS2仿真或者计算应该很好!
在学习中,发现solaris与linux还是有小小的差别,会在以后中慢慢列出来。
(1)Linux下,添加用户后,默认对应的用户目录在/home下,如/home/zz,而对应着Solaris下的/export/home。
Solaris的/home有着特殊的功能,主要用来做autofs,建议不要使用。我在home下建立目录,提示出错:
root@--help # mkdir fanzz
mkdir: 创建目录 "fanzz" 失败;操作不可应用
解决方法也可以,但如上所述,不建议如此使用:
# /etc/init.d/autofs stop
# umount /home
先停止autofs服务,然后umount即可。
先还是从用户管理来体验吧,可以查看/etc/passwd文件来找到用户相关信息;可以用usermod修改用户信息;
(2) useradd –D
用来查看用户添加用户时采取的默认设置,如用户根目录,即/home,在我的机器上显示:
root@--help # useradd -D
group=other,1 project=default,3 basedir=/home
skel=/etc/skel shell=/bin/sh inactive=0
expire= auths= profiles= roles=
用这个就是改默认目录的:
root@--help # useradd -D -b /tmp
group=other,1 project=default,3 basedir=/tmp
skel=/etc/skel shell=/bin/sh inactive=0
expire= auths= profiles= roles=
(3)用户和用户组的权限信息在/etc/passwd和etc/group下。
和每一个用户相关的有一个ID叫UID,必须小于2147483647,UID相当于用户的KEY。
UDI分配表:0~99用于root, daemon,bin,sys,etc是系统账号。其中root的UDI为0,daemon的UID=1。
(4)每个用户都有一个默认的工作环境设置,类似于DOS下的环境变量,其设置通常是在用户默认目录下的一个文件,如.login, .cshrc, .profile等。通常可以从/etc/skel/目录下拷贝local.cshrc, local.login, local.profile到用户的目录下。
#cp /etc/skel/local.cshrc /home/zz/.cshrc
#cp /etc/skel/local.login /home/zz/.login
#cp /etc/skel/local.profile /home/zz/.profile
然后相应进行修改。此时必须先为每一个用户初始化文件设置允许,即:
#chmod 744 /home/zz/.*
(5) 不知道做了什么操作,最后添加用户时,竟然不成功,显示错误:
UX: useradd: ERROR: Cannot update system files - login cannot be created.
在网上搜索,信息很少,但是berkeley大学的网站(http://compute.cnr.berkeley.edu/cgi-bin/man-cgi?useradd+1)显示一个权威说法,出现这种错误是因为/etc/passwd或者/etc/shadow不存在。
The following indicates that the /etc/passwd or /etc/shadow files do not exist: UX: roleadd: ERROR: Cannot update system files - login cannot be created.
但是实际上这两个文件存在,我只是试图修改它,但是提示说为只读文件。
尝试办法:
A. reboot机器,无效;
B. 用ls -l查看文件/etc/passwd文件的属性,显示:-r--r--r--,根据网上查询结果,用chmod修改其属性,即: chmod 744 /etc/passwd,chmod 744 /etc/shadow,仍然无效。
求解答案中…… [mailme] //最后知道是因为磁盘空间满,导致添加用户失效。
C. 继续查找,发现一个最接近的答案,首先用pwconv来检查口令文件的完整性,显示错误如下:
# pwconv
/usr/bin/pwconv: Unexpected failure. Conversion not done.
D. 又一个接近的答案,来自于maillist:
Hi guys, Looks like my / file system is corrupt and needs a good checking, so I will most probably take the machine down to single-user and check and reboot. This should fix it up. Suggestions were: 1. permissions on passwd and shadow files 2. full / file system 3. corrupt useradd file 4. missing files 5. truss -o /tmp/useradd.truss -f useradd xxxxxxxx (Good stuff!) |
上面的truss是用来trace系统调用的,-o表示跟踪结果输出到文件中,-f表示trace的对象,即在跟踪useradd失败时产生的错误信息。又在网上一阵狂搜,发现原因可能与上面第2点,即磁盘空间满了有关。按照网上提供的方法,用df - h查看,晕:
文件系统 大小 用了 可用 容量 挂接在 /dev/md/dsk/d0 14G 14G 17M 100% / /proc 0K 0K 0K 0% /proc mnttab 0K 0K 0K 0% /etc/mnttab fd 0K 0K 0K 0% /dev/fd swap 15G 168K 15G 1% /var/run swap 15G 32K 15G 1% /tmp /dev/md/dsk/d7 30G 8.3G 21G 29% /data1 /dev/md/dsk/d5 45G 5.5G 39G 13% /opt /dev/md/dsk/d8 38G 38M 37G 1% /data2 |
这个系统不知道多久没人用,可能又安装了一些数据库什么的,所以我用了没两天就这样。终于找到原因了,接下来就是考虑如何给磁盘瘦身了。