linux笔记来自兄弟连李明

查看当前登录用户所在的组  groups ;    查看所有组 cat/etc/group  

查看当前登录用户 w 或者who            查看自己的用户名whoami       

查看所有用户cut -d : -f 1 /etc/passwd

 

 

切换用户 su - 用户名

 

 

命名    . 隐藏文件    大小写敏感

 

 

目录    . 当前目录    ..当前目录的父目录

 

 

ls (list) -a 显示所有文件(包括隐藏文件)

          -l 详细信息显示

          -d 查看目录属性

          -i (inode)显示文件标识符(内核识别用)

 

drwxr-xr-x      2           root        root  4096

文件类型   d  目录directory            所有者      所属组    其他人

          -  二进制文件               owner       group    other

          l  链接文件link

read  write execute执行 

 

 

cd   cd ..   pwd

 

touch 文件名     创建空文件

 

mkdir 目录名     创建目录

 

cp               可以把多个文件复制到一个地方

cp -R dir1 dir2  复制目录

  -p  保持备份目录及文件属性(文件修改的时间等)

  -u  增量备份        cp -Rpu

   远程备份可用 scp

 

mv dir1源 dir2目的   1、剪切

mv a b              2、改名

 

rm 【-r】        删除文件【目录】

rm -f            强制删除

 

cat  文件名       显示文件内容

more 文件名       显示文件内容  空格/f 显示下一页

                                enter  显示下一行

                                q       退出

 

head -num 文件名    查看文件前num行

tail -num 文件名    查看文件后num行

     -f   文件名    动态显示文件内容

 

 

ln -s 源文件 目标文件        软链接 

ln   源文件目标文件        硬链接

1、软链接   lrwxrwxrwx -->  10  时间值(创建的时间) 类似快捷方式;源文件删除,则无意义;可以在不同的分区

2、硬链接   源文件不在他还可以在;相当于cp,但同步更新,因为其和源文件有相同的文件标识符(inode,i节点);

           不能跨分区,只能和源文件在一个分区下

 

 

chmod u + r 文件名     u-所有者   chmod u+wx

     g - w            g-所属组   chomd g=rwx

     o = x            o-其他人   chmod o-rx

 

chmod 641 文件名       rwx可读可写可执行 r-4   w-2  x-1

 

文件目录rwx属性意义

文件                                         目录

r 可以查看文件的内容cat,more,head,tail       ls 可列出目录内容

w 可以修改文件的内容echo,vi                  touch,mkdir,rm可在目录中创建、删除文件

x 可以执行文件,命令、脚本                   cd可以进入目录

 

 

chown 用户名 文件/目录名     改变文件/目录名的所有者(chownwangt test;将test文件是所有者改为wangt)

chgrp 用户名 文件/目录名     改变文件/目录名的所属组

 

 

umask -S      显示、设置文件/目录的缺省(默认)权限

umask       (可能得到0022  0-特殊权限位;  022-用户权限位权限掩码值)

              linux中缺省创建的文件不能授予可执行的x权限(目录可以),所以777-022-111即为默认创建文件的权限

              umask 027   (即777-027=750默认目录为rwxr-x---而文件-111=640)

 

 

文件搜索命令

which 命令;   显示系统命令所在的目录,还有命令的别名信息

whereis 命令; 显示系统命令所在的目录,还有帮助信息,及帮助信息所在的路径

 

find 【搜索路径】【 搜索关键字】: 查找文件或目录

               -name 文件名;  eg:find /etc -name init

                   ( * 匹配任意字符 init* ;? 匹配单个字符init???

               -size 文件大小; block数据块 512字节=0.5KB,100MB=204800block

                     大于 +    find / -size +204800

                     小于 -

                     等于 =    find / -size 204800

               -user  查找属于某一用户的文件    find /home -user wangt

               -时间 1、天 ctimeatime mtime

                     2、分钟 cmin aminmmin

                      c-change改变,文件的属性被修改过,所有者、所有组、权限

                       a-access 访问,文件被浏览过

                       m-modify 修改,表示文件内容被修改过

                     3、+超过多少时间

                        -之内    find /etc -mmin -120  ;etc下120分钟之内被修改过的文件

               -type 文件类型;  f 二进制文件  l软链接  d目录

               -连接符  1、  -a and 逻辑与;   -o or逻辑或;   find /etc -name init* -a -type l

                        2、  find_ _ _ _ -exec 命令 { } \ ;  有分号

                                         -ok 会询问确认

                             { }find查询的结果; \转义符 符号命令使用本身的含义

                             find  /etc -name init* -a -type f -exec ls -l {} \;

               -inum i节点    find . -inum 16 -exec rm {} \;

 

locate 关键字  查找文件或目录,只有linux系统有,在下面的数据库中查找,有时不更新数据库找不到,但速度比find快

updatedb 建立整个系统目录文件的数据库

                            

 

grep 指定字串 源文件     在文件中搜索字串匹配的行并输出  grep ftp /etc/services

                                         grep-v "^#" /etc/inittab | more 排除行首有#行

 

 

man   manual命令或配置文件帮助   man 1 ls 命令(1可省略)      man 5 passwd   配置文件

 

info           获得帮助

 

whatis -命令   基本用法,简短信息

 

命令 --help    命令的主要选项

apropos 

makewhatis更新数据库

 

help 查看shell内置命令的帮助,cd,echo等,用man不行,安装shell时自带的命令

 

 

 

 

 

压缩解压命令(linux的压缩格式window都支持,但window的linux的不一定支持)

gzip file          .gz 文件 1、只能压缩文件,不能压缩目录

                            2、不保留原文件

gunzip 或gip -d    解压缩

 

tar 选项 目录      打包目录    在压缩后格式 .tar.gz

   -c 产生打包文件

   -v 显示详细信息

   -f 指定压缩后的文件名

   -z 打包同时压缩

        tar -zcf newdir.tar.gz newdir 把newdir打包

 

   -x 解包.tar文件

   -v 显示详细信息

   -f 指定解压文件

   -z 解压缩   

        tar -zxvf dirl.tar.gz

file 文件  查看文件的类型

  

 

zip     可压缩文件和目录  .zip 默认window和linux通用格式 ,会保留原文件

    -r  压缩目录     zip -r new.zip /etc/new

unzip   解压缩

 

 

bzip2 选项 文件        .bz2      eg: bzip2 -k new

     -k 保留原文件

bunzip2 【-k保留压缩包】  解压

 

 

网络通信指令:

write 用户名     向另外一个用户发信息,以ctrl+D作为结束 eg:write wangt

 

wall [message] [文件名]    向所有用户广播信息(write all)

 

ping 选项 IP地址    测试网络连通性,网络时延time,丢包率packetloss

                    ping 127.0.0.1回环地址

    -c num    定义发送请求包的数量

    -s 数据包大小  定义发送请求包的大小

 

ifconfig  显示网卡信息   etho实际的物理网卡,lo回环地址的网卡

ifconfig etho ip  改ip

 

shutdown 关机

         -h now  立即关机

reboot   重启

 

 

shell应用技巧bash

1、用Tab键进行命令补全

2、clear/ctrl +l 

3、ctrl +u 删除一行

4、history 写过的命令列表

5、命令别名

alias 查询别名

alias copy=cp     alias xrm="rm -i" 命令的组合要用引号

unalias 删除别名

 

输出重定向 0  对于每一个进程预先定义三个文件描述字0、1、2

ls -l /tmp > /temp.msg 把命令执行的信息重定向到文件中

date /tmp >> /temp.msg 把命令执行的信息追加到一个文件中

 

输入重定向 1

wall < /etc/issue

 

错误输出重定向 2

cp -R /usr /backup/usr.bak 2> /bak.error

ls /tmp 2> ls.err

 

 

管道:将一个命令的输出传送给另一个命令,作为另一个命令的输入

管道可以连接无数个命令  命令1|命令2|命令3...|命令n

ls -l /etc | more

ls -l /etc | grep init | wc -l 有几行

 

命令连接符

1、;间隔的命令顺序依次执行

2、&& 只有&&前面的命令执行成功后,他后面的命令才执行

      command1 && command2

      成功          执行

      失败          不执行

      ls && pwd

3、||  command1 || command2

      成功          不执行

      失败          执行

 

命令替换符:将一个命令的输出作为另一个命令的参数

   ls-l `which touch`相当于 ls -l /bin/touch

 

 

 

Vim/Vi 文本编辑器:建立、编辑、显示文本文件

1、命令模式

  定位:

      h j k l 上下左右

      $ 移到行尾

      0  移到行首

      H M L 移到屏幕的上、中、下

      gg 到第一行

      G  到最后一行

      nG  或 :n 到第n行

      :set nu 设置行号

      :set nonu 取消行号

  删除命令

      x   删除光标所在处字符

      nx  删除光标所在处后n个字符

      ndd  删除n行

      dG  删除光标所在行到文件末尾的内容

      D   删除从光标所在处到行尾

      :m,nd  删除指定范围的行  

  复制和剪切:

      yy、Y 复制当前行

      nyy 、nY 复制当前行以下n行

      dd  剪切当前行

      ndd 剪切当前行以下n行

      p、P 粘贴在当前光标所在行下或行上

  替换和取消

      r   取代光标所在处字符

      R   从光标所在处开始替换字符,按Esc结束

      u   取消上一步操作

  搜索和替换命令:

      /string  向前搜索指定字符串,区分大小写。(搜索时忽略大小写:setic 区分set noic)

      n ,N       搜索指定字符串的下/上一个出现位置

      :%s/old/new/g  全文替换old成指定字符串new

      :n1,n2s/old/new/g  在一定范围内替换指定字符串  g替换时不询问,c询问

 

2、插入模式

  a 在光标后插入

  i 在光标前插入

  o 在光标下一行插入

  A 在本行行末附加文本

  I 在本行开始插入文本

  O 在光标上插入新行

 

3、编辑模式 

  保存和退出命令

      :w   保存修改

      :w new_filename    另存为指定文件

      :wq                 保存修改并退出

      ZZ       快捷键,保存修改并退出

      :q!      不保存修改退出

      :wq!     保存修改并退出(文件所有者可忽略文件的只读属性)

 

4、应用实例

  :r 文件名     #导入文件 eg:  :r /etc/test

 :!            #在Vi中执行命令  :! date            :r ! date 

 :map 快捷键促发命令      :map ^PI#<ESC>     ctrl+v ctrl+p

                            :map ^B 0x   按ctrl+b删除光标所在行首的一个字母

  连续行注释        :n1,n2s/^/#/g   (^表示行首,行首加#)   :4,8/^#//g去掉4到8行行首#

                    :1,5s/^/\/\//g  在行首插入//,\为转义字符

 :ab       替换  eg: :ab mymail zzwangtao911@126.com

                       :unab mymail

 

5、每一个用户都有一个宿主目录~     缺省时

                                      管理员      root  /root

                                      普通用户    wangt /home/wangt

  ~/.vimrc 是vi的配置文件 vi /root/.vimrc  或直接 vi ~/.vimrc  

  作用:在其中存放一堆命令,用Vi编辑文件时,命令直接生效,如快捷键等

 

 

 

 

系统引导流程 

1、固件firmware(CMOS/BIOS)   POST加电自检

   硬件时钟hwclock  软件时钟(系统的时间,如date) hwclock--help 学习改变软/硬时间同步

 

2、自举程序BootLoader(GRUB)  载入内核

   读取硬盘MBR,即主引导记录,其中保存了BootLoader、Partitiontable磁盘分区表、Magic Number结束标志字。载入GRUB。 vi /etc/grub.conf,grub的配置信息

 

3、载入内核 Kernel   驱动硬件

 

4、启动进程 init

  init进程的pid=1, pid=0的进程为内核调度器,是init的父进程ppid。父进程停止,子进程必须停止;如果子进程不停止,即为孤儿进程,系统发现以后,自动把它的父进程指向

;子进程死亡,父进程还和其联系,则成为僵尸进程。

 

5、读取执行配置文件/etc/inittab          .conf tab

 

6、Default runlevels

 0  halt 关机

 1  single user mode 单用户模式,没有图形界面,只有root一个用户,相当于window的安全模式

 2  Multiuser,withoutNFS  多用户模式,和3一样,没有NFS,实现unix系列系统间的文件共享

 3  Full multiuser mode

 4  unused      自定义

 5  Xll         一般图形界面模式

 6  reboot      重启模式

 

  运行级别的切换

 runlevel    查看运行级别,没有切换过N,切换过S

 init num    直接切换 init[0123456Ss]

 

 

more /etc/inittab

man inittab

     

inittab中每一句组成形式id:runlevels:action:process 

  id 标识符,标记条目的唯一性

 runlevels  指定运行级别0到6,可以多个

 action   运行状态

 process  指定要运行的脚本/命令

 

 id:3:initdefault:

 si::sys:/etc/rc.d/rc.sysinit(系统时钟设置等) 不管哪一个运行级别启动时都要执行此process脚本

 /etc/rc.d/rc文件,判断系统缺省运行级别,完成后续引导,如运行级别是3,则运行/etc/rc.d/rc3.d (存在rc0.d到rc6.d),/etc/rc.d/rc3.d下,有S,K开头的文件,S start启动; K kill关闭。 

 

启动过程总结:firmware  bootLoader  Kernel init  /etc/inittab  initdefault  /etc/rc.d/rc.sysinit  /etc/rc.d/rc /etc/rc.d/rcN.d( N=0-6) username  password

 

action常用取值:

   initdefault:缺省启动级别

   sysinit:系统启动执行process中指定的命令

   wait:执行process中指定的命令,并等其结束载运行其他命令

   once:执行process中指定的命令,不等结束

   ctrlaltdel:按下Ctrl + Alt + Del时执行process中指定的命令

   powerfail:  电源错误时,执行process中指定的命令,不等结束

   powerokwait:  电源恢复时,执行process中指定的命令

   respawn:  一旦process中指定的命令终止,便重新运行该命令

 

/etc/rc.d/init.d服务

/etc/init.d

 

改变系统的启动设置三种方法

ln  软链接,自己写脚本my.script,设置软链接

   eg:   vi/etc/rc.d/init.d/my.script;  chmod u+x/etc/rc.d/init.d/my.script;

         ln -s /etc/rc.d/init.d/my.script /etc/rc.d/rc3.d/S100my.script

     

chkconfig --list 系统中所有已经安装的服务其缺省的启动状态

          --levels 级别 name on/off/reset..    eg:chkconfig --levels 234 sshd off 

 

ntsysv  更改当前运行级别的启动设置

      ntsysv --level 3    级别3的启动设置,空格启动*

 

dmesg 查看系统启动时的信息

     dmesg | grep sda

     dmesg | grep eth0

 

 

/var/log系统日志      eg: grep syslog/var/log/messages

 /var/log/messages服务

 

 

 

GRUB

 GRUB的配置文件

   /boot/grub/grub.conf 其软链接/etc/grub.conf

 GRUB配置文件中内容

    default 定义缺省启动系统

    timeout 定义缺省等待时间

    splashimage 定义GRUB界面的图片

    (hd0,0)   hd0,在grub中用hd0表示第一块硬盘,逗号分隔的是这块硬盘的第0个分区

    hiddenmenu 隐藏菜单

    title 定义菜单项名称

    root 设置GRUB的根设备即内核所在的分区

    kernel 定义内核存放的位置

    mitrd 命令载入镜像文件

 GRUB命令

    e 编辑当前的启动菜单项

    c 进入GRUB的命令行方式

    b 启动当前的菜单项

    d 删除当前行

    Esc 返回GRUB启动菜单界面,取消对当前单项所做的任何修改

 

 

单用户模式应用

1、root密码忘记,开机进入GRUB,按e编辑,设置启动级别为1,即单用户模式

  

2、为GRUB设置密码,加在全局变量hiddenmenu后面(/boot/grub/grub.conf中)

  grub-md5-crypt

   或 grub

      grub>md5crypt       

3、GRUB修复  

     按c进入命令行方式  

    1、把安装盘放到光驱,重启,F2在BOIS中把系统用光驱来引导

    2、等安装界面出来以后,按F5,也就是linux rescue模式。然后在boot下输入linux rescue,回车。

 

 

 

 

Linux软件包管理(redhat系列,不同系列不同)

 

二进制包安装

一、RPM包管理

 sudo-1.7.2pl-5.el5.i386.rpm

  软件名 版本号 发行号(5.el5)  硬件平台(i386)

 

1、卸载

  rpm-e 软件名

     -e --nodeps 软件名   强行卸载,不考虑依赖关系(不建议)

2、安装

  rpm-ivh 软件全名      i安装 v安装时详细信息 h进度

     -ivh --excludedocs   不安装软件包的文档,如帮助信息

          --prefix PATH   将软件包安装到指定路径下(大多数包不许改路径)

          --test          只对安装进行测试,并不实际安装

          --relacepkgs    软件已经被安装,覆盖安装

          --replacefiles  文件冲突conflict,覆盖安装

          --nodeps        在安装了特定软件包之后才能安装该软件包,强制安装(不推荐)

3、查询

  rpm-q  软件名

     -qa 查询所有已安装软件包   eg:  rpm -qa | grep samba

 

4、升级

  rpm-Uvh 软件名

 

 

RPM包管理

 

1、查询q

 -a  查询所有已安装软件包

 

 -f  查询文件所属软件包   

        rpm -qf /etc/services

 

 -p  查询软件包(包未装)

        rpm -qip 包全名

        rpm -qlp 包全名

 -i  显示软件包信息

        rpm -qi samba

 -l  显示软件包中的文件列表(已装)

        rpm -ql 包名

 

 -d  显示被标注为文档的文件列表

        rpm -qd 包名

 

  -c  显示被标注为配置文件的文件列表

        rpm -qc 包名

 

2、校验

  rpm-V 包名  查看已安装软件包中文件是否改变

   s  文件大小改变

   5  文件的md5校验值 内容改变

   T  文件的创建时间

   L  链接文件

   D  设备文件

   U  文件的用户

   G  文件的用户组

   M  文件的权限

 

3、软件包文件提取

 rpm2cpio 目录中软件包 | cpio -idv ./etc/inittab 

     解压指定文件/etc/inittab到当前目录 ./etc/inittab

 

 

二、YUM包管理

  自动解决软件包依赖关系

  方便的软件包升级

 

  安装: yuminstall 软件名

 

  检测升级: yumcheck-update 软件名

 

  升级: yumupdate 软件包名

 

  软件包查询: yumlist (yum源上的所有软件包) eg:yum list | grep 软件名

 

  软件包信息: yuminfo 包名

 

  卸载: yumremove 包名

 

  帮助: yum -help、man yum

 

案例:.vimrc的注释

  manvim

  rpm-qa | grep vim

  rpm-ql vim-common | grep example (vim-common为上一步查出包中文件之一)

 

 

二、源代码包安装

 

解压

进入解压后包找到configure

./configure --prefix=/usr/local/proftpd(安装路径)   配置

make 编译

make install 安装,将文件拷贝到指定位置

 

三、脚本安装

 

解压

vi README

./setup.sh

 

 

四、APT包管理

搜索软件包 apt-cache search

 

软件包信息 apt-cache show

 

安装 apt-get install(reinstall覆盖安装、-f修复安装)

 

删除 apt-get remove(autoremove卸载依赖关系包、--purge卸载配置文件)

 

更新软件源 apt-get update

 

更新已安装包 apt-get upgrade

 

 

 

配置文件

 

1、用户信息文件:/etc/passwd     用man 5 /etc/passwd查看

   eg:root:x:0:0:root:/root:/bin/bash

      用户名:密码位:UID:GID:描述信息:宿主目录$HOME :命令解释器shell

 

用户类型

 Linux用户分三种:

    超级用户 root,UID=0

    普通用户 UID500-60000 缺省从500开始

    伪用户  UID 1-499  

       1、与系统和程序服务相关

           bin daemon shutdown halt等,任何Linux系统默认都有这些伪用户

           mail news games apache ftp mysql sshd等,与系统进程相关

       2、伪用户通常不需要或无法登录系统

       3、可以没有宿主目录       

 

用户组

    每个用户都至少属于一个用户组

    每一个用户组可以包括多个用户

    同一用户组的用户享有该组共有的权限

 

 

2、密码文件: /etc/shadow

  (man 5 shadow)

 

   用户名:加密密码:最后一次修改时间:两次修改密码最小时间间隔:密码有效的最多天数:从系统开始警告到密码失效的天数:账号闲置时间:密码失效天数:标志,一般不用     

       如果/etc/shadow中一个用户的密码被删除,则不需要密码即可登录

 

 

3、新用户信息文件: /etc/skel

 

4、用户配置文件:

  /etc/login.defs

  /etc/default/useradd

5、登录信息:/etc/motd登录后   /etc/issue登录前

 

 

用户组权限示例

授权用户jack和mary对目录/software有写权限

#groupadd softadm    添加用户组

#usermod -G softadm jack

#gpasswd -a mary softadm

#chgrp softadm /software

#chmod g+w /software

#grep softadm /etc/group

 

 

删除用户组  groupdel 组名

 

修改用户组信息 groupmod

  groupmod -n apache webadmin   修改webadmin组名为apache 

 

用户管理命令

 pwck 检测/etc/passwd文件

 vipw 编辑/etc/passwd文件,锁定文件

 id   查看用户id和组信息

 finger 查看用户详细信息

  su 切换用户(su -环境变量切换)  

 passwd -S 查看用户密码状态

  who、w 查看当前用户信息

 

禁用和恢复用户

禁用

 usermod -L username

 passwd -l username

 

恢复

 usermod -U username

 passwd -u username  

 

用户组管理命令

 groups 查看用户隶属于哪些用户组

 newgrp 切换用户组

     newgrp wangt :用不属于wangt组的用户wo登录,再用此命令,可以切换到此组,但要知道组密码

 grpck 用户组配置文件检测;删除了用户,却未删除其组信息

 chgrp 修改文件所属组

 vigr 编辑/etc/group文件(锁定文件) 

 

 

删除用户

 userdel -r 用户名

         -r 删除用户目录

手工删除:

 find  -user   eg: find /home -user jack  在home下隶属jack的文件

       -uid

       -group

       -gid

  对要保留文件备份,不要的删除,清除用户文件中的相关表项,消除宿主目录

 

 

设定密码 chage

               -l 查看密码设置

               -m/M 密码修改最小/大天数

              -d 最后修改日期

               -I 密码过期后,锁定账户天数

               -E 密码过期时间:0,立即过期;-1,永不过期

               -W 密码过期前开始警告的天数

 

启动或停用shadow功能

 pwconv/pwunconv

 grpconv/grpunconv

 

 authconfig   /etc/sysconfig/authconfig 

 

 system-config-users 图形化的管理工具

 

 

SetUID的定义:

   当一个可执行程序具有SetUID权限,用户执行这个程序时,将以这个程序所有者的身份执行。

   (因为程序的所有者一般是root,所以执行程序时,相当于用root用户执行)

   必须是可执行程序才能授予此权限,不可执行的若授予将S

  -rwsr-xr-x  eg:chmod u+s/bin/touch

                   ls -l /bin/touch

                   touch file01 (用普通用户的权限创建文件)

                   ls -l file01  其所有者变为root

                                    

SetUID=4

  chmod u+s    u-s

   或 4755      755

 

umask (0022,第一位) 

 

SetGID=2 所属组

   程序(大部分情况是命令)被授予该权限时,会以命令所属组的身份来执行

                                                                             

  chmod g+s

        2755

 

find / -perm -4000 -o -perm -2000   (-perm 按权限查找)

   查找具有SetUID和SetGID权限的文件有哪些

 

 

粘着位=1  其他人  t

    如果一个权限位为777目录具有粘着位,每一个用户都可以在此目录下创建文件,但只能删除自己是所有者的文件。

   chmod o+t

         1777

 

    linux下/tmp具有粘着位

 

 

/etc/group

     组名:组密码位:GID:组成员

 groupadd 组名

 

 

 

添加用户  设置选项 用户名 

   -u  UID

   -g  缺省所属用户组GID

   -G  指定用户所属多个目录

   -d  宿主目录

   -s  命令解释器Shell

   -c  描述信息

   -e  指定用户失效时间

 

   useradd -u 1888 -g wangt -G sys,root -d /backup -s /bin/bash -c"Market wangwu" -e 2012-09-22 panjw

   passwd panjw

 

 

修改用户信息usermod

   usermod -l wo panjw    改用户名,将panjw改为wo

           -G sys wo      将用户wo加入组sys

 

 

组管理: gpasswd

    设置组密码及管理组内成员  (grep root /etc/group)

   -a 添加用户到用户组   gpasswd -a wo root

   -d 从用户组中删除用户  gpasswd -d wo root

   -A 设置用户组管理员 gpasswd -A wo wangt 使得用户wo在此组中具有添加删除用户权限

   -r 删除用户组密码

   -R 禁止用户切换该组

 

 

gpasswd wangt  设置密码

more /etc/gshadow   组密码配置文件

 

grpconv 将gshadow中密码映射会/etc/group

grpunconv  启用gshadow

    

 

批量添加用户

方法一

eg:cd /test

   viuser.info (编辑用户信息,格式参照/etc/passwd文件)

     wang1::1001:3::/home/wang1:/bin/bash

     wang2::1002:3::/home/wang2:/bin/bash

     wang3::1003:3::/home/wang3:/bin/bash

     wang4::1004:3::/home/wang4:/bin/bash

     wang5::1005:3::/home/wang5:/bin/bash

  newusers < user.info

  tail -5 /etc/passwd

   ls/home

 

  pwunconv

   vipass.info (格式  用户名:密码)

      wang1:123456

      wang2:123456

      wang3:123456

      wang4:123456

      wang5:123456

  chpasswd < pass.info

  

  tail -5 /etc/passwd

  tail -5 /etc/shadow

 

newusers 导入用户信息文件;  可自动生成宿主目录;在passwd自动中添加用户信息

pwunconv 取消shadow password功能;  在设置密码之前,需要取消shadow功能

chpasswd 导入密码文件

           (其格式    用户名:密码)

pwconv  将密码写入shadow文件

 

方法2  用shell脚本来写。

 

 

 

*限制用户su为root:

 groupadd sugroup

 chmod 4550 /bin/su

 chgrp sugroup /bin/su

  ls-l /bin/su

设定后,只有sugroup组中的用户可以使用su切换为root

 useradd helen

 passwd helen

 usermod -G sugrouphelen

 

用sudo代替su

    在执行sudo命令时,临时成为root,以root的身份执行命令

    不会泄露root口令

    仅向用户提供有限的命令使用权限

 配置文件:/etc/sudoers,编辑配置文件命令visudo,普通用户使用命令sudo

 

 格式:用户名(组名) 主机地址(或主机名)=命令(绝对路径)

 

eg:授权普通用户具有添加用户权限

   visudo

     wang1 helen=/user/sbin/useradd,/user/sbin/userdel

     wang2 helen=/sbin/shutdown -h now     命令可以精确化

   su - wang1

   sudo /user/sbin/useradd panjw  添加用户

   sudo -l  查看授权此用户可以使用哪些命令

  

 

第八讲进程管理

 

进程和程序的区别:动态、静态;无一一对应关系

 

父子进程: pid子   ppid父;fork 复制父数据,堆栈段,父进程环境;父停子停 2情况

 

前后台进程:后台执行命令后加&,必须是非交互的,异步  find / -name init >/test/init.find& 

 

进程状态:

就绪:

等待:

运行:

                                     

查看用户信息w

FROM :0 从X window登录

     地址  远程登录

JCPU 以终端区分,该终端所有相关进程执行时,消耗CPU时间

 

PCPU CPU执行程序消耗时间

 

WHAT 用户正在执行的操作

 

load average:在过去1、5、15分钟内平均负载程度

 

IDLE 用户闲置时间

 

 

 

 

ps 进程状态查看

 

  a 显示所有用户进程

  u 显示用户名和启动时间

  x 显示没有控制终端的进程

  e 显示所有进程

  l 显示详细信息

  w 宽行显示

 

  ps-u or -l 查看隶属于自己进程详细信息

 

 PID

 PPID父号

 TTY 进程启动终端

 STAT进程当前状态  S休眠,D不可中断休眠,R运行状态,Z僵死,T停止

 NI 进程优先级

 TIME进程自从启动以来启用CPU的总时间

 COMMAND/CMD 进程的命令名

 USER/UID 用户名,进程由哪些用户启动

 %CPU占用CPU时间和总时间百分比

 %MEM占用内存与系统内存总量的百分比

 

 ps-le or -aux 显示系统所有进程详细信息

 ps-aux --sort pid 可按进程执行的时间、PID、UID等对进程进行排序

 ps-uU 用户名  指定用户执行的进程

 ps-le | grep init  查看指定进程信息

 pstree 进程树

 

kill 杀死进程

 kill 进程号   (可以跟父进程号,则彻底关闭进程)

      

      -l    列出kill的所有信号

         kill -9 进程号      强行关闭

         kill -1 进程号      重启进程

      

 xkill       关闭图形程序

 killall 进程名     关闭所有进程

 

 pgrep 服务名称    查找服务进程号

 pkill 进程名    关闭进程  

 

 

/proc目录 

   是虚拟/伪文件系统,存放在内存镜像中;存放进程信息,当前系统中正在运行的进程PID命名的目录名,动态调整目录

 

  cat/proc/cpuinfo  

  cat/proc/meminfo  内存信息

  cat/proc/partitions  分区信息

  

 

优先级

 nice  指定程序的运行优先级(程序还未启动)

     nice -n command      eg:nice -5myprogram

 

 renice  改变一个正在运行的进程的优先级

     renice n pid      eg: renice -5777

 

  优先级取值范围为(-20,19),越小优先级越高

 

 

nohup

   使进程在用户退出登录后仍旧执行,nohup将执行后的数据默认存储到文件nohup.out中(一般自己指定存储的位置)

   格式:nohupprogram &      eg: nohup find/ -name init* > /etc/find.int &即可退出系统

  

 

进程的中止(挂起)和终止

    挂起 ctrl+ z

    终止 ctrl+ c

 

进程的恢复

    恢复到前台继续运行(fg)    fg 1

    恢复到后台继续运行(bg)    bg 1

 

查看被挂起或后台运行的进程(jobs)

 

 

top 进程状态显示和进程控制,每5秒钟自动刷新一次(动态显示)

  d 指定刷新的时间间隔

  c 显示整个命令行而不仅仅显示命令名

  u 查看指定用户的进程

  k 终止执行中的进程

  hor ?  获得帮助

 r  重新设置进程优先级

  s 改变刷新的时间间隔

  W 将当前设置写入~/.toprc文件中

 

 

计划任务(周期性/一次性计划任务)

计划任务的命令

 

1、at 安排作业在某一时刻执行一次

    [-f 文件名] 时间

    -d or atrm 删除队列中的任务

    -l or atq 查看队列中的计划任务

  at 命令指定时间的方式

 

  1、绝对计时法

   hh:mm MM/DD/YY

 

  2、相对计时法

   now + n minutes

   now + n hours

   now + n days

  manat

 

at配置文件

  限制哪些用户可以使用at命令

 /etc/at.allow  若存在,则此文件中用户可用at命令

 /etc/at.deny   若存在,则此文件中用户不能使用at

    两个文件都不存在,则只有超级用户可用at;都在,但均为空,则所有用户可用at命令

 

2、batch 安排作业在系统负载不重时执行一次

   一般指平均负载降到0.8以下;用法同at     #w   load average

 

3、crontab 安排周期性运行的作业

   用于生成cron进程所需要的crontab文件

 

  crontab  -l 显示当前的crontab

           -r 删除当前的crontab

           -e 使用编辑器编辑当前的crontab文件

         

   crontab -e  把知道的具体的时间添上,不知道的都添上*

       分钟  小时  天  月  星期  命令/脚本

        0    4     *  *    *         每天凌晨四点

        0    18    *  *    2,5      每周二周五的傍晚6点

      0    18   *   1-3  2,5        一到三月每周二周五的傍晚6点 

                                 /usr/bin/wall < /etc/issue

                                 /sbin/shutdown-h now

         */2 每隔两分钟

         周日用0表示

                       

     五项时间都不能空,命令应该给出绝对路径,用户须有运行所对应的命令或程序的权限

 

ps -le | grep crond    

/etc/crontab 配置文件

 

限制哪些用户可以使用crontab命令

 /etc/cron.allow

 /etc/cron.deny

 

 

进程处理方式

 standalone 独立运行  进程启动后一直驻留,占用系统资源,但响应快

 

 xinetd  进程托管,服务使用较少

    /etc/xinetd

 

  atd、crond 计划任务

     每一分钟从休眠中醒来一次,看看要不要执行计划任务,所以计划任务不能精确到秒

 

 

 

 

文件系统构成

/usr/bin、 /bin: 存放所有用户可以执行的命令

/usr/sbin、/sbin:存放只有root可以执行的命令

/home:用户缺省宿主目录

/proc:虚拟文件系统,存放当前内存镜像

/dev:存放设备文件

/lib:存放系统程序运行所需要的共享库

/lost+found:存放一些系统出错的检查结果

/tmp 存放临时文件

/etc 系统配置文件

/var 包含经常发生变动的文件,如邮件、日志文件、计划任务等

/usr 存放所有命令、库、手册页等

/mnt 临时文件系统的安装点

/boot 内核文件及自举程序文件保存位置

 

 

查看分区情况: df              

                  -h  显示大概详细信息  (Mounted on挂载点)

                  -m  以兆字节显示

 

查看文件大小、目录大小:du

                       -h  文件

                       -sh 目录

 

检测修复文件系统:fsck、e2fsck

                  (单用户模式执行)

     e2fsck -p 

            -y  自动修复

判断文件类型:file 

         file 文件名

 

设备:块设备 b(大量存储)    字符设备 c(字符输出,终端,打印机等)

 

使用光驱

1、挂载光驱

  mount /dev/cdrom /mnt/cdrom

  df  也可查看挂载信息

2、卸载光驱

  umount /mnt/cdrom

  eject    (umount后可以使光盘弹出)

 

 

添加磁盘或分区

1、划分分区 fdisk

                   -l 查看硬盘信息     fdisk -l /etc/sda

                   fdisk /etc/sdb

                      m  帮助

                      p  显示分区表

                      n  添加新分区

                      t  改变分区文件类型   L 查看有哪些文件类型及代号

                      d  删除分区

                      w  保存退出

                      q  不保存退出

  

2、创建文件系统 mkfs 格式化

  (mk 查看有哪些格式化的命令)

            mkfs.ext3         mkfs.ext3  /dev/sdb1

                       -b 指定数据块大小

3、尝试挂载 mount

  eg:  mount /dev/sdb1 /web

       重启后挂载失效

 

4、写入配置文件 /etc/fstab

   使新添加的分区,在系统引导的时候自动挂载

 

/etc/fstab 定义系统启动时每一个分区需要启动的设置

                                                 

物理分区名/卷标   挂载点   文件系统   缺省设置  是否检测  检测顺序

                                           

LABEL=/            /         ext3      defaults    1/0     0/1/2

即/dev/sda1                                       1测    0不检1优先检测

  启动时硬盘是否检测,一般虚拟硬盘不检测为0

 

/dev/sdb1          /web      ext3      defaults    1         2

(相当于 LABEL=apache)

e2label /dev/sdb1 apache   设置硬盘卷标为apache

 

 

 

怎样增加swap分区

dd if=/dev/sda of=/dev/sdb  将/dev/sda硬盘上的数据都拷到/dev/sdb上

  if: inputfile    of:output file

 

1、用dd可以创建一个指定大小文件

  ddif=/dev/zero  of=/var/swap/file.swp  bs=1024k count=64   创建64M文件

                               bs: block size 指定dd输出时数据块大小    

 /dev/null是伪设备,写入其中的东西都消失了

 /dev/zero也是伪设备,向输出写0

 

2、mkswap/var/swap/file.swp  将创建文件当swap分区用

 

3、free -m 查看系统内存信息,-m以兆来显示

 

4、swapon/var/swap/file.swp 启用该swap分区

  swapoff /var/swap/file.swp  关闭该swap分区

 

5、要想系统启动时自动调用该分区,则将其写入/etc/fstab文件

  /var/swap/file.swp    swap    swap  default   0   0

 

 

 

 

设置磁盘配额(只能在分区上设置)

1、开启分区配额功能

   编辑 /etc/fstab文件,在挂载属性缺省设置上加上标志 usrquota(用户配额)或grpquota(用户组配额,限制一组用户)

 

/dev/sda3  /home    ext3   default,usrquota    1    2

 

启动:mount -o remount 分区名

如果只是临时设置:mount -o remount,usrquota /home

 

2、建立配额数据库(进入单用户模式)

quotacheck -cvuga    

  c创建;v详细信息;u建立用户配额;g组配额;a检测所有系统分区

 

会生成aquota.user、aquota.group(如果quotacheck有 -g)两个文件

 

3、启动配额功能

quotaon 分区名称    开启配额      quotaon /test 

quotaoff 关闭配额

 

4、编辑用户配额

edquota 用户名     

       -g 用户组名

       -t    设置宽限期

       -p 模板用户复制用户1 复制用户2     复制用户配额

           edquota -p wangt helen  设置和用户wangt一样的配额

 

使用edquota wangt 命令后显示

 blocks(KB)          soft  hard   限定用户使用空间大小,以K为单位

 inodes(i节点)     soft  hard   限定创建文件的多少

 

    soft:软限制(soft limit)定义用户可用磁盘空间数,超过限制只警告,还可用

    hard:硬限制,超过定义限制限制不能再用

 

宽限期(Grace period):定义用户在软限制下可以使用其文件系统的期限

 

 

quota命令查看用户的配额使用情况

repquota -a 管理员查看配额信息

 repquota 分区名    查看该分区下所有用户的配额信息

       

 

 

系统的潜在威胁,备份

1、cp -Rpu

 

2、tar 命令使用举例

tar -zcf /backup/etc-20110303.tar.gz/etc  备份/etc目录

 

tar -zcf backup-user-20110303.tar.gz/etc/passwd /etc/shadow /etc/group /etc/gshadow

打包多个目录

 

tar -ztf backup-user-20110303.tar.gz

查看备份包中文件(不解包)

 

 

tar -zxf /backup/etc-20110303.tar.gz

还原/etc目录,默认还原到打包文件源目录,-C可以指定还原目录

 

tar -zxf backup-user-20110303.tar.gz etc/group(etc前没有/,写tar -ztf查看得到的形式)

只恢复备份中的指定文件,后面跟上查看得到文件名就行了。

tar解包保存原文件的属性,不像cp,要加cp -p

 

tar -rf backup-user-20110303.tar/etc/default/useradd /etc/login.defs

将两个文件的内容追加到压缩包中

 

tar -uf backup-user-20110303.tar/etc/passwd

将/etc/passwd目录中修改过的内容追加到备份文件

(-r和-u选项只能针对tar包使用)

 

为备份文件名添加时间(年月日)

tar -zcf /backup/etc_$(date +%F).tar.gz/etc

添加年月日小时分钟

tar -zcf /backup/etc_$(date+%Y.%m.%d-%H%M).tar.gz /etc

 

 

 

 

Shell编程

shell结构:

1、#!指定执行脚本的shell

2、#注释行

3、命令和控制结构

 

创建shell程序的步骤

1、创建一个包含命令和控制结构的文件

2、修改这个文件的权限使他可以执行

3、执行./example

   或用 sh example执行

 

Shell变量

变量:临时变量、永久变量(环境变量)

     字母、下划线、数字(不能开头写)组成,区分大小写,建议用大写

     使用变量时,要在变量名前加上前缀 $

 

定义:NUM=100   

     TIME='date'      TIME=(date+F%)      echo $TIME  

     DATE=$TIME      echo $DATE

 

单双引号:ABC='time is $DATE'   echo$ABC  结果为: time is $DATE

         ABC=“time is $DATE”   echo $ABC  结果为: time is2012-09-25

 

删除变量:

   unset NAME

 

set 列出所有的变量 

 

位置变量和特殊变量

   Shell解释执行用户命令时,将命令行的第一个部分作为命令名,其它部分作为参数。由出现在命令行上的位置确定的参数称为位置参数。

   ls -l file1 file2 file3

   $0 这个程序的文件名 ls -l

   $n 这个程序的第n个参数值,n=1-9

 

特殊变量:

  $* 这个程序的所有参数   ls /etc/group /etc/passwd   则显示/etc/group/etc/passwd 两参数

  $# 这个程序的参数个数  ls /etc/group /etc/passwd  则显示 2个

  $$ 这个程序的PID

  $! 执行上一个后台命令的PID

  $? 执行上一个命令的返回值 (一个命令成功,则返回0,否则返回非0值)

 

Shell命令

read 命令:从键盘读入数据,赋给变量  (直接赋值,交互)

    read 变量名  

 

 

sh -x 脚本   显示执行过程

 

算术运算

expr : 对整数型变量进行算术运算

  expr 3 + 5

  expr $var1 - 5

  expr $var1 / $var2

  expr 3 \* 10   转义

 

  expr `expr 5 + 7`/ $var4   命令替换符

  var4=`expr $var1 / $var2`  将结果赋值

 

 

变量测试语句

用于测试变量是否相等、是否为空、文件类型等

格式: test 测试条件

测试范围:整数、字符串、文件

 

1、字符串测试:

test str1=str2  测量字符串是否相等

    str1!=str2     字符串是否不相等

    str1                 是否不为空

    -n  str1             是否不为空

    -z  str1             是否为空

 

2、整数测试

test int1 -eq int2  测试整数是否相等

    int1 -ge int2  测试int1是否>=int2

    int1 -gt int2           是否>

    int1 -le int2           是否<=

    int1 -lt int2           是否<

    int1 -ne int2  测试整数是否不相等

 

3、文件测试

test -d file  指定文件是否目录

    -f       指定文件是否常规文件

    -x                是否可执行

    -r                 是否可读

    -w                 是否可写

    -a                 是否存在

    -s        指定文件的大小是否非0

 

 

流控制语句

if []...then...fi     在一行;不在一行不用;

 

if []...then...else...fi        

 

if []..then...elif[]..then...else...fi     

 

 

多个条件的联合:

-a  逻辑与,两个条件成立时,真

-o 逻辑或,只要有一个成立,真

                                                                                             exit语句:退出程序执行,并返回一个返回码,返回码为0表示正常退出,非0表示非正常退出。    

 eg:   exit 0        

 

 

for 变量 in 名字表

do

   命令列表

done

 

 

awk命令   提取

awk -F 域分隔符‘命令’    不指定分隔符则默认用空格

   awk -F: '$3==0 {print $1}' /etc/passwd

     用awk指定用“:”作为文件中的域分隔符。匹配“:”分隔的第三部分为0的语句,打印其第一部分

     awk -F: 'length($2)==0 {print $1}' /etc/shadow  找出没设密码的用户名

 

 

select 变量 in 关键字

do

 command 1

 command n

done

   select把关键字中的每一项做成类似表单,以交互的方式执行do和done之间的命令。

                                                   

 

case...esac语句,格式:

   case 变量 in

        字符串1)命令列表1

                  ....

                   ....

        ;;

        ....

      

        字符串n)命令列表n

                   ....

   esac

        其中”*)命令“来表示其他输入超出预料字符

 

 

while语句,格式:

 while [条件]

  do

     命令

 done

 

echo 123456 | passwd --stdin wangt  修改密码

 

 

until [条件]

do

   命令

done

 until类似while循环,不同的是until是条件返回值为假时才继续执行。

 

 

break 跳出整个循环

continue: 跳出本次循环,进行下次循环   

               

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值