专注业务连续性支持与数据保护
2009-06-05技术合集

linux下挂载详解已关闭评论

linux下挂载详解

  linux是一个优秀的开放源码的操作系统,可以运行在大到巨型小到掌上型各类计算机系统上,随着linux系统的日渐成熟和稳定以及它开放源代码特有的优越性,linux在全世界得到了越来越广泛的应用。现在许多企业的计算机系统都是由UNIX系统、Linux系统和Windows系统组成的混合系统,不同系统之间经常需要进行数据交换。下面我根据自己的实际工作经验介绍一下如何在linux系统下挂接(mount)光盘镜像文件、移动硬盘、U盘以及Windows网络共享和UNIX NFS网络共享。
  挂接命令(mount)
  首先,介绍一下挂接(mount)命令的使用方法,mount命令参数非常多,这里主要讲一下今天我们要用到的。
  命令格式:
  mount [-t vfstype] [-o options] device dir
  其中:
  1.-t vfstype 指定文件系统的类型,通常不必指定。mount 会自动选择正确的类型。常用类型有:
  光盘或光盘镜像:iso9660
  DOS fat16文件系统:msdos
  Windows 9x fat32文件系统:vfat
  Windows NT ntfs文件系统:ntfs
  Mount Windows文件网络共享:smbfs
  UNIX(LINUX) 文件网络共享:nfs
  2.-o options 主要用来描述设备或档案的挂接方式。常用的参数有:
  loop:用来把一个文件当成硬盘分区挂接上系统
  ro:采用只读方式挂接设备
  rw:采用读写方式挂接设备
  iocharset:指定访问文件系统所用字符集
  3.device 要挂接(mount)的设备。
  4.dir设备在系统上的挂接点(mount point)。
  挂接光盘镜像文件
  由于近年来磁盘技术的巨大进步,新的电脑系统都配备了大容量的磁盘系统,在Windows下许多人都习惯把软件和资料做成光盘镜像文件通过虚拟光驱来使用。这样做有许多好处:一、减轻了光驱的磨损;二、现在硬盘容量巨大存放几十个光盘镜像文件不成问题,随用随调十分方便;三、硬盘的读取速度要远远高于光盘的读取速度,CPU占用率大大降低。其实linux系统下制作和使用光盘镜像比Windows系统更方便,不必借用任何第三方软件包。
  1、从光盘制作光盘镜像文件。将光盘放入光驱,执行下面的命令。
  #cp /dev/cdrom /home/sunky/mydisk.iso 或
  #dd if=/dev/cdrom of=/home/sunky/mydisk.iso
  注:执行上面的任何一条命令都可将当前光驱里的光盘制作成光盘镜像文件/home/sunky/mydisk.iso
  2、将文件和目录制作成光盘镜像文件,执行下面的命令。
  #mkisofs -r -J -V mydisk -o /home/sunky/mydisk.iso /home/sunky/ mydir
  注:这条命令将/home/sunky/mydir目录下所有的目录和文件制作成光盘镜像文件/home/sunky/mydisk.iso,光盘卷标为:mydisk
  3、光盘镜像文件的挂接(mount)
  #mkdir /mnt/vcdrom
  注:建立一个目录用来作挂接点(mount point)
  #mount -o loop -t iso9660 /home/sunky/mydisk.iso /mnt/vcdrom
  注:使用/mnt/vcdrom就可以访问盘镜像文件mydisk.iso里的所有文件了。
  挂接移动硬盘
  对linux系统而言,USB接口的移动硬盘是当作SCSI设备对待的。插入移动硬盘之前,应先用fdisk -l 或 more /proc/partitions查看系统的硬盘和硬盘分区情况。
  [root at pldyrouter /]# fdisk -l
  Disk /dev/sda: 73 dot 4 GB, 73407820800 bytes
  255 heads, 63 sectors/track, 8924 cylinders
  Units = cylinders of 16065 * 512 = 8225280 bytes
  Device Boot Start End Blocks Id System
  /dev/sda1 1 4 32098+ de Dell Utility
  /dev/sda2 * 5 2554 20482875 7 HPFS/NTFS
  /dev/sda3 2555 7904 42973875 83 Linux
  /dev/sda4 7905 8924 8193150 f Win95 Ext’d (LBA)
  /dev/sda5 7905 8924 8193118+ 82 Linux swap
  在这里可以清楚地看到系统有一块SCSI硬盘/dev/sda和它的四个磁盘分区/dev/sda1 — /dev/sda4, /dev/sda5是分区/dev/sda4的逻辑分区。接好移动硬盘后,再用fdisk -l 或 more /proc/partitions查看系统的硬盘和硬盘分区情况
  [root at pldyrouter /]# fdisk -l
  Disk /dev/sda: 73 dot 4 GB, 73407820800 bytes
  255 heads, 63 sectors/track, 8924 cylinders
  Units = cylinders of 16065 * 512 = 8225280 bytes
  Device Boot Start End Blocks Id System
  /dev/sda1 1 4 32098+ de Dell Utility
  /dev/sda2 * 5 2554 20482875 7 HPFS/NTFS
  /dev/sda3 2555 7904 42973875 83 Linux
  /dev/sda4 7905 8924 8193150 f Win95 Ext’d (LBA)
  /dev/sda5 7905 8924 8193118+ 82 Linux swap
  Disk /dev/sdc: 40.0 GB, 40007761920 bytes
  255 heads, 63 sectors/track, 4864 cylinders
  Units = cylinders of 16065 * 512 = 8225280 bytes
  Device Boot Start End Blocks Id System
  /dev/sdc1 1 510 4096543+ 7 HPFS/NTFS
  /dev/sdc2 511 4864 34973505 f Win95 Ext’d (LBA)
  /dev/sdc5 511 4864 34973473+ b Win95 FAT32
  大家应该可以发现多了一个SCSI硬盘/dev/sdc和它的两个磁盘分区/dev/sdc1?、/dev/sdc2,其中/dev/sdc5是/dev/sdc2分区的逻辑分区。我们可以使用下面的命令挂接/dev/sdc1和/dev/sdc5。
  #mkdir -p /mnt/usbhd1
  #mkdir -p /mnt/usbhd2
  注:建立目录用来作挂接点(mount point)
  #mount -t ntfs /dev/sdc1 /mnt/usbhd1
  #mount -t vfat /dev/sdc5 /mnt/usbhd2
  注:对ntfs格式的磁盘分区应使用-t ntfs 参数,对fat32格式的磁盘分区应使用-t vfat参数。若汉字文件名显示为乱码或不显示,可以使用下面的命令格式。
  #mount -t ntfs -o iocharset=cp936 /dev/sdc1 /mnt/usbhd1
  #mount -t vfat -o iocharset=cp936 /dev/sdc5 /mnt/usbhd2
  linux系统下使用fdisk分区命令和mkfs文件系统创建命令可以将移动硬盘的分区制作成linux系统所特有的ext2、ext3格式。这样,在linux下使用就更方便了。使用下面的命令直接挂接即可。
  #mount /dev/sdc1 /mnt/usbhd1
  挂接U盘
  和USB接口的移动硬盘一样对linux系统而言U盘也是当作SCSI设备对待的。使用方法和移动硬盘完全一样。插入U盘之前,应先用fdisk -l 或 more /proc/partitions查看系统的硬盘和硬盘分区情况。
  [root at pldyrouter root]# fdisk -l
  Disk /dev/sda: 73 dot 4 GB, 73407820800 bytes
  255 heads, 63 sectors/track, 8924 cylinders
  Units = cylinders of 16065 * 512 = 8225280 bytes
  Device Boot Start End Blocks Id System
  /dev/sda1 1 4 32098+ de Dell Utility
  /dev/sda2 * 5 2554 20482875 7 HPFS/NTFS
  /dev/sda3 2555 7904 42973875 83 Linux
  /dev/sda4 7905 8924 8193150 f Win95 Ext’d (LBA)
  /dev/sda5 7905 8924 8193118+ 82 Linux swap
  插入U盘后,再用fdisk -l 或 more /proc/partitions查看系统的硬盘和硬盘分区情况。
  [root at pldyrouter root]# fdisk -l
  Disk /dev/sda: 73 dot 4 GB, 73407820800 bytes
  255 heads, 63 sectors/track, 8924 cylinders
  Units = cylinders of 16065 * 512 = 8225280 bytes
  Device Boot Start End Blocks Id System
  /dev/sda1 1 4 32098+ de Dell Utility
  /dev/sda2 * 5 2554 20482875 7 HPFS/NTFS
  /dev/sda3 2555 7904 42973875 83 Linux
  /dev/sda4 7905 8924 8193150 f Win95 Ext’d (LBA)
  /dev/sda5 7905 8924 8193118+ 82 Linux swap
  Disk /dev/sdd: 131 MB, 131072000 bytes
  9 heads, 32 sectors/track, 888 cylinders
  Units = cylinders of 288 * 512 = 147456 bytes
  Device Boot Start End Blocks Id System
  /dev/sdd1 * 1 889 127983+ b Win95 FAT32
  Partition 1 has different physical/logical endings:
  phys=(1000, 8, 32) logical=(888, 7, 31)
  系统多了一个SCSI硬盘/dev/sdd和一个磁盘分区/dev/sdd1,/dev/sdd1就是我们要挂接的U盘。
  #mkdir -p /mnt/usb
  注:建立一个目录用来作挂接点(mount point)
  #mount -t vfat /dev/sdd1 /mnt/usb
  注:现在可以通过/mnt/usb来访问U盘了, 若汉字文件名显示为乱码或不显示,可以使用下面的命令。
  #mount -t vfat -o iocharset=cp936 /dev/sdd1 /mnt/usb
  挂接Windows文件共享
  Windows网络共享的核心是SMB/CIFS,在linux下要挂接(mount)windows的磁盘共享,就必须安装和使用samba软件包。现在流行的linux发行版绝大多数已经包含了samba软件包,如果安装linux系统时未安装samba请首先安装samba。当然也可以到

2009-06-04技术合集

摩尔:小型芯片公司会消失 摩尔定律还将延续已关闭评论

摩尔:小型芯片公司会消失 摩尔定律还将延续

  作为仙童半导体和英特尔公司的创始人之一,同时也是英特尔前首席执行官兼董事长,戈登?摩尔在过去的半个多世纪亲眼见证了计算机芯片行业的演进史。
  他在预测技术发展趋势方面的眼光也相当敏锐,他所提出的”摩尔定律”为他赢得了世界性的声誉。1965年,摩尔定律首次问世,它预测每一个计算机芯片上的晶体管数量将以每年翻一番的速度增长–后来摩尔将增长率修正为”每两年翻一番”。
  Mercury News十分想了解摩尔对自己亲手创建的公司目前的运营状况有何看法。以下就是我们根据最近一次电话采访所编辑整理的文字。
  问:现在似乎是芯片行业有史以来最低迷的时期。您如何看待目前的经济情况?您有什么感受?
  答:显然,现在的情况很混乱。我认为汽车行业所处的艰难境地确实很糟。我真的不愿意看到那三个公司就这样破产了。这应该是我印象中最为严峻的经济衰退。
  问:在领导英特尔的那段日子里,哪一段是你经历过的经济上最为严峻的时期?
  答:我想,一次是在1974年的石油危机时期。那次,英特尔不得不裁员三分之一并且关闭了几家工厂。还有一次是1985年前后,我们整个行业都遭到重创。我记得1986年英特尔确实亏损了。但是那次危机只影响到半导体行业,确实很特殊,属于特定行业危机。
  问:您预测经济何时会好转?
  答:我可没有预测未来的水晶球。不过就目前情况来看好像还在继续恶化。可能2010年左右经济会复苏。我认为我们还不至于到了世界末日的边缘,但是它对整个世界经济系统来说,的确是一个强烈的打击。
  问:您预测在此期间一些半导体公司会消失或者合并吗?
  答:可能性很大。我们难以预料接下来将会发生什么。我想一些小型芯片公司可能会消失。
  问:您预计经济最终好转时,英特尔会是幸存者之一吗?
  答:当然。英特尔现在就有一个出色的产品线。虽然曾经有一度英特尔在开发新产品上有些乱糟糟,给了AMD机会。但是,现在他们全都意识到了,并且重新走上了正轨。
  问:硅谷最近几年有哪些变化?
  答:当我们开始创建公司的时候–我是说仙童时代,还没有真正意义上的风险投资。因此,也没有多少创业公司。当时有惠普和瓦里安(Varian),但是没有太多其它知名公司。后来,风险投资渐渐形成气候,许多公司纷纷拔地而起。再后来,风险投资变得越来越职业化,你知道,许多斯坦福的MBA毕业生立志成为风险资本家。于是,形势发生了戏剧性的变化,出现了越来越多的可用资金。
  问:这带来了什么样的影响?
  答:创业公司在开发新技术方面比新公司要高效得多。而大公司要想做新东西则会经历一段艰难的时期。这些正是风险投资集团所真正看好的。这是一个将技术带入市场的好办法。
  问:您怎样看待近年来计算机芯片发展的速度?
  答:我对芯片发展的速度感到十分惊讶。拿英特尔来说,我们曾经认为在技术领域每三年开发出新一代产品就是相当快的发展速度。但是,现在他们已经将更新换代的速度缩短至两年。尽管开发新技术日益昂贵而且日趋复杂,但是他们却还是实现了技术的加速发展。
  问:摩尔定律被证明非常具有预见性。但是会不会存在这样一种现象:一些公司因为单纯追求更小的芯片设计而陷入困境?
  答:在这个过程中,他们会发现所付出的代价越来越昂贵。在技术领域保持竞争力是非常困难的。只有为数不多的几家公司真正处于领先前沿。你知道,全世界不过几家而已,像英特尔、IBM和三星等。
  问:您曾经说过计算机芯片元件已经缩小至原子规模,因此很难将它们再缩小更多。我们能不能推出这样一个观点:今后将不再有可能实现每两年将芯片上的晶体管数量翻一番?
  答:这个问题看上去很严峻。用原子做材质是一件很困难的事情,这是事实。但是别忘了,我们过去所取得的每一项突破性进展看上去都像是不可完成的严峻任务。
  戈登?摩尔
  生日:1929年1月3日
  出生地:旧金山
  住址:Woodside,但大部分时间都待在夏威夷的一个岛上
  职业经历:英特尔公司创始人之一、英特尔前首席执行官兼董事长。在此之前,他参与创建了仙童半导体公司。
  教育情况:加州大学伯克利分校化学学士,加州理工大学化学与物理学博士学位。
  家庭成员:妻子Betty;两个儿子Kenneth和Steven
  关于戈登?摩尔你不得不知道的五件事:
  1、2000年,他估计自己的个人资产约为260亿美元。但是由于最近几年为慈善事业慷慨解囊捐出大量资金,再加上英特尔股票下跌,现在他认为自己的资产约为2-3亿美元。
  2、他周游世界去钓鱼–只要是水里游的动物都是他感兴趣的对象,但是主要还是钓鳟鱼。
  3、大部分时间他都把手机关机,因为”我只是不想被打扰。”
  4、1990年,他被授予美国国家科技奖章;2002年被授予美国最高市民荣誉–自由勋章。这两个奖章都由美国总统亲自颁发。
  5、作为一个共和党人,他在2008年11月的总统选举中投票支持约翰?麦凯恩。摩尔:小型芯片公司会消失 摩尔定律还将延续

2009-06-04技术合集

MySQL configure 文件参数已关闭评论

MySQL configure 文件参数

–prefix=/program/mysql 安装路径

–localstatedir=/var/lib/mysql 数据库文件存放路径

–with-comment=Source

–with-server-suffix=-Community

–with-mysqld-user=mysql

–without-debug

–with-big-tables

–with-charset=gbk utf8

–with-collation=gbk_chinese_ci utf8_unicode_ci

–with-extra-charsets=all

–with-pthread

–enable-static

–enable-thread-safe-client

–with-client-ldflags=-all-static

–with-mysqld-ldflags=-all-static

–enable-assembler

–without-innodb

–without-isam

–without-ndb-debug

–with-unix-socket-path=/home/mysql/tmp/mysql.sock

2009-06-04技术合集

linux解压文件常用方法已关闭评论

linux解压文件常用方法

tar -I或者bunzip2命令都可以解压.bz2文件

tar xvfj example.tar.bz2

tar xvfz example.tar.gz

tar xvfz example.tgz

tar xvf example.tar

unzip example.zip

tar -jvxf some.bz,就是把tar的zvxf 改成jvxf

zip/tar rh8下有一个图形界面的软件file-roller可以做这件事。另外可以用unzip *.zip解开zip文件,unrar *.rar解开rar文件,不过unrar一般系统不自带,要到网上下载。

# rpm2cpio example.rpm │ cpio -div

# ar p example.deb data.tar.gz | tar zxf –

Alien提供了.tgz, .rpm, .slp和.deb等压缩格式之间的相互转换: sourceforge.net/projects/alien sEx提供了几乎所有可见的压缩格式的解压接口:sourceforge.net/projects/sex 0058 在多级目录中查找某个文件的方法(青海湖)

find /dir -name filename.ext

du -a | grep filename.ext

locate filename.ext

2009-06-02技术合集

监测Squid日志的五种方法已关闭评论

监测Squid日志的五种方法

  Squid是Unix、Linux环境下一款优秀的代理服务器软件,本文叙述了Squid代理日志的五种监测方法,五种方法各有重点,可根据需要进行选择使用。
  1 使用命令行
  访问时间 持续时间 客户IP 采用协议 传输字节 访问方式 服务IP
  如果我们仅仅需要查看某一个字段,可以用awk命令,它把一个记录行分割成多个字段,我们使用参数传回需要的字段。命令如下:
  # tail -f /var/log/squid/access.log | awk ‘{print$3 ” ” $8 ” ” $7}’
  这种方式的优点是实时性强,显示的是当前正在访问的记录的情况。
  2 用SARG进行监测
  SARG的全称是Squid Analysis Report Generator,即Squid报告分析产生器。利用SARG,可以窗口的方式显示上网用户的浏览记录,包括用户的访问时间,访问站点,传输字节等。
  安装方法略。
  3.使用SARG
  配置完成之后,在终端窗口用命令sarg生成报告文件,然后就可以在客户端使用浏览器通过访问[url]http://Squid[/url]日志服务器地址/squid-reports/来查看squid日志了
  安装方法略。
  4.用Webalizer进行监测
  Webalizer工作方式不同于SARG,这个软件主要侧重于信息的汇总,如带宽、输入输出量,用于比较在不同的时间段网络的使用情况。
  安装方法略。
  5.用Calamaris进行监测
  Calamaris是一个用perl语言写成的程序,如果要使用的话,首先系统里要安装perl解释器。它产生Squid日志的详细报告,包括按高峰时间时的使用情况、流进网内流量、流出流量、进出UDP包、进出TCP包、请求的二级或三级域名产生的报告文档。除用于Squid日志产生的日志分析外,它还可用于其他形式的代理服务软件产生的日志,如NetCache、Inktomi Traffic Server、Oops! proxy server、Novell InterNet Caching System等。
  安装方法略。

2009-05-31技术合集

/etc/sudoers配置范例以及解释已关闭评论

/etc/sudoers配置范例以及解释

  /etc/sudoers配置范例以及解释:
  示例
  下面是sudoers条目的示例.显然,一些示例有点不自然.首先,我们定义别名:
  # User alias specification
  User_Alias FULLTIMERS = millert, mikef, dowdy
  User_Alias PARTTIMERS = bostley, jwfox, crawl
  User_Alias WEBMASTERS = will, wendy, wim
  # Runas alias specification
  Runas_Alias OP = root, operator
  Runas_Alias DB = oracle, sybase
  # Host alias specification
  Host_Alias SPARC = bigtime, eclipse, moet, anchor :\
  SGI = grolsch, dandelion, black :\
  ALPHA = widget, thalamus, foobar :\
  HPPA = boa, nag, python
  Host_Alias CUNETS = 128.138.0.0/255.255.0.0
  Host_Alias CSNETS = 128.138.243.0, 128.138.204.0/24, 128.138.242.0
  Host_Alias SERVERS = master, mail, www, ns
  Host_Alias CDROM = orion, perseus, hercules
  # Cmnd alias specification
  Cmnd_Alias DUMPS = /usr/bin/mt, /usr/sbin/dump, /usr/sbin/rdump,\
  /usr/sbin/restore, /usr/sbin/rrestore
  Cmnd_Alias KILL = /usr/bin/kill
  Cmnd_Alias PRINTING = /usr/sbin/lpc, /usr/bin/lprm
  Cmnd_Alias SHUTDOWN = /usr/sbin/shutdown
  Cmnd_Alias HALT = /usr/sbin/halt, /usr/sbin/fasthalt
  Cmnd_Alias REBOOT = /usr/sbin/reboot, /usr/sbin/fastboot
  Cmnd_Alias SHELLS = /usr/bin/sh, /usr/bin/csh, /usr/bin/ksh, \
  /usr/local/bin/tcsh, /usr/bin/rsh, \
  /usr/local/bin/zsh
  Cmnd_Alias SU = /usr/bin/su
  接下来我们改写了一些编译进的默认值.我们希望sudo在所有情况下使用auth设施在系统日志中作记录.我们不想总是输出初次使用sudo的提示,并且用户millert使用sudo不需要口令.另外,我们为SERVERS Host_Alias中的主机维护一个附加的本地日志文件.并且由于这个日志需要保存许多年,我们要在日志的每一行中加入年份信息.
  # Override built in defaults
  Defaults syslog=auth
  Defaults:FULLTIMERS !lecture
  Defaults:millert !authenticate
  Defaults@SERVERS log_year, logfile=/var/log/sudo.log
  实际上决定谁能运行什么的是用户说明部分:
  root ALL = (ALL) ALL
  %wheel ALL = (ALL) ALL
  我们让root和wheel组的成员可以在任何主机上以任何人的身份运行任何命令.
  FULLTIMERS ALL = NOPASSWD: ALL
  专职系统管理员(millert,mikef和dowdy)可以在任何主机上执行任何命令而不需要进行身份验证.
  PARTTIMERS ALL = ALL
  兼职系统管理员(bostley,jwfox和crawl)可以在任何主机上运行任何命令,但他们首先必须进行身份验证(因为这个条目没有NOPASSWD标签).
  jack CSNETS = ALL
  用户jack可以在CSNETS别名(网络128.138.243.0,128.138.204.0和128.138.242.0)中的机器上运行任何命令.在这些网络中,只有128.138.204.0明确的给出了掩码(用CIDR方式),指明这是个C类网.对CSNETS中的其他网络来说,如果本地主机的掩码匹配的话将使用本地主机的掩码.
  lisa CUNETS = ALL
  用户lisa可以在CUNETS别名(B类网络128.138.0.0)中的任何主机上执行任何命令.
  operator ALL = DUMPS, KILL, PRINTING, SHUTDOWN, HALT, REBOOT,\
  /usr/oper/bin/
  用户operator可以执行的命令被限制在一个简单的maintenance中.这里就是和备份,杀死进程,打印系统,关闭系统和任何在/usr/oper/bin/中的命令.
  joe ALL = /usr/bin/su operator
  用户joe只能su成operator.
  pete HPPA = /usr/bin/passwd [A-z]*, !/usr/bin/passwd root
  用户pete可以修改HPPA上除了root以外任何用户的口令.注意,这里人为passwd不会在命令行上使用多个用户名.
  bob SPARC = (OP) ALL : SGI = (OP) ALL
  用户可以在SPARC和SGI上以任何在OP Runas_Alias中列出的用户(root和operator)的身份运行任何命令.
  jim +biglab = ALL
  用户jim可以在biglab网络用户组中的机器上运行任何命令.因为biglab前面加上了前缀”+”,所以sudo知道这是一个网络用户组.
  +secretaries ALL = PRINTING, /usr/bin/adduser, /usr/bin/rmuser
  网络用户组secretaries中的用户需要帮助管理打印机和进行增删用户的工作,所以需要允许他们在任何机器上执行这些命令.
  fred ALL = (DB) NOPASSWD: ALL
  用户fred可以在DB Runas_Alias (oracle 或 sybase)上以任何人的身份执行任何命令而不需要提供口令.
  john ALPHA = /usr/bin/su [!-]*, !/usr/bin/su *root*
  用户john可以在ALPHA上su成除root的任何人,但是不允许他给su加上任何标志执行.
  jen ALL, !SERVERS = ALL
  用户jen可以在除了SERVERS Host_Alias (master, mail, www 和 ns)以外的任何机器上执行任何命令.
  jill SERVERS = /usr/bin/, !SU, !SHELLS
  用户jill可以在任何SERVERS Host_Alias中的机器上运行/usr/bin/下除了属于SU和SHELLS Cmnd_Aliases外的任何命令.
  steve CSNETS = (operator) /usr/local/op_commands/
  用户steve可以在任何CSNETS中的机器上执行/usr/local/op_commands/中的所有命令,但是只能以operator的身份.
  matt valkyrie = KILL
  用户matt应该可以在他自己的工作站valkyrie上杀死挂起的进程.
  WEBMASTERS www = (www) ALL, (root) /usr/bin/su www
  任何在WEBMASTERS User_Alias (will, wendy,和 wim)中的用户都能够在主机www上以www(网页的所有者)的身份执行任何命令,或者简单的su成www.
  ALL CDROM = NOPASSWD: /sbin/umount /CDROM,\
  /sbin/mount -o nosuid\,nodev /dev/cd0a /CDROM
  所有的用户都应该能够在 CDROM Host_Alias (orion, perseus, hercules)中的主机上mount和unmount光盘驱动器而不需要输入口令.对用户来说敲入这么长的命令有些冗长而乏味,所以把它封装在一个 shell脚本中是一个最佳的选择.
  安全要点
  使用”!”来从ALL中减去命令一般来说不会产生预期作用.用户可以简单的通过把希望执行的命令改名执行的法子来绕过限制.例如:
  bill ALL = ALL, !SU, !SHELLS
  这并不会阻止bill执行SU和SHELLS中列出的命令.他只需要把这些命令改一个名字,或者从一个编辑器或者其他程序中escape到shell(译注:原文是use a shell escape from an editor or other program)就可以运行了.所以这种类型的限制至少应该经过深思熟虑(并从策略上加强它).
  CAVEATS
  sudoers必需总是使用visudo命令来编辑,因为它会锁定文件并且进行语法检察.这强制sudoers摆脱语法错误,因为sudoers有语法错误时sudo是不会运行的.
  当使用机器的网络用户组时(与用户相反),如果您在网络用户组中存贮了完整的主机名(这经常是事实),您需要让主机名像hostname命令的输出一样是完整的或者在sudoers中使用fqdn选项.
  文件
  /etc/sudoers 谁能作什么的一个列表
  /etc/group 本地组文件
  /etc/netgroup 网络组文件

2009-05-31技术合集

linux 限制用户登录已关闭评论

linux 限制用户登录

  控制用户的登录地点
  文件/etc/secruity/access.conf可控制用户登录地点,为了使用access.conf,必须在文件/etc/pam.d/login中加入下面行:
  account required /lib/security/pam_access.so
  access.conf文件的格式:
  permission : users : origins
  其中:
  permission:可以是 “+”或”-“,表示允许或拒绝。
  user:可以是用户名、用户组名,如果是all则表示所有用户。
  origins:登录地点。local表示本地,all表示所有地点,console表示控制台。另外,origins也可以是某一网络。
  后面两个域中加上 except是”除了”的意思。例如:除了用户wheel、shutdown、sync禁止所有的控制台登录:
  -:ALL EXCEPT wheel shutdown sync:console
  root账户的登录地点不在access.conf文件中控制,而是由/etc/securetty文件控制。
  必须保证/etc/pam.d/login有下面这行:
  auth required pam_securetty.so
  etc/securetty文件指定了允许root登录的tty设备,由/bin/login程序读取,其格式是一个被允许的名字列表,你可以编辑/etc/securetty且注释掉如下的行。
  # tty2
  # tty3
  # tty4
  # tty5
  # tty6
  这时,root仅可在tty1终端登录。
  关于PAM的一些解释
  热身:
  何要授予用户特权的程序都要能够进行用户认证。当您登入系统时,您需要提供用户名和口令,而后登入进程据此以检验登入的合法性—确认您就是该用户。还有除口令认证之外的其他认证形式,而且口令的存储方式也是各不相同的。
  1、说明
  A、PAM可加载目标文件(模块)是在RedHat Linux系统中它们被放在了/lib/security目录下
  B、PAM库本地系统配置文件/etc/pam.conf or /etc/pam.d/目录下的一些配置文件来设置
  2、# more login
  #%PAM-1.0
  auth required pam_securetty.so
  用来控制root用户只可以从包含在/etc/securetty文件中的终端登录系统。
  auth required pam_stack.so service=system-auth
  auth required pam_nologin.so
  提供标准的UNIX nologin登录认证。如果/etc/nologin文件存在,则只有root用户可以登录,其他用户登录时只会得到/etc/nologin文件的内容。如果/etc/nologin不存在,则该模块没有作用。
  account required pam_stack.so service=system-auth
  password required pam_stack.so service=system-auth
  # pam_selinux.so close should be the first session rule
  session required pam_selinux.so close
  session required pam_stack.so service=system-auth
  session optional pam_console.so
  # ls -l /dev/pts/1
  crw–w—- 1 root tty 136, 1 May 15 21:19 /dev/pts/1
  # ls -l /dev/pts/2
  crw–w—- 1 test tty 136, 2 May 15 21:20 /dev/pts/2
  用户登陆时,它将TTY设备权限改成该用户所有,当用户退出时,将TTY设备权限改为root所有。
  # pam_selinux.so open should be the last session rule
  session required pam_selinux.so multiple open
  login要做两件事,首先查询用户,然后为用户提供所需服务,例如提供一个shell程序。
  通常,login会提示用户输入密码。然后对密码进行校验,这项任务就是Linux-PAM完成的。
  上例中三个required连续使用, 即便第一个模块失败了,也要完成三个模块的校验。这是一种安全上的考虑 —这种设计永远不要让用户知道他或她们为什么会被拒绝,否则会让其更容易突破认证。可以将”required”改成”requisite”来修改这种认证方式。如果有任何”requisite”模块以失败返回,整个PAM认证将终止再调用其它模块也以失败返回。
  3、pam_unix认证模块
  所属类型: account; auth; password; session
  功能描述:该模块是标准UNIX认证模块pam_unix的替代模块。
  在作为auth类型使用时,此时该模块可识别的参数有debug、audit、use_first_pass、try_first_pass、nullok、nodelay,主要功能是验证用户密码的有效性,在缺省情况下(即不带任何参数时),该模块的主要功能是禁止密码为空的用户提供服务;
  auth required /lib/security/$ISA/pam_env.so
  auth sufficient /lib/security/$ISA/pam_unix.so likeauth nullok
  auth required /lib/security/$ISA/pam_deny.so
  在作为account类型使用时,此时该模块可识别的参数有debug、audit,该模块主要执行建立用户帐号和密码状态的任务,然后执行提示用户修改密码,用户采用新密码后才提供服务之类的任务;
  account required /lib/security/$ISA/pam_unix.so
  account sufficient /lib/security/$ISA/pam_succeed_if.so uid < 100 quiet
  account required /lib/security/$ISA/pam_permit.so
  在作为password类型使用时,此时该模块可识别的参数有debug、 audit、 nullok;、not_set_pass、use_authtok、try_first_pass、use_first_pass、md5、bigcrypt、shadow、nis、
  remember,该模块完成让用户更改密码的任务;
  password requisite /lib/security/$ISA/pam_cracklib.so retry=3
  password sufficient /lib/security/$ISA/pam_unix.so nullok use_authtok md5
  shadow
  password required /lib/security/$ISA/pam_deny.so
  在作为session类型使用时,此时该模块没有可识别的参数,该模块仅仅完成记录用户名和服务名到日志文件的工作。
  session required /lib/security/$ISA/pam_limits.so
  session required /lib/security/$ISA/pam_unix.so
  可带参数:
  debug:将调试信息写入日志
  audit:记录更为信息的信息
  nullok:缺省情况下,如果用户输入的密码为空,则系统能够不对其提供任何服务。但是如果使用参数,用户不输入密码就可以获得系统提供的服务。同时,也允许用户密码为空时更改用户密码。 ?
  nodelay:当用户认证失败,系统在给出错误信息时会有一个延迟,这个延迟是为了防止。黑客猜测密码,使用该参数时,系统将取消这个延迟。通常这是一个1秒钟的延迟。
  try_first_pass:在用作auth模块时,该参数将尝试在提示用户输入密码前,使用前面一个堆叠的auth模块提供的密码认证用户;在作为password模块使用时,该参数是为了防止用户将密码更新成使用以前的老密码。
  use_first_pass:在用作auth模块时,该参数将在提示用户输入密码前,直接使用前面一个堆叠的auth模块提供的密码认证用户;在作为password模块使用时,该参数用来防止用户将密码设置成为前面一个堆叠的password模块所提供的密码。
  no_set_pass:使密码对前后堆叠的password模块无效。
  use_authok:强制使用前面堆叠的password模块提供的密码,比如由pam_cracklib模块提供的新密码。
  md5:采用md5对用户密码进行加密。
  shadow:采用影子密码。
  unix:当用户更改密码时,密码被放置在/etc/passwd中。
  bigcrype:采用DEC C2算法加密用户密码。
  nis:使用NIS远处过程调用来设置新密码。
  remember=x:记录x个使用过的旧密码,这些旧密码以MD5方式加密后被保存在/etc/security/opasswd文件中。
  broken_shadow:在作为account使用时,该参数用来忽略对影子密码的读错误。
  likeauth:未知。
  配置实例:
  参考/etc/pam.d/system-auth
  设置密码中的常见错误信息?
  ⑴当用户输入的密码字符数太少时:
  BAD PASSWORD: it’s WAY too short
  ⑵当用户输入的密码相同字符太多时:
  BAD PASSWORD: it does not contain enough DIFFERENT characters
  ⑶当用户输入的密码为某英文单词时:
  BAD PASSWORD: it is based on a dictionary word
  ⑷当用户在”(current) UNIX password:”提示后输入的现有密码错误时:passwd: Authentication token manipulation error
  ⑸当用户两次输入的密码不相同时:Sorry, passwords do not match passwd: Authentication information cannot be recovered
  ⑹当用户输入的密码未被系统接受时:
  passwd: Authentication token manipulation error
  example 1
  auth required pam_securetty.so
  只用来控制root用户只可以从包含在/etc/securetty文件中的终端登录系统。
  telnet 服务使用PAM的login进行用户身份验证,#more /etc/pam.d/login便能看到此行,要让root不受限制远程login,第一种方法注销此处这一行,另一种在 /etc/securetty文件中加入诸如pts/n(1-n);
  同理如果想限制root使用ssh远程进入系统,只需在/etc/pam.d/sshd文件中加入这行;auth required pam_securetty.so即可。
  example 2
  account required pam_access.so
  pam_access是pam中处理用户访问控制的模块,没有使用pam前,linux对用户的所有访问控制都是借助hosts.allow, hosts.deny文件,实现所有服务的访问控制,再加上usertty就是对用户登陆控制(专门是针对login)。
  一种是直接修改/etc/security/access.conf
  另一种是使用参数accessfile=/path/to/file.conf
  例如修改access.conf文件:
  +:root:ALL //root从任意位置连入系统
  +:redhat:164.70.12.//redhat只能从这个网段连入
  -:ALL:ALL 其余DENY
  然后 # vi /etc/pam.d/sshd
  加入这一行 account required pam_access.so
  example 3
  限制用户LOGIN次数
  在/etc/security/limits.conf :
  加入redhat – maxlogins 3
  然后 # vi /etc/pam.d/sshd
  加入这一行session required pam_limits.so
  则同一用户至多3-1次login入系统
  example 4
  限制用户LOGIN时间
  # vi /etc/security/time.conf加入以下一行
  sshd;*;redhat;!Tu2200-2230
  # vi /etc/pam.d/sshd 加入以下一行
  account required pam_time.so
  则redhat每星期二晚上22:00-22:30不能使用SSH来login系统。
  example 5
  用户访问控制
  # vi /etc/pam.d/vsftpd 加入以下一行
  auth required pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
  # vi /etc/ftpusers …….