[ 永远的UNIX::UNIX技术资料的宝库 ]   GB | BIG5

首页 > 编程技术 > C/C++ > 正文
Unix编程/应用问答中文版 ---1.系统管理配置问题
本文出自:http://www.nsfocus.com 维护:小四 (2002-10-17 06:02:00)
1.    系统管理配置问题 
1.1   如何给SUN工作站增加eeprom硬件口令保护 
1.2   如何增加交换空间 
1.3   为什么我不能在/home目录下创建子目录 
1.4   如何改变一台主机的locale 
1.5   Solaris 7自动注销 
1.6   一个目录拥有setgid设置,怎么理解 
1.7   非Sun Console上有无等价Stop-A的按键 
1.8   如何让一个用户只能ftp而无法telnet 
1.9 
1.10  为什么Sun工作站非要输入boot命令才能启动 
1.11  如何让Solaris识别新增加的硬件 
1.12 
-------------------------------------------------------------------------- 

1. 系统管理配置问题 

1.1 如何给SUN工作站增加eeprom硬件口令保护 

A: scz <scz@nsfocus.com> 

man -s 1M eeprom了解细节,要求当前是root身份 

# /usr/sbin/eeprom (显示当前eeprom配置) 

# /usr/sbin/eeprom security-mode=full ( 可选的有command, full, none) 

此时进入交互式设置口令过程,总共输入两次,如果两次口令输入不一致,则本次设 
置作废。成功设置之后除了go命令之外的其他ok状态下命令均需要口令,包括boot命 
令。 

设置成command时,同样进入交互式口令输入过程。此时,除了boot和go命令之外的 
其他ok状态下命令均需要口令。注意,如果仅仅输入boot命令,不需要口令,一旦 
boot命令后面带了参数,比如boot cdrom -s,同样需要输入口令。 

如果设置成none(缺省设置),表示去掉这种口令保护。 

# /usr/sbin/eeprom security-password= (等号后面无其他字符,直接回车) 

如果想改变前面设置的口令,用这条命令,同样是交互式输入过程。 

# /usr/sbin/eeprom security-#badlogins=3 (缺省是0) 

设置口令输入尝试次数。 

警告:如果设置了eeprom硬件保护口令而又忘记,会带来很多麻烦,务必小心。 

一个可行的设置办法是,安全模式设置到command而不是full,这样至少可以正常启 
动系统。于是只要记得root口令或者还有其他机会获得root权限(缓冲区溢出?),就 
可以通过设置安全模式为none而挽救回来。 

但是如果设置成full模式却忘记了eeprom口令,我想首先应该打电话给SUN的技术支 
持。如果出于某种理由你不想这样做,我不确认eeprom是否可以热插拔,先用一个无 
口令保护的eeprom启动系统,然后热插拔换上那个有口令保护的eeprom,然后用root 
权限抹去eeprom口令。 

1.2 如何增加交换空间 

A: WT <wt@server.domain.top> 

你无法改变分区大小,但是可以增加/删除交换文件,效果类似交换分区。下列命令 
在根目录下创建一个500MB的交换文件,名为swapfile 

# mkfile 500m /swapfile 

下列命令将使之生效 

# swap -a /swapfile 

现在你有了额外的500MB交换空间,为了每次重启后依旧有效,编辑/etc/vfstab文件 
增加如下行 

/swapfile - - swap - no - 

# swap -l 

这里"-l"意味着"list",显示所有交换空间。仔细阅读"swap"和"mkfile"的手册页。 

1.3 为什么我不能在/home目录下创建子目录 

Q: Solaris 7下,root身份,当我试图在/home目录下创建子目录时,系统拒绝,为 
   什么? 

A: mohansundarraj 

如果/etc/rc2.d/S74autofs脚本中automount(1M)守护进程已经mount了/home,就是 
这种现象,而这还是缺省安装后的情形。可以 

# /etc/init.d/autofs stop 
# umount /home 

然后你就可以用root身份在/home下创建子目录,增加文件了。为了永久取消autofs 
特性,可以将/etc/rc2.d/S74autofs脚本改名,并注释掉/etc/auto_home、 
/etc/auto_master两个文件中的入口点。 

SPARC/Solaris的缺省用户主目录是/export/home,而不是/home。 

1.4 如何改变一台主机的locale 

Q: 一台SPARC/Solaris 8运行在US locale环境中,现在我们想让它运行在 
   IE(Ireland) locale环境中,以便可以使用欧洲日期格式,怎么办? 

A: Sharad Ramachandran <estancio@hotmail.com> 

运行sys-unconfig,在此之前请man -s 1M sys-unconfig,:-) 

A: chad schrock <chad@radix.net> 

天啊,为了拍死一只苍蝇,你要引爆原子弹吗? 

只需要做如下操作,在你的.cshrc/.profile/.bashrc等启动脚本中设置$LANG环境变 
量的值为en_UK,注销,重新登录即可。为了使这个设置全局有效,修改 
/etc/default/init文件,LANG=en_UK,重启动。 

-------------------------------------------------------------------------- 
# @(#)init.dfl 1.2 92/11/26 

# This file is /etc/default/init.  /etc/TIMEZONE is a symlink to this file. 
# This file looks like a shell script, but it is not.  To maintain 
# compatibility with old versions of /etc/TIMEZONE, some shell constructs 
# (i.e., export commands) are allowed in this file, but are ignored. 

# Lines of this file should be of the form VAR=value, where VAR is one of 
# TZ, LANG, or any of the LC_* environment variables. 

TZ=GMT+8 
LANG=zh.GBK 
-------------------------------------------------------------------------- 

参看locale(1)和locale(5),了解更多关于locale的信息。运行"locale -a",查看 
当前系统所支持的所有locale。 

A: Sun Microsystems 2001-06-12 

有三种方式改变locale。首先用"locale -a"命令确认系统中已安装的locale 

1) 从CDE登录屏幕上修改locale 

选择 options -> languages -> choose the new locale 

注意,如果登录用户的初始化文件中有不同的locale设置,将优先于系统全局locale 
设置。 

2) 临时设置locale(shell相关的) 

ksh : LANG=<locale> 
sh  : LANG=<locale> 
      export LANG 
csh : setenv LANG <locale> 
bash: export LANG=en_US(zh.GBK) 

3) vi /etc/default/init 

增加如下内容 

LANG=<locale> 
LC_ALL=<locale> 

重启系统。 

运行"locale"命令确认改变生效。 

如果你希望使用的locale并未安装,参看如下文档安装locale 

Solaris 8  : <<International Language Environments Guide>> 

Solaris 7  : <<Solaris Internationalization Guide For Developers>> 

Solaris 2.6: <<Solaris Internationalization Guide for Developers>> 

D: scz <scz@nsfocus.com> 1998-08 

SPARC/Solaris 2.5下,为了在vi中正确看到中文需要设置环境变量 

sh 

LANG=C;export LANG 
LC_CTYPE=iso_8859_1;export LC_CTYPE 

csh 

setenv LANG zh 

关于设置LANG这个环境变量涉及到/usr/lib/locale下的目录权限。 

1.5 Solaris 7自动注销 

Q: 怎样设置才能30秒后自动注销 

A: shridhara 

不幸的是,Solaris对此没有什么好的支持。如果正在使用telnet会话,或许可以考 
虑"logout"变量,参看telnet的手册页。一个变通的办法,使用K-Shell,它支持 
TMOUT变量,用于指定非活动时限(以秒为单位)。比如,如果一个shell会话3分钟内 
不活动,则终止这个shell会话 

$ TMOUT=180;export TMOUT 

可以在用户的.profile文件中放置该行。缺点是你只能使用ksh。 

D: scz <scz@nsfocus.com> 

vi /etc/default/login 

# TIMEOUT sets the number of seconds (between 0 and 900) to wait before 
# abandoning a login session. 

TIMEOUT=180 

这里的超时设置针对登录过程,而不是登录成功后的shell会话超时设置。 

1.6 一个目录拥有setgid设置,怎么理解 

Q: 对一个目录做了setgid设置,可我并没有发现这和正常情况有什么区别 

A: John Riddoch <jr@scms.rgu.ac.uk> 

在这种目录下创建新文件时将采用setgid设置对应的属组,比如 

$ ls -ld b 
drwxrws---   2 jr       group     512 Mar 14 17:13 b/ 
$ touch b/a 
$ ls -l b/a 
-rw-------   1 jr       group       0 Mar 14 17:13 b/a 
$ id 
uid=178(jr) gid=10(staff) 

jr的缺省组是staff,而现在b/a文件属组是group。 

D: 小四 <scz@nsfocus.com> 

SPARC/Solaris 7下测试 

如果目录拥有SGID设置,那么该目录下新创建的文件将继承该目录的属组,而不是创 
建者所对应的GID。 

[root@ /export/home/scz]> id   
uid=0(root) gid=1(other)  <-- 注意当前用户的属组 
[root@ /export/home/scz]> mkdir groupsgid 
[root@ /export/home/scz]> ls -ld groupsgid 
drwxr-xr-x root other groupsgid/ 
[root@ /export/home/scz]> chown scz:users groupsgid 
[root@ /export/home/scz]> chmod g+s groupsgid 
[root@ /export/home/scz]> ls -ld groupsgid 
drwxr-sr-x scz users groupsgid/  <-- 目录拥有SGID设置 
[root@ /export/home/scz]> cd groupsgid/ 
[root@ /export/home/scz/groupsgid]> touch scz_0 
[root@ /export/home/scz/groupsgid]> ls -l scz_0 
-rw-r--r-- root users scz_0  <-- 注意属组变化 
[root@ /export/home/scz/groupsgid]> chmod g-s ../groupsgid/ 
[root@ /export/home/scz/groupsgid]> ls -ld ../groupsgid/ 
drwxr-xr-x scz users ../groupsgid/ 
[root@ /export/home/scz/groupsgid]> touch scz_1 
[root@ /export/home/scz/groupsgid]> ls -l scz_1 
-rw-r--r-- root other scz_1  <-- 注意属组变化 
[root@ /export/home/scz/groupsgid]> 

1.7 非Sun Console上有无等价Stop-A的按键 

A: neomilev 

如果是便携机,尝试alt/break 或者 ctrl/break。如果是vt100终端,尝试F11 或者 
break 

1.8 如何让一个用户只能ftp而无法telnet 

A: 小四 <cloudsky@263.net> 

修改该用户在/etc/passwd中的shell为/bin/false,在/etc/shells文件中增加 
/bin/false,此时,该用户只能ftp,telnet失败。 

1.10 为什么Sun工作站非要输入boot命令才能启动 

Q: 我有台Sun工作站,每次开机后停在ok状态下,需要手工输入boot命令才能启动, 
   现在想避免这种效果,怎么办 

A: /usr/sbin/eeprom auto-boot?=true 
   /usr/sbin/eeprom auto-boot?  <-- 查询 

A: dengdai@SMTH 

进入OBP状态 

ok setenv auto-boot? true 
ok setenv boot-device disk 

反之 

ok setenv auto-boot? false 

1.11 如何让Solaris识别新增加的硬件 

Q: 比如新增加了网卡、硬盘、光驱什么的,如何让Solaris意识到这种增加 

A: spp(低音炮) & suxm <suxm@gnuchina.org> 

有三种办法 

a. Stop-A进入OBP状态,输入boot -r 
b. sync(重复);reboot -- -r 
c. touch /reconfigure;sync(重复);reboot 

参看reboot(1M)、boot(1M)、eeprom(1M)、kernel(1M)、cfgadm(1M)、psradm(1M)手 
册页 

Q: 我新增加了一块硬盘,不想boot -r而立即生效,怎么办 

A: 老大 <willxu@public.cs.hn.cn> 2001-12-04 16:51 

直接将第二块硬盘接上去,然后顺序执行如下命令,不用重新启动机器 

modunload -i 0 
drvconfig(1M) 
devlinks(1M) 
disks(1M) 

如果需要重新格式化、分区、创建文件系统,就继续执行 

format(1M) 
newfs(1M)  (http://www.fanqiang.com)
    进入【UNIX论坛

相关文章
Unix编程/应用问答中文版 ---0.简介 Unix/C传奇问题 (2002-10-16 06:02:01)
 

★  樊强制作 欢迎分享  ★