2009年2月26日星期四

linux下的帐号管理(用户管理)





















linux下的帐号管理(用户管理)

/etc/passwd文件
登录名:经过加密的口令或占位符:UID号:默认GID:GECOS信息:主目录:登录shell
UID,GID 0:root,1:bin,2:daemon。建议从500开始分配,并且最大值为32767
eg:
oracle:x:500:500::/home/oracle:/bin/bash
jboss:x:501:2::/usr/local/jboss/:/bin/bash


/etc/shadow
存放加密的的口令
登录名:加密后的口令:上次修改口令的时间:二次修改口令之间最少的天数:二次修改口令之间最多的天数:提前多少天警告用户口令即将到期:在口令过期多少天后禁用帐号:账号过期的日期:保留字段
eg:
oracle:$1$j0H020LU$MpoC3/wJtoVuuW/Zzg5UI.:13868:0:99999:7:::
jboss:!!:13867:0:99999:7:::

工具pwconv
使用工具pwconv让shadow与passwd文件的内容保持一致,补上新用户,删除不在passwd中的用户。使用/etc/login.defs里指定的默认值填充shadow中的参数。

/etc/group
包含组名称与组成员
组名:加密的口令或X:GID:成员列表用,分隔
eg:
root:x:0:root
bin:x:1:root,bin,daemon
daemon:x:2:root,bin,daemon

添加用户步骤
1:编辑passwd,shadow,定义用户帐号。vi
2:把用户添加到group文件中。vi
3:设置初始口令。passwd
4:创建用户主目录,改变用户主目录属主与属性。mkdir ,chown, chmod
5:将默认的启动文件复制到用户的主目录。/usr/local/lib/skel/etc/skel内有一组默认的启动文件
cp /usr/local/lib/skel/[a-zA-Z]* ~tom
chown tom:staff ~tom/[a-zA-Z]*
chmod 600 ~tom/[a-zA-Z]*
6:设置用户的邮件主目录并建立邮件别名
7:核实帐号的正确性

删除用户
1:将用户从所有本地用户数据库或者电话簿中删除
2:将用户从aliases文件中删除,或者添加一个转发地址
3:删除用户的crontab文件与所有挂起的at作业
4:终止所有仍在运行的用户进程
5:将用户从passwd、shadow、group、gshadow文件中删除
6:删除用户的主目录
7:删除用户的邮件存储文件

查找无属主的文件
find / -xdev -nouser | less


禁止用户登录
在shadow文件的加密口令前加一个字符

帐号管理工具命令
以下命令如其字面意义
useradd
usermod
userdel
groupadd
groupmod
groupdel
passwd




linux下添加链接与删除链接(ln命令的用法)











linux下添加链接与删除链接(ln命令的用法)

添加链接使用ln命令
用法:
#ln --help
用法:ln [选项]... 目标 [链接名]
  或:ln [选项]... 目标... 目录
  或:ln [选项]... --target-directory=目录 目标...
创建连至指定<目标>的链接,并可选择性指定<链接名>。
如果没有指定<链接名>,会在目前的目录中创建一个和<目标>名称一样的链接。
当使用第二种格式而<目标>多於一个时,最后的参数必须是目录;这样会在指定的
<目录>中分别创建连至每个<目标>的链接。默认会创建硬链接,若
使用 --symbolic 选项则创建符号链接。当创建硬链接时,每个<目标>都必须存
在。

长选项必须用的参数在使用短选项时也是必须的。
      --backup[=CONTROL]      make a backup of each existing destination file
  -b                          like --backup but does not accept an argument
  -d, -F, --directory         allow the superuser to attempt to hard link
                                directories (note: will probably fail due to
                                system restrictions, even for the superuser)
  -f, --force                 remove existing destination files
  -n, --no-dereference        如果目的地是一个链接至某目录的符号链接,会将
                              该符号链接当作一般文件处理,先将该已存在的
                              链接备份或删除
  -i, --interactive           确认是否删除目的地文件
  -s, --symbolic              创建符号链接而不是硬链接
  -S, --suffix=后缀           自行指定备份文件的<后缀>
      --target-directory=目录 在指定<目录>中创建链接
  -v, --verbose               链接前先印出每个文件的名称
      --help     显示此帮助信息并离开
      --version  显示版本信息并离开

备份文件的后缀为‘~’,除非以 --suffix 选项或是 SIMPLE_BACKUP_SUFFIX
环境变量指定。版本控制的方式可透过 --backup 选项或 VERSION_CONTROL 环境
变量来选择。以下是可用的变量值:

  none, off       不会进行备份 (即使使用了 --backup 选项)
  numbered, t     备份文件会加上数字
  existing, nil   若有数字的备份文件已经存在则使用数字,否则使用普通方式备份
  simple, never   永远使用普通方式备份

删除链接时,直接用rm命令



例:
添加
ln -s /usr/jboss4.0.5.GA/ jboss

删除
rm jboss

ubuntu8.10下的使用更低版本的tar进行打包






ubuntu8.10下的使用更低版本的tar进行打包

在ubuntu8.10下写了个脚本,将应用打包后上传到服务器上,结果在服务器上用tar解包失败
使用tar --version发现,ubuntu8.10下的tar是1.20,而服务器上的是1。14。
解决办法有二:一是服务器的tar升级到1.20,二是ubuntu上使用1.14来打包,出于种种原因决定使用第二种方案。

于是到http://www.gnu.org/software/tar/#TOCdownloading下载1.14的tar包

#tar zxvf tar-1.14.tar.gz
#cd tar-1.14
#./config
#make
#cd src
#cp tar /home/zmq/java/tar1.4/tar

修改原来的脚本
原:tar zcvf xxx.tar.gz xxx.war/
后:/home/zmq/java/tar1.4/tar zcvf xxx.tar.gz xxx.war/

重新运行脚本,OK,成功,:)




2009年2月25日星期三

linux标准目录及内容












linux标准目录及内容

/bin        获得最小的系统可操作性所需要的命令
/boot        内核和加载内核所需的文件
/dev    终端、磁盘、调制解调器等的设备项
/etc    关键的启动文件和配置文件
/home    用户的主目录
/lib    C编译器的库和部分C编译器
/media    可移动介质上文件系统的安装点
/opt    可选的应用软件包(尚未广泛采用)
/proc    所有正在运行进程的映像
/root    超级用户的主目录
/sbin    引导、修复或者恢复系统的命令
/tmp    每次重新引导就消失的临时文件
/usr    次要文件和命令的层次结构
/usr/bin    大多数命令和可执行文件
/usr/include    编译C程序的头文件
/usr/lib    库,供标准程序使用的支持文件
/usr/local    本地软件(用户所编写或者安装的软件)
/usr/local/bin    本地的可执行文件
/usr/local/etc    本地系统配置文件和命令
/usr/local/lib    本地的支持文件
/usr/local/sbin    静态链接的本地系统维护命令
/usr/local/src    /usr/local/*的源代码
/usr/man    联机用户手册
/usr/sbin    不太关键的系统管理命令和修复命令
/usr/share    多种系统共同的东西(只读)
/usr/share/man    联机用户手册
/usr/src    非本地软件包的源代码
/var    系统专用数据和配置文件
/var/adm    各种不同的东西:日志、系统设置记录、奇怪的管理信息
/var/log    各种系统日志文件
/var/spool    供打印机、邮件等使用的假脱机目录
/var/tmp    更多的临时空间(在重新引导后,文件予以保留)

Linux系统管理技术手册(第二版)

http://www.china-pub.com/39702



2009年2月24日星期二

linux的/proc目录






linux中的/proc目录

linux的ps和top命令都从/proc目录读取进程的状态信息。有关系统状态的各种有意义的信息也都放在这个目录里,不过这个目录是一个伪目录。它只存在内存当中,而不占用实际硬盘空间。它以文件系统的方式为访问系统内核数据的操作提供接口。proc文件是系统实时地从系统内核读出所需信息生成的,在用ls -l命令下列出的文件大小都为0。需要使用cat或者more来查看文件内容。

# du -hs /proc
936M    /proc

# df /proc
Filesystem             1K-块        已用     可用 已用% 挂载点
none                         0         0         0   -  /proc
^^^证明这是个伪目录

/proc # ls
1      2056  2983  313   3292  3338  3412  3532  4716  54    6151  6391  8          diskstats    iomem      locks       pci            tty
1565   2059  2993  3136  33    3340  3491  3533  4739  55    6233  6394  9          dma          ioports    mdstat      scsi           uptime
18733  2547  3     3148  3322  3342  3497  3534  4811  56    6279  6396  acpi       driver       irq        meminfo     self           version
1962   2813  307   3171  3328  3344  35    4     4907  5928  6317  6398  buddyinfo  execdomains  kallsyms   misc        slabinfo       vmstat
2      2817  308   3202  333   3346  3506  4233  5     5981  6319  6400  bus        fb           kcore      modules     stat
200    2828  3094  3203  3330  3348  3518  4393  5168  6     6333  6409  cmdline    filesystems  keys       mounts      swaps
2029   2847  3109  3215  3332  3350  3529  4401  52    6054  6342  6410  cpuinfo    fs           key-users  mtrr        sys
2030   2867  312   3232  3334  3352  3530  4617  5359  6120  6345  6412  crypto     ide          kmsg       net         sysrq-trigger
2036   2897  3128  3273  3336  34    3531  4619  5363  6122  6390  7     devices    interrupts   loadavg    partitions  sysvipc
进程所有的信息被 放到了其PID起名的子目录中。关于pid可以通过ps命令得到


文件名    内容
      apm 高级电源管理信息

cmdline 内核命令行


Cpuinfo 关于Cpu信息


Devices 可以用到的设备(块设备/字符设备)


Dma 使用的DMA通道


Filesystems 支持的文件系统


Interrupts 中断的使用


Ioports I/O端口的使用


Kcore 内核核心印象


Kmsg 内核消息


Ksyms 内核符号表


Loadavg 负载均衡


Locks 内核锁


Meminfo 内存信息


Misc 杂项


Modules 加载模块列表


Mounts 加载的文件系统


Partitions 系统识别的分区表


Rtc 实时时钟


Slabinfo Slab池信息


Stat 全面统计状态表


Swaps 对换空间的利用情况


Version 内核版本


Uptime 系统正常运行时间


进程子目录中的文件内容

Cmdline 命令行参数


Environ 环境变量值


Fd 一个包含所有文件描述符的目录


Mem 进程的内存被利用情况


Stat 进程状态


Status 进程当前状态,以可读的方式显示出来


Cwd 当前工作目录的链接


Exe 指向该进程的执行命令文件


Maps 内存映象


Statm 进程内存状态信息


Root 链接此进程的root目录


/proc/sys目录是可写的,可以通过它来访问或修改内核的参数,以达到优化系统的目的,不过需要相当小心,以免系统崩溃。:P






2009年2月19日星期四

bash shell 命令行编辑快捷











bash shell 命令行编辑快捷键

1.移动
ctrl+F    向前移动一个字符
ctrl+B    向后移动一个字符
ctrl+E    到行尾
ctrl+A    到行首
ctrl+L    清屏
alt+F    到前一个词首
alt+B    到后一个词首


2.编辑
ctrl+D    删除当前字符
ctrl+V+[特殊字符]    添加特殊字符,如ctrl+V+TAB添加一个TAB字符
alt+U    将当前单词变为大写
alt+L    将当前单词变为小写

3.剪切与粘贴
ctrl+U       剪切到行首
ctrl+K        剪切到行尾
ctrl+W        剪切前一个单词
ctrl+C        删除当前行,终止命令
alt+D        剪切到下个单词
ctl+Y        粘贴最近剪切的文本


在ubuntun下需要编辑->快捷键,取消“启用所有菜单快捷键”。来避免alt与菜单命令冲突

2009年2月17日星期二

使用ssh免登录执行远程服务器脚本

使用ssh免登录执行远程服务器脚本

测试服务器上有一个down.sh脚本,用于自动下载应用程序包并执行更新。现在需要在本机ubuntu上自动执行此更新脚本。

使用ssh的自动登录,执行命令功能

1:生成公钥,私钥以用于自动登录
$ssh-keygen
期间会提示输入密码,此密码用于初次用来登录时确认私钥取得。公钥,私钥生成在[home]/.ssh/下
$ ls -a .ssh/
.  ..  id_rsa  id_rsa.pub  known_hosts
2:将id_rsa.pub的内容添加到测试服务器的[home]/.ssh/authorized_keys文件末尾
3:在本机运行远程脚本,期间会提示输入密码。选择记住密码即可。
$ssh root@192.168.1.130 ./down.sh











2009年2月10日星期二

python中的函数使用到全局变量时的处理







python中的函数使用到全局变量时的处理

num=0

def count():
    print num
    num += 1

if __name__ == '__main__':
    for i in range(8):
        count()
        
    print num


报错:
    count()
  File "drill\test.py", line 7, in count
    print num
UnboundLocalError: local variable ‘num’   referenced before assignment

修改为
def count():
    num = 0
    num = num + 1
不报错,但是结果不正确

主要原因是在于num += 1这一行,因为在函数中修改了num变量,而python认为num是局部变量,此时变量没有赋值,所以报出错误。


修改为
def count():
    global num
    num += 1

程序通过,并且结果正确