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/397022009年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目录
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
测试服务器上有一个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
程序通过,并且结果正确
订阅:
博文 (Atom)