??xml version="1.0" encoding="utf-8" standalone="yes"?>
单的讲述一下cygwin的安装和配置Q入门教程Q还请各位一二?br>
首先到http://www.cygwin.com 下蝲setup.exe?..exe攑ֈ此目录,
点击q行QNext->
选Install from InternetQNext->
填写Root DirectoryQ如X:\cygwinQNext->
填写Local Package DirectoryQ如X:\cygwin\ftpQNext->
选Direct ConnectionQNext->
选一个较快的ftpQNext->
C关键步骤Q如果仅惛_装基本系l,直接NextQ如果想完整安装Q则点击All旁边的旋转状图标Q将Default切换至InstallQ如果和我一P仅想在命令行下写写程序,则只要将 gcc、make{开发工具选上Q还有openssh{;选好后,Next->
开始下载,Take a coffee break。回来后QNext->
选择需不需要创建快h式?>END
点击快捷方式或X:\cygwin\cygwin.bat打开控制収ͼ如果是域用户Q按照提Cmakepasswd和makegroup卛_。下面说一些简单的调整和配|?br>
一、ssh的安?br>
cygwin自带的控制台可调参数很少Q舒适度较低。有没有办法用熟悉的putty或secureCRT来操控cygwin呢?办法有二:
1、用puttycyg。cygwin bash shell能做的,puttycyg基本上都能实玎ͼ本地操作的话Q极力推荐这Ƒ֥软g?br>
2、安装sshdQ然后本机登陆。如果安装时已选择opensshQ按照下面的操作l箋。如果忘了安装,点击setup.exeQ选上opensshQ再装一ơ即可?br>
a、右?#8220;我的电脑”->属?>高->环境变量Q在pȝ环境变量里添加变量CYGWINQgؓnetsec ttyQ然后在Path里追加X:\cygwin\bin
b、打开cygwin控制収ͼ输入ssh-host-configQ一路yesQ提CCYGWIN值时Q输入netsec tty
c、启动sshd服务? net start sshd ?cygrunsrv --start sshd; 停止sshd服务?net stop sshd ?cygrunsrv --stop sshd
d、用ssh yourname@127.0.0.1 ?ssh localhost登陆
e、还可以l箋安装配置sftp、scp{,׃l说?br>
f、每ơ输入密码登陆太ȝQ可以用key验证: 用puttygen.exe生存密钥对,然后在~/下,建立.ssh目录Q创建authorized_keys2文gQ将公钥复制到这个文Ӟ然后在putty里指定私钥登陆,一x逸?br>
二、vim的简单配|?br>
\usr\share\vim\vim64目录下的vimrc_example.vim复制到~/Q重命名为_vimrcQ?按照自己的喜好修攚w面的配置卛_Q如打开高亮Q选择喜欢的colorscheme
三、cygwin的中文显C和输入
让bash命o行支持中文输入,vi ~/.inputrcQ将下面几行的注释去?
set meta-flag on
set convert-meta off
set input-meta on
set output-meta on
让ls命o支持中文昄Qvi ~\.bashrc中,修改:
alias ls='ls -hF --show-control-chars --color=tty'
vim64的话Q已l支持中文输入?br>
四、sdcv的安装配|?br>
坐在电脑前久了,屏幕太亮Q辐大Q对w体不好。能不能在全黑的命名行模式下工作和学习呢Qputty可以很好的全屏幕昄Qsdcv则可以让你在命o行模式查扑֍词?br>
安装: 到stardict主页下蝲sdcv和想要的字典Q编译安装后Q将字典解压Q放?usr/share/startdict/dic目录
使用: sdcv wordQ就q么单。小技? 可以在~/.bashrc里alias sdld='sdcv -u langdao'{等Q这样可以避免词典太多,直接sdld word可以用郎道字典查询?br>
我在q程W2k上装了一炚w题也没有Q就像是一台LINUX服务器,哈哈Q通过命o行管理,爽啊
]]>
cygwin是一个在windowsq_上运行的unix模拟环境Q是cygnus solutions公司开发的自由软gQ该公司开发了很多好东西,著名的还有eCosQ不q现已被Redhat收购Q。它对于学习unix/linux操作环境Q或者从unix到windows的应用程序移植,或者进行某些特D的开发工作,其是用gnu工具集在windows上进行嵌入式pȝ开发,非常有用。随着嵌入式系l开发在国内日渐行Q越来越多的开发者对cygwin产生了兴?br>
cygnus当初首先把gccQgdbQgas{开发工兯行了改进Q他们能够生成q解释win32的目标文件。然后,他们要把q些工具UL到windowsq_上去。一U方案是Zwin32 api对这些工L源代码进行大q修改,q样做显焉要大量工作。因此,他们采取了一U不同的Ҏ——他们写了一个共享库(是cygwin dll)Q把win32 api中没有的unix风格的调用(如fork,spawn,signals,select,sockets{)装在里面,也就是说Q他们基于win32 api写了一个unixpȝ库的模拟层。这P只要把这些工L源代码和q个׃n库连接到一P可以用unixL上的交叉~译器来生成可以在windowsq_上运行的工具集。以q些UL到windowsq_上的开发工具ؓ基础Qcygnus又逐步把其他的工具Q几乎不需要对源代码进行修改,只需要修改他们的配置脚本QY件移植到windows上来。这P在windowsq_上运行bash和开发工兗用户工P感觉好像在unix上工作?br>
关于cygwin实现的更详细描述Q请参考http://cygwin.com/cygwin-ug-net/highlights.html.
]]>
要想怹更改L名,需要修?etc/sysconfig/network 文g?
vi /etc/sysconfig/networkQ修改HOSTNAME一行ؓ "HOSTNAME=L?
如:
HOSTNAME=linuxserver
GATEWAY=10.16.255.254
(没有q行Q那添加这一行吧)Q然后运行命?"hostname L??/p>
一般还要修?etc/hosts文g中的L名?
q样Q无Z是否重启Q主机名都修Ҏ功?/p>
无论在局域网q是INTERNET上,每台L都有一个IP地址Q是Z区分此台L和彼C机,也就是说IP地址是L的门牌号。但IP地址不方便记忆,所以又有了域名。域名只是在公网QINtERNET)中存?以实验ؓ目的的局域网域网实验性除外)Q每个域名都对应一个IP地址Q但一?IP地址可有对应多个域名。域名类?linuxsir.org q样的;
L名是用于什么的呢?在一个局域网中,每台机器都有一个主机名Q用于主ZL之间的便于区分,可以ؓ每台机器讄L名,以便于以Ҏ记忆的方法来怺讉K。比如我们在局域网中可以ؓҎ每台机器的功用来为其命名?/p>
L名相关的配置文gQ?etc/hosts;
2. L名配|文Ӟ
L名的配置文g大多?etc/hosts Q?/p>
hosts - The static table lookup for host nameQ主机名查询静态表Q;
׃ Linux 发行版本众多Q与L名相关的配置文g有时也有所不同。现在我们说说常见版本的L名配|文Ӟ
2.1 L名配|文?/etc/hosts解说Q?/p>
Fedora/Redhat 或以Fedora/Redhat为基打包的发行版Q主机名配置文g?/etc/hosts
Debian或以Debian为基打包的发行版Q主机名配置文g?/etc/hostname ?etc/hosts
Slackware的主机名配置文g?/etc/hosts
那我们来读读 /etc/hosts的内容,看这个文件是用来做什么的。hosts 配置文g是用来把L名字映射到IP地址的方法,q种Ҏ比较单。但q种映射只是本地机的映射Q也是说每台机器都是独立的Q所有的计算机都不能怺通过hostname来访问?/p>
注:在debian 中还有一?etc/hostname的文Ӟq个文g是直接把本C机名写进d行了Q但要和 /etc/hosts中的本地L名保持一致?/p>
/etc/hosts 的内容一般有如下cM内容Q?/p>
127.0.0.1 localhost.localdomain localhost
192.168.1.195 debian.localdomain debian
注:
一般情况下hosts的内容关于主机名(hostname)的定义,每行Z个主机,每行׃部䆾l成Q每个部份由I格隔开。其?号开头的行做说明Q不被系l解释?/p>
W一部䆾Q网lIP地址Q?/p>
W二部䆾Q主机名.域名Q注意主机名和域名之间有个半角的点,比如 localhost.localdomain
W二部䆾Q主机名(L名别名) Q其实就是主机名Q?/p>
当然每行也可以是两部份,是LIP地址和主机名Q比?192.168.1.195 debian
127.0.0.1 是回环地址Q比如我们不惌局域网的其它机器看到我们测试的|络E序Q就可以用回环地址来测试?/p>
Z么需要定义域名呢Q其实理解也单,比如我们有三C机,每台做不同的事,一台做MAIL服务器,一台做FTP服务器,一台做SMB服务器,所以我们就可以q样来设计hostnameQ?/p>
127.0.0.1 localhost.localdomain localhost
192.168.1.2 ftp.localdomain ftp
192.168.1.3 mail.localdomain mail
192.168.1.4 smb.localdomin smb
把这上面q个配置文g的内容分别写入每台机器的/etc/hosts内容中,q样q三台局域网的机器就可以通过hostname来访问了?/p>
2.2 L?hostname)和域?DomainQ的区别Q?/p>
L名就机器本n的名字,域名是用来解析到IP的。但值得一说的是在局域网中,L名也是可以解析到IP上的Q比如我们前面所说D的例子;
2.3 局域网的机器,不能通过L名互访的原因Q?/p>
有的弟兄可能会说Q我的hostname彼此不能互访Q其实这也问题也单,我们前面已经提到了一个简单的解决办法。就是要让局域网中的所有主机都有一个通用的,q且包含所有主机的/etc/hosts文gQ?/p>
另一个是做解军_法是做局域网DNS服务器,如果您的L特别,q前面所说的单方法就行;如何做DNS服务器,我将在以后的文档中专题介l;不过我值得一提的是做M服务器都是以效率优先的原则ؓ基础。比如我们在局域网中两台机器,我们q有必要做DNS服务器吗Q无论怎么解决Q最l的都是用最有效率的办法解决问题Q我们不能说明DNS多高U。如果DNS是ؓ外网服务的,那就另说了,不做也得做。对不对Q?/p>
3、主机名修改工具 hostname;
其实L名的修改也有专用工具Q就是hostname Q我认ؓ如果用这个工h修改L名,不如直接修改 /etc/hosts 来的方便Q您可以查看 hosname ——help?man hostname的帮?。在q里我们只说单的用法Q?/p>
hostname 工具是用来显C和讄pȝL名,看下面的z文Q?/p>
hostname - show or set the system‘s host name
举例解说Q?/p>
Q?昄L名:
[root@linuxsir01 ~]# hostname
linuxsir01
此主机的L名是linuxsir01Q不加参数是用来昄当前操作的主机的L名;
Q?临时讄L名:
我们可以?hostname 后接L名,q样可以设|当前操作的L的主机名Q比如我们想把主机名讄为linuxsir02Q?/p>
[root@linuxsir01 ~]# hostname linuxsir02
[root@linuxsir01 ~]# hostname 注:昄L?/p>
linuxsir02
通过hostname 工具来设|主机名只是临时的,下次重启pȝӞ此主机名不会存在;所以您想修改主机名Q想一直有效的Q还是用前面所说修改主机名配置文g /etc/hostsQ?/p>
Q?昄LIPQ?/p>
昄当前L名的IPQ可以用-i参数Q?/p>
[root@linuxsir01 ~]# hostname -i
192.168.1.3
4、本文未事宜;
有时我们在登入桌面时Q会提示找不到hostname Q这时您要做的是修改/etc/hostsQؓ您的机器d一个主机名Q先?ifconfig -a 来查看主机的IP地址Q然后把你主机的IP地址Q指定主机名?/p>
Linux操作pȝ的hostname是一个kernel变量Q可以通过hostname命o来查看本机的hostname。也可以直接cat /proc/sys/kernel/hostname查看?/p>
上面两种输出l果相同?/p>
修改q行时Linuxpȝ的hostnameQ即不需要重启系l?/strong>
hostname命o可以讄pȝ的hostname
newname卌讄的新的hostnameQ运行后立即生效Q但是在pȝ重启后会丢失所做的修改Q如果要怹更改pȝ的hostnameQ就要修改相关的讄文g?/p>
怹更改Linux的hostname
man hostname里有q么一句话Q?#8221;The host name is usually set once at system startup in /etc/rc.d/rc.inet1 or /etc/init.d/boot (normally by reading the contents of a file which contains the host name, e.g. /etc/hostname).” RedHat里没有这个文Ӟ而是?etc/rc.d/rc.sysinitq个脚本负责讄pȝ的hostnameQ它d /etc/sysconfig/networkq个文本文gQRedHat的hostname是在这个文仉讄?/p>
所以,如果要永久修改RedHat的hostnameQ就修改/etc/sysconfig/network文gQ将里面的HOSTNAMEq一行修ҎHOSTNAME=NEWNAMEQ其中NEWNAME是你要讄的hostname?/p>
Debian发行版的hostname的配|文件是/etc/hostname?/p>
修该配置文g后,重启pȝ׃d配置文g讄新的hostname?/p>
hostname?etc/hosts的关p?
很过Z提到更改hostname首先想C?etc/hosts文gQ认为hostname的配|文件就?etc/hosts。其实不是的?/p>
hosts文g的作用相当如DNSQ提供IP地址到hostname的对应。早期的互联|计机,单机hosts文g里够存放所有联|计机。不q随着互联|的发展Q这pq不够了。于是就出现了分布式的DNSpȝ。由DNS服务器来提供cM的IP地址到域名的对应。具体可以man hosts?/p>
Linuxpȝ在向DNS服务器发出域名解析请求之前会查询/etc/hosts文gQ如果里面有相应的记录,׃使用hosts里面的记录?etc/hosts文g通常里面包含q一条记?/p>
hosts文g格式是一行一条记录,分别是IP地址 hostname aliasesQ三者用I白字符分隔Qaliases可选?/p>
127.0.0.1到localhostq一条徏议不要修改,因ؓ很多应用E序会用到这个,比如sendmailQ修改之后这些程序可能就无法正常q行?/p>
修改hostname后,如果惌在本Z用newhostname来访问,必d/etc/hosts文g里添加一条newhostname的记录。比如我的eth0的IP?92.168.1.61Q我hosts文g修改如下Q?/p>
q样Q我可以通过blog或者blog.infernor.net来访问本机?/p>
从上面这些来看,/etc/hosts于设|hostname是没直接关系的,仅仅当你要在本机上用新的hostname来访问自q时候才会用?etc/hosts文g。两者没有必然的联系?/p>
RHELq有个问题?/p>
我开始在试的时候,只修?etc/hostsQ里面添?192.168.1.61 blog.infernor.net blogQ?etc/sysconfig/networkl持原状Q也是里面的HOSTNAME=localhost.localdomain。我重启pȝ后居然发现hostnamel修Ҏ了blog.infernor.net。这L的话Q倒真觉得/etc/hosts是hostname的配|文件。后来终于在/etc/rc.d/rc.sysinitq个启动脚本里发C问题的所在?/p>
rc.sysinit文g里一开始就讄了hostname
实使用?etc/sysconfig/network里的hostname倹{不q后面还有一D关于设|hostname?/p>
脚本判断hostname是否为localhost或者localhost.localdomainQ如果是的话Q将会用接口IP地址对应?hostname来重新设|系l的hostname。问题就出在q里Q我?etc/sysconfig/network默认的hostname?localhost.localdomainQeth0的IP?92.168.1.61Q?etc/hosts里有192.168.1.61的记录。于是就?92.168.1.61q条记录来替换了hostname?/p>
估计q也是很多h?etc/hosts误以为是hostname的配|文件的原因?/p>
hostname带选项查询
hostname?s -f -i{等选项都用C/etc/hosts或者DNSpȝQ跟我们讨论的hostname有点q了Q也Ҏ产生误会。具体可以man hostname查看?/p>
要实现守护进E,一U方法是按守护进E的规则ȝE(本站有文章介l过Q,比较ȝQ另一U方法是仍然用普通方法编E,然后用nohup命o启动E序Q?
nohupQ程序名Q?amp;
则控制台logout后,q程仍然l箋q行Qv到守护进E的作用Q虽然它不是严格意义上的守护q程Q?
使用nohup命o后,原程序的的标准输自动改向到当前目录下的nohup.out文gQvClog的作用,实现了完整的守护q程功能?
ygwu @ 2005q?4?8?上午10:03
For exampleQ?
如何q程启动WebLogic服务?
用telnetq程控制服务器,q程启动WEBLOGIC服务Q启动后关闭telnetQWebLogic服务也跟着停止Q这是因Z用telnet启动的进E会随着telnetq程的关闭而关闭。所以我们可以用一些UNIX下的命o来做C关闭?
使用如下命oQ?
nohup startWeblogic.sh&
假如惌监控标准输出可以使用Q?
tail -f nohup.out
当在后台q行了程序的时候,可以用jobs命o来查看后C业的状态。在有多个后台程序时Q要使用来参数的fg命o不同序L后台作业切换到前Cq行?
当用户启动一个进E的时候,q个q程是运行在前台Q用与相应控制l端相联pȝ标准输入、输行输入和输出。即使将q程的输入输出重定向Qƈ进E放在后台执行,q程仍然和当前终端设备有关系。正因ؓ如此Q在当前的登录会话结束时Q控制终端设备将和登录进E相qQ那么系l就向所有与q个l端相联pȝq程发送SIGHUP的信P通知q程U\已经挂v了,假如E序没有接管q个信号的处理,那么~省的反应是q程l束。因此普通的E序q不能真正脱ȝ录会话而运行进E,Z使得在系l登录后q可以正常执行,只有使用命onohup来启动相应程序?/p>
使用命onohup当然可以启动q样的程序,但nohup启动的程序在q程执行完毕退出,而常见的一些服务进E通常怹的运行在后台Q不向屏q输出结果。在Unix中这些永久的后台q程UCؓ守护q程QdaemonQ。守护进E通常从系l启动时自动开始执行,pȝ关闭时才停止?
在守护进E中Q最重要的一个是守护q程inetdQ这个进E接了大部分网l服务,但ƈ不是Ҏ个服务都自己q行处理Q而是依据q接hQ启动不同的服务E序与客h打交道。inetd支持|络服务U类在它的设|文?etc/inet.conf中定义。inet.conf文g中的每一行就对应一个端口地址Q当inetd接受到连接这个端口的q接hӞ启动相应的q程q行处理。用inetd的好处是pȝ不必启动很多守护q程Q从而节U了pȝ资源Q然而用inetd启动守护q程相应反应会迟~一些,不适合用于被密集访问的服务q程?/p>
AIX监控q程内存使用的工h较多Q个得比较方便的有nmon,svmonQ其中svmon是AIX自带的工P
需要root权限执行Q可以监控进E详l内存用信息,如:
svmon -P pid(要监控的q程PID) -i 1 (每秒h一? |grep pid
AIX下进E内存分?br />AIX下可以用ps v工具或者svmon工具来分析进E内存。ps v命o是ps命o的一个工
P要注意的是v之前不要?#8221;-“。ps v工具在Q何AIX操作pȝ下都可以使用。比
如:
# ps -lfp 13288
F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
240001 A oracle 13288 1 0 60 20 1ba2f 34032 Nov 03 - 0:06
ora_pmon_DEV
# ps v 13288
PID TTY STAT TIME PGIN SIZE RSS LIM TSIZ TRS %CPU %MEM COMMAND
13288 - A 0:08 225 5616 13904 32768 28420 13512 0.0 1.0
ora_pmon_DEV
从ps命o看到sz?4M。而用ps v命o可以看到rss?3904QTRS?3512。进E用的
内存是RSS-TRS=392K(ps v看到的内存单位是K)?br />
用svmon可以看到更多的信息,其结果和ps v是一致的。比如:
#svmon -P 23288
----------------------------------------------------------------------------
---
Pid Command Inuse Pin Pgsp Virtual 64-bit Mthrd
23288 ora_pmon_V8 29598 1451 182 16560 N N
Vsid Esid Type Description Inuse Pin Pgsp Virtual Addr
Range
1781 3 work shmat/mmap 11824 0 0 11824
0..24700
1761 1 pers code,large file /dev 9681 0 - -
0..9680
0 0 work kernel seg 3982 1450 182 3390
0..21804 :
65474..65535
18018 d work shared library text 2852 0 0 158
0..65535
4764 2 work process private 1127 1 0 1127
0..1182 :
65307..65535
f74f f work shared library data 81 0 0 61
0..1291
1e59e - pers large file /dev/lv00 33 0 - - 0..32
e58e - pers large file /dev/lv00 16 0 - - 0..82
b74b - pers large file /dev/lv00 1 0 - - 0..0
3703 - pers large file /dev/lv00 1 0 - - 0..0
#ps v 23288
PID TTY STAT TIME PGIN SIZE RSS LIM TSIZ TRS %CPU %MEM
COMMAND
23288 - A 0:00 0 4752 43556 32768 27289 38724 0.0 5.0
ora_pmon_V8
要注意的是,svmon昄的内存都是以Page为单位的QAIX下,每个ؓ4K?br />通过work process private的virtual大小和work shared library data的virtual大小
的和ps v的SIZE是完全一致的Q?br />4752K=(1127Q?1)×4K
而RSS的内容相当于linux目的private working-storage segments加上pers code?br />shared library data?br />43556KQ(1127 + 9681 + 81Q?4K
TRS是INUSE目的pers code:
38724K=9681*4K
我发现很多玩AIX好多q的人都搞不清ps命o中的那个“-”Q到底是应该用ps -elf、ps aux呢?q是应该用ps elf、ps -aux呢?
?man一下ps 看看吧,你会发现AIX下的ps命o有两U语法格式:一U叫X/Open标准Q一U叫Berkeley标准?br>ps Command
Purpose
Shows current status of processes.
Syntax
X/Open Standards
ps [ -A ] [ -N ] [ -a ] [ -d ] [ -e ] [ -f ] [ -k ] [ -l ] [ -F format] [ -o
Format ] [ -c Clist ] [ -G Glist ] [ -g Glist ] [ -m ] [ -n NameList ] [ -p
Plist ] [ -t Tlist ] [ -U Ulist ] [ -u Ulist ]
Berkeley Standards
ps [ a ] [ c ] [ e ] [ ew ] [ eww ] [ g ] [ n ] [ U ] [ w ] [ x ] [ l | s | u |
v ] [ t Tty ] [ ProcessNumber ]
现在你会知道ps -elf、ps aux是正的写法Q而ps elf、ps -aux自然是错误的了。这其实是个很容易被忽视的小问题Q所以很多h玩AIX的hL搞错。我接触AIX之前Q恰好学q一端时间的SOLARISQ所以一开始就注意Cq个l节。SOLARIS也有两个版本的psQ一个是默认的System V 版本Q如Q?usr/bin/ps -elfQ一个是非默认的BSD版本Q如Q?usr/ucb/ps -aux?/p>
BSD的意思相信大安知道Q是Berkeley Software DistributionQ巴克利软g发行版)的羃写。那ucb是什么意思呢Q其实是
University of California, Berkeley Q加州大学巴克利分校Q的~写。看Q这两个都是~写?都有Berkeley。好了,说的q里Q我看就没必要l再|嗦下去了。用GOOGLE搜一?#8220;UNIX历史”?#8220;University of California, Berkeley”?#8220;System V”q些关键字,怿INTERNET上有很多详细说明它们之间关系的文章。知道点儿UNIX的历Ԍ其实是g很有的事情?/p>
至于AIX的man中提到的“X/Open标准”?#8220;System V 版本”是什么关p,我也不知道,也懒得搞清楚了,惛_它们之间一定是有联pȝ。如果你想知道细情,那还是用GOOGLE搜吧Q呵c?/p>
最后ȝ一下AIX中ps命oQ你只要C个命令就好了——ps -elf和ps aux。ps -elf是System V风格Q同SOLARIS的ps -elfQps aux是BSD风格Q同SOLARIS?usr/ucb/ps -auxQ估计LINUX和FREEBSD都用aux参数。另外,我的l验是:ps 的其它参数都不是很常用,只要死记住这两组参数Q必要的时候会zȝ成ps -el、ps -e、ps ax之类的就够了。当然你q要熟悉一下这两组参数的命令输Z的每一列的含义Q这个在man里都有写的,我也׃多说了?/p>
用户QUserQ和用户l(GroupQ的配置文gQ是pȝ理员最应该了解和掌握的pȝ基础文g之一Q从另一斚w来说Q了解这些文件也是系l安全管理的重要l成部䆾Q做Z个合格的pȝ理员应该对用户和用L配置文g透彻了解才行Q?/p>
一、用PUserQ相养I
谈到用户Q就不得不谈用户理Q用户配|文Ӟ以及用户查询和管理的控制工具Q用L理主要通过修改用户配置文g完成Q用L理控制工hl目的也是ؓ了修改用户配|文件?br>什么是用户查询和管理控制工具呢Q用h询和控制工具是查询、添加、修改和删除用户{系l管理工P比如查询用户的id和finger命oQ添加用Luseradd 或adduser 、userdel 用户的删?、设|密码的passwd命o、修改用户usermod {等Q我们需要知道的是通过用户查询和控制工hq行的动作的最l目的也是修改用户配|文Ӟ所以我们进行用L理的时候,直接修改用户配置文g一样可以达到用L理的目的Q?br>通过上面的解_我们能实实在在的感觉到用PUserQ配|文件的重要性;其实用户和用L在系l管理中是不可分割的Q但Z说明问题Q我们还是得把用PUserQ的配置文g单列出来解说Q其中包?etc/passwd ?etc/shadow 文gQ在q之中,你还能了解UID的重要性;
通过本标题,您可以了解或掌握的内ҎQ了?etc/passwd?etc/shadowQ什么UID Q?br>与用L关的pȝ配置文g主要?etc/passwd ?etc/shadowQ其?etc/shadow是用戯讯的加密文gQ比如用L密码口o的加密保存等Q?etc/passwd ?etc/shadow 文g是互补的Q我们可以通过Ҏ两个文g来差看他们的区别Q?br>1、关?etc/passwd ?UIDQ?/p>
/etc/passwd 是系l识别用L一个文Ӟ做个不恰当的比喻Q?etc/passwd 是一个花名册Q系l所有的用户都在q里有登录记载;当我们以beinan q个账号dӞpȝ首先会查?/etc/passwd 文gQ看是否有beinan q个账号Q然后确定beinan的UIDQ通过UID 来确认用户和w䆾Q如果存在则d/etc/shadow 影子文g中所对应的beinan的密码;如果密码核实无误则登录系l,d用户的配|文Ӟ
1Q?etc/passwd 的内容理解:
?etc/passwd 中,每一行都表示的是一个用L信息Q一行有7个段位;每个D位?号分Ԍ比如下面是我的系l中?etc/passwd 的两行;
beinan:x:500:500:beinan sun:/home/beinan:/bin/bash
linuxsir:x:505:502:linuxsir open,linuxsir office,13898667715:/home/linuxsir:/bin/bash
beinan:x:500:500:beinan sun:/home/beinan:/bin/bash
linuxsir:x:501:502::/home/linuxsir:/bin/bash
W一字段Q用户名Q也被称为登录名Q;在上面的例子中,我们看到q两个用L用户名分别是 beinan 和linuxsirQ?br>W二字段Q口令;在例子中我们看到的是一个xQ其实密码已被映到/etc/shadow 文g中;
W三字段QUID Q请参看本文的UID的解_
W四字段QGIDQ请参看本文的GID的解_
W五字段Q用户名全称Q这是可选的Q可以不讄Q在beinanq个用户中,用户的全U是beinan sun Q而linuxsir q个用户是没有设|全Uͼ
W六字段Q用L家目录所在位|;beinan q个用户?home/beinan Q而linuxsir q个用户?home/linuxsir Q?br>W七字段Q用h用SHELL 的类型,beinan和linuxsir 都用的是 bash Q所以设|ؓ/bin/bash Q?/p>
2Q关于UID 的理解:
UID 是用LID |在系l中每个用户的UID的值是唯一的,更确切的说每个用户都要对应一个唯一的UID Q系l管理员应该保q一规则。系l用LUID的g0开始,是一个正整数Q至于最大值可以在/etc/login.defs 可以查到Q一般Linux发行版约定ؓ60000Q?在Linux 中,root的UID?Q拥有系l最高权限;
UID 在系l唯一Ҏ,做ؓpȝ理员应该确保这一标准QUID 的唯一性关pdpȝ的安全,应该值得我们xQ比如我?etc/passwd 中把beinan的UID 改ؓ0后,你设想会发生什么呢Qbeinanq个用户会被认为root用户。beinanq个帐号可以q行所有root的操作;
UID 是确认用h限的标识Q用L录系l所处的角色是通过UID 来实现的Q而非用户名,切记Q把几个用户q一个UID 是危险的Q比如我们上面所谈到的,把普通用LUID 改ؓ0Q和rootq一个UID Q这事实上就造成了系l管理权限的混ؕ。如果我们想用root权限Q可以通过su或sudo来实玎ͼ切不可随意让一个用户和root分n同一个UID Q?/p>
UID是唯一性,只是要求理员所做的Q其实我们修?etc/passwd 文gQ可以修改Q何用LUID的gؓ0Q?br>一般情况下Q每个Linux的发行版都会预留一定的UID和GIDl系l虚拟用户占用,虚拟用户一般是pȝ安装时就有的Q是Z完成pȝd所必须的用P但虚拟用h不能dpȝ的,比如ftp、nobody、adm、rpm、bin、shutdown{;
在Fedora pȝ会把?99 个UID和GID 预留出来Q我们添加新用户时的UID ?00开始的QGID也是?00开始,至于其它pȝQ有的系l可能会把前999UID和GID预留出来Q以各个pȝ?etc/login.defs中的 UID_MIN 的最gؓ准; Fedora pȝ login.defs的UID_MIN?00Q而UID_MAX gؓ60000Q也是说我们通过adduser默认d的用LUID的值是500?0000之间Q而Slackware 通过adduser不指定UID来添加用P默认UID 是从1000开始;
2、关?etc/shadow Q?br>1Q?etc/shadow 概说Q?/p>
/etc/shadow文g?etc/passwd 的媄子文Ӟq个文gq不?etc/passwd 而生的Q这两个文g是应该是对应互补的;shadow内容包括用户及被加密的密码以及其?etc/passwd 不能包括的信息,比如用户的有效期限等Q这个文件只有root权限可以d和操作,权限如下Q?/p>
-r-------- 1 root root 1.5K 10?16 09:49 /etc/shadow
/etc/shadow 的权限不能随便改为其它用户可读,q样做是危险的。如果您发现q个文g的权限变成了其它用户l或用户可读了,要进行检查,以防pȝ安全问题的发生;
如果我们以普通用h看这个文件时Q应该什么也查看不到Q提C是权限不够Q?/p>
[beinan@localhost ~]$ more /etc/shadow
/etc/shadow: 权限不够
2Q?etc/shadow 的内容分析;
/etc/shadow 文g的内容包?个段位,每个D位之间?号分Ԍ我们以如下的例子说明Q?/p>
beinan:$1$VE.Mq2Xf$2c9Qi7EQ9JP8GKF8gH7PB1:13072:0:99999:7:::
linuxsir:$1$IPDvUhXP$8R6J/VtPXvLyXxhLWPrnt/:13072:0:99999:7::13108:
W一字段Q用户名Q也被称为登录名Q,?etc/shadow中,用户名和/etc/passwd 是相同的Q这样就把passwd 和shadow中用的用戯录联pd一Pq个字段是非I的Q?br>W二字段Q密码(已被加密Q,如果是有些用户在q段是xQ表C个用户不能登录到pȝQ这个字D|非空的;
W三字段Q上ơ修改口令的旉Q这个时间是?970q?1?1日算起到最q一ơ修改口令的旉间隔Q天敎ͼQ您可以通过passwd 来修改用L密码Q然后查?etc/shadow中此字段的变化;
W四字段Q两ơ修改口令间隔最的天数Q如果设|ؓ0,则禁用此功能Q也是说用户必ȝq多天才能修改其口令;此项功能用处不是太大Q默认值是通过/etc/login.defs文g定义中获取,PASS_MIN_DAYS 中有定义Q?br>W五字段Q两ơ修改口令间隔最多的天数Q这个能增强理员管理用户口令的时效性,应该说在增强了系l的安全性;如果是系l默认|是在d用户时由/etc/login.defs文g定义中获取,在PASS_MAX_DAYS 中定义;
W六字段Q提前多天警告用户口o过期;当用L录系l后Q系l登录程序提醒用户口令将要作废;如果是系l默认|是在d用户时由/etc/login.defs文g定义中获取,在PASS_WARN_AGE 中定义;
W七字段Q在口oq期之后多少天禁用此用户Q此字段表示用户口o作废多少天后Q系l会用此用P也就是说pȝ会不能再让此用户dQ也不会提示用户q期Q是完全用Q?br>W八字段Q用戯期日期;此字D|定了用户作废的天敎ͼ?970q的1?日开始的天数Q,如果q个字段的gؓI,帐号怹可用Q?br>W九字段Q保留字D,目前为空Q以备将来Linux发展之用Q?br>如果更ؓ详细的,L man shadow来查看帮助,您会得到更ؓ详尽的资料;
我们再根据实例分析:
beinan:$1$VE.Mq2Xf$2c9Qi7EQ9JP8GKF8gH7PB1:13072:0:99999:7:::
linuxsir:$1$IPDvUhXP$8R6J/VtPXvLyXxhLWPrnt/:13072:0:99999:7::13108:
W一字段Q用户名Q也被称之ؓd名)Q在例子中有峡谷两条记录Q也表示有两个用户beinan和linuxsir
W二字段Q被加密的密码,如果有的用户在此字段中是xQ表C个用户不能登录系l,也可以看作是虚拟用户Q不q虚拟用户和真实用户都是相对的,pȝ理员随时可以对M用户操作Q?br>W三字段Q表CZơ更改口令的天数Q距1970q?1?1日)Q上面的例子能说明beinan和linuxsirq两个用P是在同一天更改了用户密码Q当然是通过passwd 命o来更改的Q更改密码的旉?970q?1?1日的天数?3072Q?br>W四字段Q禁用两ơ口令修改之间最天数的功能Q设|ؓ0
W五字段Q两ơ修改口令间隔最多的天数Q在例子中都?9999天;q个值如果在d用户时没有指定的话,是通过/etc/login.defs来获取默认|PASS_MAX_DAYS 99999Q您可以查看/etc/login.defs来查看,具体的|
W六字段Q提前多天警告用户口o过期;当用L录系l后Q系l登录程序提醒用户口令将要作废;如果是系l默认|是在d用户时由/etc/login.defs文g定义中获取,在PASS_WARN_AGE 中定义;在例子中的值是7 Q表C在用户口o过期的?天警告用hҎ口oQ?br>W七字段Q在口oq期之后多少天禁用此用户Q此字段表示用户口o作废多少天后Q系l会用此用P也就是说pȝ会不能再让此用户dQ也不会提示用户q期Q是完全用Q在例子中,此字D两个用L都是I的Q表C禁用这个功能;
W八字段Q用戯期日期;此字D|定了用户作废的天敎ͼ?970q的1?日开始的天数Q,如果q个字段的gؓI,帐号怹可用Q在例子中,我们看到beinanq个用户在此字段是空的,表示此用h久可用;而linuxsirq个用户表示在距1970q?1?1日后13108天后q期Q算h也就?005q?1?1可期;哈哈Q如果有兴趣的的弟兄Q自己来算Q大体还是差不多?)Q?br>W九字段Q保留字D,目前为空Q以备将来Linux发展之用Q?/p>
本文来自CSDN博客Q{载请标明出处Q?a >http://blog.csdn.net/wupan168/archive/2009/09/17/4563268.aspx
摘要Q本文主要讲q在Linux pȝ中用?user)和用L(group)理相应的概念;用户(user)和用L(group)相关命o的列举;其中也对单用户多dQ多用户多Q务也做以解说Q本文应该说是比较基的文档;
一、理解Linux的单用户多Q务,多用户多d概念Q?br>Linux 是一个多用户、多d的操作系l;我们应该了解单用户多d和多用户多Q务的概念Q?/p>
1、Linux 的单用户多Q务;
单用户多dQ比如我们以beinan dpȝQ进入系l后Q我要打开gedit 来写文档Q但在写文档的过E中Q我感觉点音乐Q所以又打开xmms 来点音乐Q当然听炚w乐还不行QMSN q得打开Q想知道几个弟兄现在正在做什么,q样一P我在用beinan 用户dӞ执行了gedit 、xmms以及msn{,当然q有输入法fcitx Q这栯来就有点单了Q一个beinan用户Qؓ了完成工作,执行了几个Q务;当然beinanq个用户Q其它的能以q程dq来Q也能做其它的工作?/p>
2、Linux 的多用户、多dQ?/p>
有时可能是很多用户同时用同一个系l,但ƈ不所有的用户都一定都要做同一件事Q所以这有多用户多d之说Q?br>举个例子Q比如LinuxSir.Org 服务器,上面有FTP 用户、系l管理员、web 用户、常规普通用LQ在同一时刻Q可能有的弟兄正在访问论坛;有的可能在上传Y件包理子站Q比如luma 或Yuking 兄在理他们的主늳l和FTP Q在与此同时Q可能还会有pȝ理员在l护pȝQ浏览主늚用的是nobody 用户Q大安用同一个,而上传Y件包用的是FTP用户Q管理员的对pȝ的维护或查看Q可能用的是普通帐h权限root帐号Q不同用hh的权限也不同Q要完成不同的Q务得需要不同的用户Q也可以说不同的用户Q可能完成的工作也不一P
值得注意的是Q多用户多Q务ƈ不是大家同时挤到一接在一台机器的的键盘和昄器前来操作机器,多用户可能通过q程d来进行,比如Ҏ务器的远E控Ӟ只要有用h限Q何h都是可以上去操作或访问的Q?/p>
3、用L角色区分Q?/p>
用户在系l中是分角色的,在Linux pȝ中,׃角色不同Q权限和所完成的Q务也不同Q值得注意的是用户的角色是通过UID和识别的Q特别是UIDQ在pȝ理中,pȝ理员一定要坚守UID 唯一的特性;
root 用户Q系l唯一Q是真实的,可以dpȝQ可以操作系lQ何文件和命oQ拥有最高权限;
虚拟用户Q这cȝ户也被称之ؓ伪用h假用P与真实用户区分开来,q类用户不具有登录系l的能力Q但却是pȝq行不可~少的用P比如bin、daemon、adm、ftp、mail{;q类用户都系l自w拥有的Q而非后来d的,当然我们也可以添加虚拟用P
普通真实用Pq类用户能登录系l,但只能操作自己家目录的内容;权限有限Q这cȝ户都是系l管理员自行d的;
4、多用户操作pȝ的安全;
多用Ll从事实来说对系l管理更为方ѝ从安全角度来说Q多用户理的系l更为安全,比如beinan用户下的某个文g不想让其它用L刎ͼ只是讄一下文件的权限Q只有beinan一个用户可d写可~辑p了,q样一来只有beinan一个用户可以对其私有文件进行操作,Linux 在多用户下表现最佻ILinux能很好的保护每个用户的安全,但我们也得学会Linux 才是Q再安全的系l,如果没有安全意识的管理员或管理技术,q样的系l也不是安全的?br>从服务器角度来说Q多用户的下的系l安全性也是最为重要的Q我们常用的Windows 操作pȝQ它在系U权限管理的能力只能说是一般般Q根本没有没有办法和Linux或Unix cȝl相比;
二、用?userQ和用户l(groupQ概念;
1、用PuserQ的概念Q?br>通过前面对Linux 多用L理解Q我们明白Linux 是真正意义上的多用户操作pȝQ所以我们能在Linuxpȝ中徏若干用户QuserQ。比如我们的同事想用我的计算机,但我不想让他用我的用户名dQ因为我的用户名下有不想让别人看到的资料和信息(也就是隐U内容)q时我就可以l他Z个新的用户名Q让他用我所开的用户名L腾,q从计算机安全角度来说是W合操作规则的;
当然用户QuserQ的概念理解q不仅仅于此Q在Linuxpȝ中还有一些用h用来完成特定d的,比如nobody和ftp {,我们讉KLinuxSir.Org 的网늨序,是nobody用户Q我们匿名访问ftp Ӟ会用到用户ftp或nobody Q如果您想了解Linuxpȝ的一些帐Ph?/etc/passwd Q?/p>
2、用LQgroupQ的概念Q?br>用户l(groupQ就是具有相同特征的用户QuserQ的集合体;比如有时我们要让多个用户h相同的权限,比如查看、修Ҏ一文g或执行某个命令,q时我们需要用LQ我们把用户都定义到同一用户l,我们通过修改文g或目录的权限Q让用户l具有一定的操作权限Q这LL下的用户对该文g或目录都h相同的权限,q是我们通过定义l和修改文g的权限来实现的;
举例Q我们ؓ了让一些用h权限查看某一文档Q比如是一个时间表Q而编写时间表的h要具有读写执行的权限Q我们想让一些用L道这个时间表的内容,而不让他们修改,所以我们可以把q些用户都划C个组Q然后来修改q个文g的权限,让用L可读Q这LL下面的每个用户都是可ȝQ?br>用户和用L的对应关pLQ一对一、多对一、一对多或多对多Q?br>一对一Q某个用户可以是某个l的唯一成员Q?br>多对一Q多个用户可以是某个唯一的组的成员,不归属其它用LQ比如beinan和linuxsir两个用户只归属于beinan用户l;
一对多Q某个用户可以是多个用户l的成员Q比如beinan可以是rootl成员,也可以是linuxsir用户l成员,q可以是adm用户l成员;
多对多:多个用户对应多个用户l,q且几个用户可以是归属相同的l;其实多对多的关系是前面三条的扩展Q理解了上面的三条,q条也能理解Q?/p>
三、用PuserQ和用户l(groupQ相关的配置文g、命令或目录Q?/p>
1、与用户QuserQ和用户l(groupQ相关的配置文gQ?br>1Q与用户QuserQ相关的配置文gQ?/p>
/etc/passwd 注:用户QuserQ的配置文gQ?br>/etc/shadow 注:用户QuserQ媄子口令文Ӟ
2Q与用户l(groupQ相关的配置文gQ?br>/etc/group 注:用户l(groupQ配|文Ӟ
/etc/gshadow 注:用户l(groupQ的影子文gQ?/p>
2、管理用PuserQ和用户l(groupQ的相关工具或命令;
1Q管理用PuserQ的工具或命令;
useradd 注:d用户
adduser 注:d用户
passwd 注:为用戯|密?br>usermod 注:修改用户命oQ可以通过usermod 来修改登录名、用L家目录等{;
pwcov 注:同步用户?etc/passwd ?etc/shadow
pwck 注:pwck是校验用户配|文?etc/passwd ?etc/shadow 文g内容是否合法或完_
pwunconv 注:是pwcov 的立逆向操作Q是?etc/shadow?/etc/passwd 创徏/etc/passwd Q然后会删除 /etc/shadow 文gQ?br>finger 注:查看用户信息工具
id 注:查看用户的UID、GID及所归属的用L
chfn 注:更改用户信息工具
su 注:用户切换工具
sudo 注:sudo 是通过另一个用h执行命oQexecute a command as another userQ,su 是用来切换用P然后通过切换到的用户来完成相应的dQ但sudo 能后面直接执行命令,比如sudo 不需要root 密码可以执行root 赋与的执行只有root才能执行相应的命令;但得通过visudo 来编?etc/sudoers来实玎ͼ
visudo 注:visodo 是编?/etc/sudoers 的命令;也可以不用这个命令,直接用vi 来编?/etc/sudoers 的效果是一LQ?br>sudoedit 注:和sudo 功能差不多;
2Q管理用LQgroupQ的工具或命令;
groupadd 注:d用户l;
groupdel 注:删除用户l;
groupmod 注:修改用户l信?br>groups 注:昄用户所属的用户l?br>grpck
grpconv 注:通过/etc/group?etc/gshadow 的文件内Ҏ同步或创?etc/gshadow Q如?etc/gshadow 不存在则创徏Q?br>grpunconv 注:通过/etc/group ?etc/gshadow 文g内容来同步或创徏/etc/group Q然后删除gshadow文gQ?/p>
3?etc/skel 目录Q?br>/etc/skel目录一般是存放用户启动文g的目录,q个目录是由root权限控制Q当我们d用户Ӟq个目录下的文g自动复制到新d的用L家目录下Q?etc/skel 目录下的文g都是隐藏文gQ也是cM.file格式的;我们可通过修改、添加、删?etc/skel目录下的文gQ来为用h供一个统一、标准的、默认的用户环境Q?/p>
[root@localhost beinan]# ls -la /etc/skel/
ȝ?92
drwxr-xr-x 3 root root 4096 8?11 23:32 .
drwxr-xr-x 115 root root 12288 10?14 13:44 ..
-rw-r--r-- 1 root root 24 5?11 00:15 .bash_logout
-rw-r--r-- 1 root root 191 5?11 00:15 .bash_profile
-rw-r--r-- 1 root root 124 5?11 00:15 .bashrc
-rw-r--r-- 1 root root 5619 2005-03-08 .canna
-rw-r--r-- 1 root root 438 5?18 15:23 .emacs
-rw-r--r-- 1 root root 120 5?23 05:18 .gtkrc
drwxr-xr-x 3 root root 4096 8?11 23:16 .kde
-rw-r--r-- 1 root root 658 2005-01-17 .zshrc
/etc/skel 目录下的文gQ一般是我们用useradd 和adduser 命od用户QuserQ时Q系l自动复制到新添加用PuserQ的家目录下Q如果我们通过修改 /etc/passwd 来添加用hQ我们可以自己创建用L家目录,然后?etc/skel 下的文g复制到用L家目录下Q然后要用chown 来改变新用户家目录的属主Q?br>4?etc/login.defs 配置文gQ?br>/etc/login.defs 文g是当创徏用户时的一些规划,比如创徏用户Ӟ是否需要家目录QUID和GID的范_用户的期限等{,q个文g是可以通过root来定义的Q?br>比如Fedora ?/etc/logins.defs 文g内容Q?/p>
# *REQUIRED*
# Directory where mailboxes reside, _or_ name of file, relative to the
# home directory. If you _do_ define both, MAIL_DIR takes precedence.
# QMAIL_DIR is for Qmail
#
#QMAIL_DIR Maildir
MAIL_DIR /var/spool/mail 注:创徏用户Ӟ要在目录/var/spool/mail中创Z个用户mail文gQ?br>#MAIL_FILE .mail
# Password aging controls:
#
# PASS_MAX_DAYS Maximum number of days a password may be used.
# PASS_MIN_DAYS Minimum number of days allowed between password changes.
# PASS_MIN_LEN Minimum acceptable password length.
# PASS_WARN_AGE Number of days warning given before a password expires.
#
PASS_MAX_DAYS 99999 注:用户的密码不q期最多的天数Q?br>PASS_MIN_DAYS 0 注:密码修改之间最的天数Q?br>PASS_MIN_LEN 5 注:密码最长度;
PASS_WARN_AGE 7 注:
#
# Min/max values for automatic uid selection in useradd
#
UID_MIN 500 注:最UID?00 Q也是说添加用hQUID 是从500开始的Q?br>UID_MAX 60000 注:最大UID?0000Q?br>#
# Min/max values for automatic gid selection in groupadd
#
GID_MIN 500 注:GID 是从500开始;
GID_MAX 60000
#
# If defined, this command is run when removing a user.
# It should remove any at/cron/print jobs etc. owned by
# the user to be removed (passed as the first argument).
#
#USERDEL_CMD /usr/sbin/userdel_local
#
# If useradd should create home directories for users by default
# On RH systems, we do. This option is ORed with the -m flag on
# useradd command line.
#
CREATE_HOME yes 注:是否创用户家目录Q要求创建;
5?etc/default/useradd 文gQ?/p>
通过useradd d用户时的规则文gQ?/p>
# useradd defaults file
GROUP=100
HOME=/home 注:把用L家目录徏?home中;
INACTIVE=-1 注:是否启用帐号q期停权Q?1表示不启用;
EXPIRE= 注:帐号l止日期Q不讄表示不启用;
SHELL=/bin/bash 注:所用SHELL的类型;
SKEL=/etc/skel 注:默认d用户的目录默认文件存放位|;也就是说Q当我们用adduserd用户Ӟ用户家目录下的文Ӟ都是从这个目录中复制q去的;
后记Q?/p>
关于用户QuserQ和用户l(groupQ管理内容大U就是这么多Q只要把上面所说的内容了解和掌握,用户QuserQ和用户l(groupQ管理就差不多了Q由于用PuserQ和用户l(groupQ是和文件及目录权限联系在一LQ所以文件及目录权限的操作也会独立成文来l大家介l;
本文只是让新手弟兄明白用PuserQ和用户l(groupQ一些原理,所以我在写此文的时候,大多是解说内容,我的意思是通过解说和烦引一些命令,让新手弟兄明白一点理论是比较重要的,技术操作无非是命o的用法;
本文来自CSDN博客Q{载请标明出处Q?a >http://blog.csdn.net/wupan168/archive/2009/09/17/4563265.aspx