unix 简单的命令


返回上一层目录:  " cd .. "
返回前一个目录:  " cd - "


ls
用途:ls用来列出目录内容。/只列出文件名
ls -l  以长格式的形式查看当前目录下所有可见文件的详细属性
     $ls -l
       drwxr-xr-x 3 user group 102 Mar11 22:56 Filename


  7个段分别是:

               文件属性:drwxr-xr-x
               其中各个字符代表的意义:
               d: 代表是目录。其他的还有,-代表文件
               rwx:代表属主权限,-代表无权限;r代表具有可读权限; w代表具有可写权限;x代表具有可执行权限
               r-x:代表组权限
               r-x:代表其他用户权限
              文件硬链接数或目录子目录数:3 (一个空目录的该字段是2,表示该目录下有两个子目录,因为每一个目录都有一个指向它本身的子目录"." 和指向它上级目录的子目录"..")
              所有者:user
              所属用户组:group
              文件大小:102 byte
              修改时间:Mar11 22:56
              文件名:Filename
ls -al

举例:ls/home/bwagner。这个命令执行后将列出/home/bwagner目录中的内容。ls的典型命令行开关包括 -a(列出所有文件,包括隐藏文件)和-l(用长格式列出所有目录内容)。
find
find ~ -name *.pl -print
用途:find用来查找目录中的文件。
举例:find.-name*gif。这个命令执行后查找位于我的主目录中或主目录以下带有.gif扩展名的所有文件。以下是find执行后输出的列表:

cd

cd /
cd /usr/bin
cd
pwd

用途:cd用来改变当前目录。
举例:cd/usr/bin。这个命令执行后将当前目录更改为/usr/bin。

mkdir
cd
mkdir test

用途:mkdir用来创建指定的目录。
举例:mkdir bozo-mail。这个命令执行后将创建一个名叫bozo-mail的目录。

chmod
cd
chmod +755 test
               备注:“755”怎么构成的:"0"表示没有权限、“1”表示可执行权限、“2”表示可写权限、“4”表示可读权限。“7=1+2+4,5=1+4
                         “a”表示所有用户,“u”表示创建者、“g”表示创建者同组用户、“o”表示其他用户;“+”表示添加权限,“-”表示取消权限;“r”表示读权限、“w”表示写权限、“x”表示写权限。
                          755表示“创建者拥有读写可执行权限、同一组用户以及其他用户拥有读和执行权限”。
                            所以chmod 755 test 也可以写成chmod -rwxr-xr-x test
           一般都写


用途:chmod用来改变指定文件的权限。
举例:chmod=r myfile.txt。这个命令执行后将myfile.txt的权限更改为只读。

rm
cd
cd test
mkdir tmpdir
cd tmpdir
   echo "hello world" > tmp.txt
   备注:> 和 >>输出重定向命令
> 清除文件中原有的内容后再写入>> 追加内容到文件末尾,而不会清除原有的内容主要将本来显示在屏幕上的内容输出到指定文件中指定文件如果不存在,则自动生成该文件
echo hello world>c:\test.txt生成c:\test.txt文件,内容为hello world这个格式在批处理文件里用得很多,可以生成 .reg .bat .vbs 等临时文件
type c:\test.txt >prn屏幕上不显示文件内容,转向输出到打印机
echo hello world>con在屏幕上显示hello world,实际上所有输出都是默认 >con 的
copy c:\test.txt f: >nul拷贝文件,并且不显示"文件复制成功"的提示信息,但如果f盘不存在,还是会显示出错信息
vim tmp.txt   如何退出:摁esc,然后:q!,回车 

:q

rm tmp.txt
cd
cd test
rm -r tmpdir     rm -r表示可以递归删除整个目录包括次级目录的整个内容。 例如:有一个目录:/home/s1其中有一个子目录/home/s1/s2如果你使用命令rm -r /home/s1,那么会把/home/s1全部删除,包括其子目录/home/s1/s2. 你使用这个命令的时候,系统会提示你是否确认能删除,敲y就行了。如果你不需要系统提醒,就直接用rm -rf /home/s1命令,就可以强制删除这个目录了。

echo的基本用法:
覆盖型写法 (文件里原来的内容被覆盖)
echo "aaa" > a.txt
echo aaa > a.txt
添加型写法 (新内容添加在原来内容的后面)

echo "aaa" >> a.txt
echo aaa >> a.txt

 

 

用途:rm用来删除指定空目录。
举例:rm myfile.txt。这个命令执行后将删除myfile.txt。
pwd   显示当前所在目录,打印当前目录的绝对路径。


cd /
ls

df
用途:报告磁盘中可以使用的自由空间。
举例:df。以下是该命令执行后输出的列表:
df -h

du
用途:du报告磁盘的使用情况。
举例:du。以下是du命令执行后输出的列表。


top命令

  top命令和ps命令的基本作用是相同的,显示系统当前的进程和其他状况;但是top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态。如? 前台执行该命令,它将独占前台,直到用户终止该程序为止。比较准确的说,top命令提供了实时的对系统处理器的状态监视。它将显示系统中CPU最“敏感”的任务列表。该命令可以按CPU使用。内存使用和执行时间对任务进行排序;而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定。在后面的介绍中将把命令参数和交互命令分开讲述。

  

  下面是该命令的语法格式:

  top [-] [d delay] [q] [c] [s] [S] [i]

  d 指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之。

  q 该选项将使top没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行。

  S 指定累计模式。

  s 使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。

  i 使top不显示任何闲置或者僵死进程。

  c 显示整个命令行而不只是显示命令名

  top命令显示的项目很多,默认值是每5秒更新一次,当然这是可以设置的。显示的各项目为:

  uptime 该项显示的是系统启动时间、已经运行的时间和三个平均负载值(最近1秒,5秒,15秒的负载值)。

  processes 自最近一次刷新以来的运行进程总数。当然这些进程被分为正在运行的,休眠的,停止的等很多种类。进程和状态显示可以通过交互命令t来实现。

  CPU states 显示用户模式,系统模式,优先级进程(只有优先级为负的列入考虑)和闲置等各种情况所占用CPU时间的百分比。优先级进程所消耗的时间也被列入到用户和系统的时间中,所以总的百分比将大于100%。

 

whoami
用途:whoami显示你的当前用户ID

chown
用途:chown用来改变文件的所有权。
举例:chown bwagner myfile.txt。这个命令执行后将myfile.txt的权限授予我。
man
用途:man是UNIX参考手册的接口。这些手册通常称为使用说明(man pages)。
举例:man mail。这个命令执行后将启动mail使用说明。
在Unix主机,ifconfig命令有很大的用处。我们今天就来对这部分知识讲解一下。ifconfig命令用于查看和更改网络接口的地址和参数,如果要显示某台Unix主机的IP地址,我们可以在命令行下输入:$ifconfig -a

Unix主机的系统会显示网络接口的名称,接口的状态(up or down),接口的IP地址和掩码等信息。

如果我们要更改Unix主机网络接口的IP地址,可以在root权限下输入:

#ifconfig hme0 down #ifconfig hme0 202.1.2.3 netmask 255.255.255.0 up

首先,在Unix主机中使用down命令参数把网络接口hme0的服务暂时停止,然后再用ifconfig命令给接口分配新的IP地址和掩码,并启动网络接口服务。本例中把hme0接口的IP地址设为202.1.2.3,掩码为255.255.255.0。

我们也可以通过改变文件/etc/hosts中的IP地址的值并重新启动系统来更改机器的IP地址。

在系统启动时,网络接口服务时自动被启动的,我们不需要手动地创建网口服务,但有时我们更改了网卡或增加了网卡后,系统不能自动启动该接口服务,这时我们需要手动创建网口服务,

在root权限下输入:

#ifconfig hme0 plumb

即可以为接口le0创建网口服务。

相应地,在Unix主机中用ifconfig带unplumb参数可以停止服务并关闭网络接口,这时我们再用ifconfig -a 命令将看不到该网络接口

Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。

cat

cd
cd test
echo "my test" > testfile.txt
cat testfile.txt

用途:cat将文件连接在一起并显示这些文件中的内容。
举例:cat myfile.txt。这个命令执行后显示myfile.txt中的内容。
rmdir
用途:rmdir用来删除空目录。
举例:rmdir/mydirectory。这个命令执行后将删除/mydirectory。

cp
用途:cp用来复制文件。
举例:cp myfile.txt yourfile.txt。这个命令执行后将myfile.txt的内容复制到一个名叫yourfile.txt的文件中去。
tar命令
cd
cd test
cp testfile.txt ~


tar 文件是几个文件和(或)目录在一个文件中的集合。这是创建备份和归档的佳径。

tar 使用的选项有:

-c 创建一个新归档。

-f 当与 -c 选项一起使用时,创建的 tar 文件使用该选项指定的文件名;当与"-x"选项一起使用时,则解除该选项指定的归档。

-t 显示包括在 tar 文件中的文件列表。

-v 显示文件的归档进度。

-x 从归档中抽取文件。

-z 使用 gzip 来压缩 tar 文件。

-j 使用 bzip2 来压缩 tar 文件。

要创建一个 tar 文件,键入:
tar -cvf filename.tar directory/file

可以使用 tar 命令同时处理多个文件和目录,方法是将它们逐一列出,并用空格间隔:
tar -cvf filename.tar /home/mine/work /home/mine/school
上面的命令把 /home/mine 目录下的 work 和 school 子目录内的所有文件都放入当前目录中一个叫做 filename.tar 的新文件里。

gzip
用途:gzip用来压缩或解压缩文件。
举例:gzip myfile.txt。这个命令执行时对myfile.txt进行压缩,产生一个名叫myfile.txt.gz的压缩文件。该压缩文件可以使用gzip或gunzip进行解压缩(将这个命令和gunzip进行比较)。
gunzip
用途:gunzip用来压缩或解压缩文件(通常是那些带有.gz扩展名的文件)。
举例:gunzip myfile.txt.gz。这个命令执行后将解压缩myfile.txt文件

head
用途:head在默认的情况下输出任何文件的头10行。
举例:head myfile.txt。在这个命令执行后将在屏幕上显示myfile.txt的头10行

grep
cd
cd test
grep "my" *

用途:grep用来查找符合某种模式的文本行并打印出所有相应的文本行。
举例:grep ecoli hamburger.txt。这个命令执行后查找hamburger.txt文件中的单词ecoli。
VIM
恢复由于中断而丢失的文件
    当发生中断或主机终端断开时,你可能没有保存文件而非正常地退出vi。但是,系统在缓冲区中留有副本,当你重新启动系统时,可在vi

命令后加上选项 r 来恢复中断前的文件。
         vi  -r  filename
将一个文件插入另一个文件中
     vi为将一个文件“读取”(插入)到正在编辑的文件提供了方便。该命令的通用格式是:
        :line#  r  filename
     如果不指定一个行号,vi将该文件插入到当前光标的位置上。
who
用途:who显示目前已登录用户的统计信息。

date
用途:date用来得到日期和时间。
举例:date。以下是date命令执行后输出的列表:
Wed Aug 5 19:10:42 PDT 1998


su
.作用
  
  su的作用是变更为其它使用者的身份,需要键入该使用者的密码(超级用户除外)。
  
  2.格式
  
  su [选项]... [-] [USER [ARG]...]
  
  3.主要参数
  
  -f , --fast:不必读启动文件(如 csh.cshrc 等),仅用于csh或tcsh两种Shell。
  
  -l , --login:加了这个参数之后,就似乎是重新登陆为该使用者一样,大部分环境变量(例如HOME、SHELL和USER等)都是以该使用者(USER)为主,并且工作目录也会改变。假如没有指定USER,缺省情况是root。
  
  -m, -p ,--preserve-environment:执行su时不改变环境变数。
  
  -c command:变更账号为USER的使用者,并执行指令(command)后再变回原来使用者。
  
  USER:欲变更的使用者账号,ARG传入新的Shell参数。
  
  4.应用实例
  
  变更账号为超级用户,并在执行df命令后还原使用者。  su -c df root

 

sort
用途:sort将文本文件逐行分类。
举例:sort myfile.txt。这个命令将myfile.txt中的内容分类。

 

 

a. 关於档案/目录处理的指令:

1. ls
这是最基本的档案指令。 ls 的意义为 "list",也就是将某一个目录或是
某一个档案的内容显示出来。

如果你在下 ls 指令后头没有跟著任何的档名,它将会显示出目前目录中所
有档案。

也可以在 ls 后面加上所要察看的目录名称或档案的名称,如

% ls /home2/X11R5

% ls first

ls 有一些特别的参数,可以给予使用者更多有关的资讯,如下:

-a : 在 UNIX 中若一个目录或档案名字的第一个字元为 "." , 则使用 ls
将不会显示出这个档案的名字,我们称此类档案为隐藏档。如 tcsh
的初设档 .tcshrc;如果我们要察看这类档案,则必须加上参数 -a 。

-l : 这个参数代表使用 ls 的长( long )格式,可以显示更多的资讯,
如档案存取权,档案拥有者( owner ),档案大小,档案最后更新
日期,甚而 symbolic link 的档案是 link 那一个档等等。如下

% ls -l

drwx--x--x 2 jjtseng 512 Aug 8 05:08 18
drwx--x--x 2 jjtseng 512 Aug 8 22:00 19
-rw------- 1 jjtseng 566 Aug 8 05:28 makefile

2. cp
cp 这个指令的意义是复制("COPY") , 也就是将一个或多个档案复制成另
一个档案或者是将其复制到另一个目录去。

cp 的用法如下:

cp f1 f2 : 将档名为 f1 的档案复制一份为档名为 f2 的档案。
cp f1 f2 f3 ... dir : 将档案 f1 f2 f3 ... 都以相同的档名复制一
份放到目录 dir 里面。
cp -r dir1 dir2 : 将 dir1 的全部内容全部复制到 dir2 里面。

cp 也有一些参数,如下:

-i : 此参数是当已有档名为 f2 的档案时,若迳自使用 cp 将会将原来 f2
的内容掩盖过去,因此在要盖过之前必须先询问使用者一下。如使用者
的回答是y(yes)才执行复制的动作。

-r : 此参数是用来做递回复制用,可将一整颗子树都复制到另一个
目录中。

3. mv
cd
cd test
mv testfile.txt testfile_bak.txt
mv 的意义为 move , 主要是将一档案改名或换至另一个目录。如同 cp ,它也有
三种格式:

mv f1 f2 : 将档名为 f1 的档案变更成档名为 f2 的档案。
mv dir1 dir2 : 将档名为 dir1 的目录变更成档名为 dir2 的目录。
mv f1 f2 f3 ... dir : 将档案 f1 f2 f3 ... 都移至目录 dir 里面。

mv 的参数有两个,-f 和 -i , 其中 -i 的意义与 cp 中的相同,均是 interactive
询问之意。而 -f 为强迫( force ) , 就是不管有没有同名的档案,反正我就是要
搬过去,所有其他的参数遇到 -f 均会失效。

4. rm
rm 的意义是 remove ,也就是用来杀掉一个档案的指令。在 UNIX 中一
个被杀掉的档案除非是系统恰好有做备份,否则是无法像 DOS 里面一样还能够救回
来的。所以在做 rm 动作的时候使用者应该要特别小心。

rm 的格式如下:

rm f1 f2 f3 .....

而 rm 的参数比较常用的有几个: -f , -i , 与 -r

-f : 将会使得系统在删除时,不提出任何警告讯息。
-i : 在除去档案之前均会询问是否真要除去。
-r : 递回式的删除。

小心不要随便使用 rm -rf , 否则有一天你会"欲哭无泪"......

5. mkdir
mkdir 是一个让使用者建立一个目录的指令。你可以在一个目录底下使用
midir 建立一个子目录,使用的方法如下:

mkdir dirname1 [ dirname2 ... ]

如此你就可以建立一个或多个目录。

6. chdir ( cd )
这是让使用者用来转移工作目录用的。
chdir 的用法如下:

chdir dirname

如此你就可以将目前的目录转移到 dirname 这一个目录去。
或使用 "chdir .." 来转移到上一层目录。

ahrp  启程日本

7. rmdir
相对於 mkdir ,rmdir 是用来将一个"空的"目录杀掉的。如果一个目录下面
没有任何档案,你就可以用 rmdir 指令将其除去。rmdir 的使用法如下:

rmdir dirname1 [ dirname2 .... ]

如果一个目录底下有其他的档案, rmdir 将无法将这个目录杀掉,除非使用
rm 指令的 -r 选项。

8. pwd
pwd 会将目前目录的路径( path )显示出来,例如:

9. cat/more/less
以上三个指令均为察看档案内容的指令。cat 的意义是猫....不不不,是
concatenate ,在字典上的意思是"连结,将…串成锁状"( 语出资工电子
词典 cdict ),其实就是把档案的内容显示出来的意思。 cat 有许多奇怪
的参数,较常为人所使用的是 -n 参数,也就是把显示出来的内容加上行
号。 cat 的用法如下:

cat [-n] :自标准输入读进内容,你可以用 pipe 将别的程式的输出转向
给 cat .
cat [-n] filename : 将 filename 的内容读进来,显示在标准输出上。

问题在於 cat 它是不会停下来的,因此并不好用( 试想如果一个萤幕二十
四行,而一个档案四百行,cat 一出来将会劈哩啪啦不断的卷上去,使用者
很难据此得到他们所需的资讯。) 所以才有人又写了 more 出来。

more , 跟据蔡文能老师的说法是"再多一点就好",more 可以将所观察的档案
跟据终端机的形态一页页的显示出来,再根据使用者的要求换页或卷行。如果
使用者要在某一个档案中搜寻一个特定的字串,则按 / 然后跟著打所要搜寻
的单字即可进行搜寻。more 也可以找得到。more 的使用法如下:

more filename

如果你在使用中觉得已经看到了所要看的部份,可以按'q'离开 more 的使用。
在使用中按'v' 亦可以使用编辑器来编辑所观看的档案。

less 的用法与 more 极类似,原先它就是为了弥补 more 只能往前方卷页的缺
点而设计。 less 的用法如下:

less filename

其与 more 不同的是它可以按 y 来往上卷一行,并且可以用"?"来往回搜寻你所
要找的单字。

10. chmod
chmod 为变更档案模式用( change mode ) . 这个指令是用来更改档案的存取模
式( access mode )。在 UNIX 一个档案上有可读(r)可写(w)可执行(x)三种模式,
分别针对该档案的拥有者( onwer )、同群者( group member )( 你可以 ls -lg
来观看某一档案的所属的 group ),以及其他人( other )。一个档案如果改成可
执行模式则系统就将其视为一个可执行档,而一个目录的可执行模式代表使用者
有进入该目录之权利。chmod 就是用来变更一些档案的模式,其使用方式如下:

chmod [ -fR ] mode filename ...

其参数的意义如下:

-f Force. chmod 不会理会失败的动作。
-R Recurive. 会将所有子树下的所有子目录及档案改为你所要改成的模式。

mode 可以为一个三位或四位的八进位数字,来表示对某些对象的存取权。详情
可参阅 chmod(1) 的 manual page 中有关 Absolute Modes 的说明。

或是用一个字串来表示,请参考 chmod(1) 的说明。
b. 关於 Process 处理的指令:

1. ps
ps 是用来显示目前你的 process 或系统 processes 的状况。
以下列出比较常用的参数:

其选项说明如下:
-a 列出包括其他 users 的 process 状况。
-u 显示 user - oriented 的 process 状况 。
-x 显示包括没有 terminal 控制的 process 状况。
-w 使用较宽的显示模式来显示 process 状况 。

我们可以经由 ps 取得目前 processes 的状况,如 pid , running state 等。

2. kill
kill 指令的用途是送一个 signal 给某一个 process 。因为大部份送的都是
用来杀掉 process 的 SIGKILL 或 SIGHUP ,因此称为 kill 。kill 的用法
为:

kill [ -SIGNAL ] pid ...
kill -l

SIGNAL 为一个 singal 的数字,从 0 到 31 ,其中 9 是 SIGKILL ,也就是一
般用来杀掉一些无法正常 terminate 的讯号。其馀讯号的用途可参考 sigvec(2)
中对 signal 的说明。

你也可以用 kill -l 来察看可代替 signal 号码的数目字。kill 的详细情形
请参阅 man kill。

c. 关於字串处理的指令:

1. echo
echo 是用来显示一字串在终端机上。□ echo -n 则是当显示完之后不会有跳行的动作。


2. grep/fgrep
grep 为一过滤器,它可自一个或多个档案中过滤出具有某个字串的行,或是
自标准输入过滤出具有某个字串的行。

fgrep 可将欲过滤的一群字串放在某一个档案中,然后使用 fgrep 将包含有
属於这一群字串的行过滤出来。

grep 与 fgrep 的用法如下:

grep [-nv] match_pattern file1 file2 ....
fgrep [-nv] -f pattern_file file1 file2 ....

-n 把所找到的行在行前加上行号列出
-v 把不包含 match_pattern 的行列出
match_pattern 所要搜寻的字串
-f 以 pattern_file 存放所要搜寻的字串

d. 网路上查询状况的指令:

1. man
man 是手册 ( manual ) 的意思。 UNIX 提供线上辅助( on-line help )的功能,
man 就是用来让使用者在使用时查询指令、系统呼叫、标准程式库函式、各种表
格等的使用所用的。man 的用法如下:

man [-M path] [[section] title ] .....
man [-M path] -k keyword ...

-M path man 所需要的 manual database 的路径。
我们也可以用设定环境变数 MANPATH 的方式来取代 -M 选项。
title 这是所要查询的目的物。
section 为一个数字表示 manual 的分类,通常 1 代表可执行指令,
2 代表系统呼叫( system call ) ,3 代表标准函数,等等。

像下面 man 查询的片段:

SEE ALSO
apropos(1), cat(1V), col(1V), eqn(1), lpr(1), more(1),
nroff(1), refer(1), tbl(1), troff(1), vgrind(1), vtroff(1),
whatis(1), eqnchar(7), man(7), catman(8)

我们如要参考 eqnchar(7) 的资料,则我们就输入 man 7 eqnchar ,
便能取得我们所要的辅助讯息。
-k keyword
用来将含有这项 keyword 的 title 列出来。

man 在 UNIX 上是一项非常重要的指令,我们在本讲义中所述之用法均仅只是一
个大家比较常用的用法以及简单的说明,真正详细的用法与说明还是要请你使用
man 来得到。

2. who
who 指令是用来查询目前有那些人在线上。

3. w

w 指令是用来查询目前有那些人在线上,同时显示出那些人目前的工作。

4. ku
ku 可以用来搜寻整个网路上的 user ,不像 w 跟 who 只是针对 local host 的
查询. 而且 ku 提供让使用者建立搜寻特定使用者名单的功能。你可以建立一个档
案 information-file 以条列的方式存放你的朋友的资料,再建立一个档案
hosts-file 来指定搜寻的机器名称。 ku 的指令格式可由 ku -h 得到。

E. 网路指令:

UNIX 提供网路的连接,使得你可以在各个不同的机器上做一些特殊的事情,如
你可以在系上的 iris 图形工作站上做图形的处理,在系上的 Sun 上读 News ,
甚至到学校的计中去找别系的同学 talk 。这些工作可以利用 UNIX 的网路指
令,在你的位子上连到各个不同的机器上工作。如此一来,即使你在寝室,也能
轻易的连至系上或计中来工作,不用像以前的人必须泡在冷冰冰的机房面。

这些网路的指令如下所述:

1. rlogin 与 rsh
rlogin 的意义是 remote login , 也就是经由网路到另外一部机器 login 。
rlogin 的格式是:

rlogin host [ -l username ]

选项 -l username 是当你在远方的机器上的 username 和 local host 不同的
时后,必须输入的选项,否则 rlogin 将会假设你在那边的 username 与 local
host 相同,然后在第一次 login 时必然会发生错误。

rsh 是在远方的机器上执行某些指令,而把结果传回 local host 。rsh 的格式
如下:

rsh host [ -l username ] [ command ]

如同 rlogin 的参数 -l username , rsh 的 -l username 也是指定 remote host
的 username 。而 command 则是要在 remote host 上执行的指令。如果没有
指定 command ,则 rsh 会去执行 rlogin ,如同直接执行 rlogin 。

不过 rsh 在执行的时候并不会像一般的 login 程序一样还会问你 password , 而
是如果你没有设定 trust table , 则 remote host 将不会接受你的 request 。

rsh 须要在每个可能会做为 remote host 的机器上设定一个档案,称为 .rhosts。
这个档案每一行分为两个部份,第一个是允许 login 的 hostname , 第二个部份
则是允许 login 的 username 。例如,在 ccsun7.csie.nctu.edu.tw 上头你的
username 为 ysjuang , 而你的 home 下面的 .rhost 有以下的一行:

ccsun6.cc.nctu.edu.tw u8217529

则在 ccsun6.cc.nctu.edu.tw 机器上的 user u8217529 就可以用以下的方法来
执行 rsh 程式:

% rsh ccsun7.csie.nctu.edu.tw -l ysjuang cat mbox

将 ysjuang 在 ccsun7.csie.nctu.edu.tw 上的 mbox 档案内容显示在 local host
ccsun6.cc.nctu.edu.tw 上。

而如果 .rhost 有这样的一行,则 ccsun6.cc.nctu.edu.tw 上的 user u8217529
将可以不用输入 password 而直接经由 rsh 或 rlogin login 到
ccsun7.csie.nctu.edu.tw 来。

注意:

.rhost 是一个设定可以信任的人 login 的表格,因此如果设定不当将会让
不法之徒有可以乘机侵入系统的机会。 如果你阅读 man 5 rhosts ,将会
发现你可以在第一栏用 + 来取代任何 hostname ,第二栏用 + 来取代任何
username 。

如一般 user 喜欢偷懒利用 " + username " 来代替列一长串 hostname ,
但是这样将会使得即使有一台 PC 上跑 UNIX 的 user 有与你相同的
username , 也可以得到你的 trust 而侵入你的系统。这样容易造成系统
安全上的危险。因此本系禁止使用这样子的方式写你的 .rhost 档,如果
发现将予以停机直到你找中心的工作人员将其改正为止。 同理,如果你的
第二个栏位为 + ,如" hostname + " ,则你是允许在某一部机器上的"所有"
user 可以不用经由输入 password 来进入你的帐号,是壹种更危险的行为。
所以请自行小心。

2. telnet
telnet 是一个提供 user 经由网路连到 remote host。
telnet 的 格式如下:

telnet [ hostname | ip-address ] [ port ]

hostname 为一个像 ccsun1 或是 ccsun1.cc.nctu.edu.tw 的 name address,
ip-address 则为一个由四个小於 255 的数字组成的 ip address ,如 ccsun1
的 ip-address 为 140.113.17.173 ,ccsun1.cc.nctu.edu.tw 的 ip-address
为 140.113.4.11 。你可以利用 telnet ccsun1 或 telnet 140.113.17.173 来
连到 ccsun1。

port 为一些特殊的程式所提供给外界的沟通点,如资工系的 MUD 其 server 便
提供一些 port 让 user 由这些 port 进入 MUD 程式。详情请参阅 telnet(1)
的说明。


3. ftp
ftp 的意义是 File Transfer Program ,是一个很常应用在网路档案传输的
程式。ftp 的格式如下:

ftp [ hostname | ip-address ]

其中 hostname | ip-address 的意义跟 telnet 中的相同。

在进入 ftp 之后,如果与 remote host 连接上了,它将会询问你 username
与密码,如果输入对了就可以开始进行档案传输。

在 ftp 中有许多的命令,详细的使用方式请参考 ftp(1) ,这里仅列出较常
用的 cd , lcd , mkdir , put , mput , get , mget , binary , ascii ,
prompt , help 与 quit 的使用方式。

ascii 将传输模式设为 ascii 模式。通常用於传送文字档。

binary 将传输模式设为 binary 模式,通常用於传送执行档,压缩档与影像
档等。
cd remote-directory 将 remote host 上的工作目录改变。

lcd [ directory ] 更改 local host 的工作目录。

ls [ remote-directory ] [ local-file ] 列出 remote host 上的档案。

get remote-file [ local-file ] 取得远方的档案。

mget remote-files 可使用通用字元一次取得多个档案。

put local-file [ remote-file] 将 local host 的档案送到 remote host。

mput local-files 可使用通用字元一次将多个档案放到 remote host 上。

help [ command ] 线上辅助指令。

mkdir directory-name 在 remote host 造一个目录。

prompt 更改交谈模式,若为 on 则在 mput 与 mget 时每作一个档案之传
输时均会询问。

quit/bye 离开ftp .

利用 ftp ,我们便可以在不同的机器上将所需要的资料做转移,某些特别的
机器更存放大量的资料以供各地的使用者抓取,本校较著名的 ftp server
有 NCTUCCCA 与系上的
ftp.csie.nctu.edu.tw 。这些 ftp server 均有提
供一个 user 称为 anonymous ,一般的"外来客"可以利用这个 username 取
得该 server 的公共资料。不过 anonymous 在询问 password 时是要求使用
anonymous 的使用者输入其 email address,以往有许多台湾的使用者在使用
国外的 ftp server 时并没有按照人家的要求输入其 email address,而仅是
随便打一些字串,引起许多 internet user 和管理者的不满,对台湾的使用
者的风评变得很差,因此遵循各 ftp server 的使用规则也是一件相当重要的事。

f. 关於通讯用的指令:

1. write
这个指令是提供使用者传送讯息给另一个使用者,使用方式:
write username [tty]

2. talk/ytalk/cytalk/ctalk
UNIX 专用的交谈程式。会将萤幕分隔开为你的区域和交谈对象的区域,
同时也可和不同机器的使用者交谈。使用方式:

talk username[@host] [tty]

3. mesg
选择是否接受他人的 messege , 若为 messege no 则他人的 messege 将无法
传送给你,同时他也无法干扰你的工作。使用方法:

mesg [-n|-y]

4. mail/elm
在网路上的 email 程式,可经由此程式将信件 mail 给他人。 使用方式:

mail [username]
mail -f mailboxfile

如有信件,则直接键入 mail 可以读取你的 mail .

elm 提供较 mail 更为方便的介面,而且可做线上的 alias . 你可以进入 elm
使用上下左右键来选读取的信件,并可按 h 取得线上的 help 文件。

使用方式:

elm [usernmae]
elm -f mailboxfile

g. 编译器( Compiler ):
Compiler 的用处在於将你所撰写的程式翻译成一个可执行档案。在资工系常
用的程式语言是 C , pascal , FORTRAN 等。你可以先写好一个 C 或 Pascal
或 FORTRAN 的原始程式档,再用这些 compiler 将其翻成可执行档。你可以
用这个方法来制造你自己的特殊指令。

1. cc/gcc (C Compiler)
/usr/bin/cc
/usr/local/bin/gcc

语法: cc [ -o execfile ] source
gcc [ -o execfile ] source

execfile 是你所希望的执行档的名称,如果没有加上 -o 选项编译出来的可
执行档会以 a.out 做为档名。 source 为一个以 .c 做为结尾的 C 程式档。
请参阅 cc(1) 的说明。

2. pc (Pascal Compiler)
/usr/local/bin/pc

语法: pc [ -o execfile ] source

execfile 是你所希望的执行档的名称,如果没有加上 -o 选项编译出来的可
执行档会以 a.out 做为档名。 source 为一个以 .p 做为结尾的 Pascal 程
式档。 请参阅 /net/home5/lang/man 中 pc(1) 的说明。

3. f77 (Fortran Compiler)
/net/home5/lang/f77

语法: f77 [ -o execfile ] source

execfile 是你所希望的执行档的名称,如果没有加上 -o 选项编译出来的可
执行档会以 a.out 做为档名。 source 为一个以 .p 做为结尾的 FORTRAN 程
式档。

h. 有关列印的指令:
以下为印表所会用到的指令,在本系的印表机有 lp1 , lp2 ( 点矩阵印表机 ),
lw , sp , ps , compaq ( 雷射印表机 ),供使用者使用。

1. lpr
lpr 为用来将一个档案印至列表机的指令。

用法:
lpr -P[ printer ] file1 file2 file3 ....


lpr -P[ printer ] < file1

例子:
lpr -Plp1 hello.c hello.lst hello.map
lpr -Plp1 < hello.c

前者以参数输入所要印出的档案内容,后者列印标准输入档案( standard input )
的内容,因已将 hello.c 转向到标准输入,故会印出 hello.c 的档案内容。

2. lpq
lpq 是用来观察 printer queue 上的 Jobs 。

用法:
lpq -P[ printer ]


3. lprm
lprm 是用来取消列印要求的指令。 通常我们有时会印错,或是误送非文字档
资料至 printer , 此时就必须利用 lprm 取消列印 request ,以免造成资源
的浪费。

用法:
lprm -P[ printer ] [ Jobs id | username ]

lprm 用来清除 printer queue 中的 Jobs , 如果你使用 Job Id 作为参数,则
它将此 Job 自printer queue 清除,如果你用 username作为参数,则它将此 queue
中所有 Owner 为此 username 的 Jobs 清除。

i. 更改个人使用资料:

1. passwd
passwd 是用来更改你的使用密码,用法为:

passwd [ username ]

在使用 passwd 的时候,它会先问你的旧密码,然后询问两次要更改的密码,确定
无误后才将你的密码改掉。

2. chsh
chsh 是提供使用者更换 login shell 的指令,你可经由此更换自己使用的 shell 。

 

 

用户管理是系统管理的基础。Solaris中不但支持传统Unix所支持的用户和组的概念,还从Solaris 8开始引入了基于角色的访问控制(RBAC),提供了一种更加安全、灵活的方式来进行权限分配和管理。

先看看Solaris下的基本用户管理。(详细的资料可以自行查阅man手册)

Solaris 下的基本用户管理体系包括/etc目录下的passwd、group和shadow三个配置文件,以及useradd、usermod、userdel、 passwd、groupadd、groupmod和groupdel七个基本命令,以及groups等辅助命令组成。

1配置文件

1.1passwd

/etc/passwd文件中保存了最基本的用户信息,包括用户名、密码、用户id等等,该文件由一系列的记录组成,每个记录占据一行,其格式为:

用户名:密码:用户ID:用户所在组ID:注释:用户主目录:使用的shell

其中,用户名就是通常使用的登录名了,而所谓的注释也通常被称作用户的全名。这里需要提及的是密码一项。为了安全起见,密码已经不再已明文的形式存放在passwd文件中,而是被保存到了/etc/shadow文件中,在这里用一个字母“x”进行表示。

1.2shadow

/etc/shadow文件中存储了加密后的用户密码,并且(默认)仅有root用户是可读的。该文件同样由一系列记录组成,每个记录占据一行,格式如下:

用户名:密码:上次修改密码的时间:两次密码修改最小间隔天数:密码有效天数:密码过期前进行警告的天数:最大连续不登录天数:密码过期的绝对日期:登录失败次数

其中,登录失败次数暂未使用,而所有的相对时间都是从1970年1月1日起计数的。

1.3group

/etc/group文件中存储了用户组的信息,该文件有一系列记录组成,每一条记录占据一行,格式如下:

组名:密码:组ID:用户列表

这里,用户列表中的每个用户之间用逗号“,”进行分隔。

需要指出的是,在passwd文件中标识的用户组为该用户所在的主组,而每个用户可以同时出现在多个组中,需要通过group文件进行存储。

2基本命令

2.1用户管理命令

基本的用户管理命令包括useradd、usermod、userdel和passwd四条。

useradd命令的基本用法如下所示:

useradd [-u uid | -g gid | -d dir | -s shell | -c comment | -m] usrname

其中,uid为用户ID,gid为用户主组ID,dir为用户的主目录,comment为注释(通常为用户全名),加上-m选项表示创建用户主目录,usrname则为用户的登录名。

在创建好用户后,通常需要使用passwd命令为用户设置初始密码:
useradd -g root -u 100 -d /export/home/oracle -m -s /usr/bin/bash oracle

passwd usrname

需要根据系统提示重复输入两次密码即可。

*忘记root密码的解决方法:重启计算机,选择进入failsafe模式,然后根据提示,将根目录挂在到/a目录下,修改/a/etc/passwd文件,将其中root那一项的密码留空即可。

此外,使用命令passwd -l usrname还能够将帐号临时锁定,知道管理员为其重新设定密码为止。一般的,建议不要轻易删除用户,而是使用该命令将其临时锁定即可。

创建好用户后,还可以使用usermod命令来修改其基本信息,该命令的参数和useradd命令的类似,就不再赘述了。唯一需要指出的是,usermod命令可以通过-l参数来修改用户名。

如果实在希望删除某个用户,就可以使用userdel命令:

userdel [-r] usrname

如果加上-r选项,则会在删除该用户的同时删除该用户的主目录。

2.2组管理命令

基本的组管理命令包括groupadd、groupmod和groupdel三条。

创建组的groupadd格式如下:

groupadd -g gid grpname

这里的gid为组ID,如果再加上-o选项则表明该组ID可以重复(不太清楚这样设置的目的*_*)。

修改组属性的groupmod命令格式如下:

groupmod [-g gid] [-n newgrpname] grpname

最后,可以使用groupdel命令删除一个组:

groupdel grpname

2.3辅助命令

除了使用上述基本命令之外,还可以使用其他一些命令查看用户和组的信息,常用的包括以下一些。

查看用户所属的全部组:groups usrname

查看组的信息:getent group grpname

查看当前登录用户信息:id

切换到其他组:newgrp grpname

查看最近登录的用户:last

当前登录用户:who

Solaris用户管理(二):基于角色的访问控制RBAC2008-07-01 09:22RBAC(Role-Based Access Control)是一种将管理员的部分权限分配给其他进程和用户的安全模型,包括以下一些基本概念。

role:一类特殊的用户,相关信息除了保存在用户文件之外,还会被保存到user_attr文件中。不能直接以role登录到系统,只能根据授权,使用su命令切换到某个角色。

user_attr文件记录了用户和角色的分配关系,格式如下:
user:qualifier:res1:res2:attr

其中,user为在/etc/passwd文件中定义的用户名。
qualifier、res1和res2三个字段均为保留字段。
attr为key-value对,用以描述可选的安全属性,key-value对间用分号分隔,这里的key有以下四种合法值:
type:value为normal表示为普通用户,为role表示为角色;
roles:value为分配给用户的角色,角色间用逗号分隔;
profiles:value为分配给该role的profile,其间用逗号分隔,这些profile在prof_attr文件中定义;
auth:value为分配给该role的authorization,其间用逗号分隔,这些authorization在auth_attr文件中定义。

right profile:分配给role的权限,相关信息保存在prof_attr和exec_attr两个文件中。

prof_attr文件中定义了分配的profile,格式如下:
profileName:res1:res2:desc:attr

其中,profileName为right profile名,是大小写敏感的。
res1和res2为保留字段。
desc为注释。
attr为key-value对,用以描述可选的安全属性,对间用分号分隔,这里的key有以下两个合法值:
auth:value为分配给该profile的authorization,其间用逗号分隔,这些authorization在auth_attr文件中定义。
help:指定了HTML格式的帮助文件。

exec_attr文件中包含了授予给某个profile的可以执行的指令,格式如下:
profileName:policy:type:res1:res2:id:attr

其中,profileName为在prof_attr文件中定义的right profile名。
policy指定了分配给该条记录的安全策略,只能为solaris或者suser两个值之一。
type指定了该条记录的类型,只能为表示命令的cmd。
res1和res2为保留字段。
id为该条记录的唯一标识,通常为对应命令的完整路径。
attr为key-value对,其间用分号分隔。如果policy为solaris,则key只能为privs,value为逗号分隔的给定特权;如果pollicy为suser,则key可为euid(命令以指定的真实UID运行)、uid(命令以指定的真实UID和有效UID运行)、egid(命令以指定的真实GID运行)和gid(命令以指定的真实GID和有效GID运行)之一。

authorization:每个profile可以执行的一系列的操作。

auth_attr文件中指定了每个profile可以执行的一系列操作,其格式如下:
authname:res1:res2:short_desc:long_desc:attr

其中,authname为该authorization名,命名方式和Java中的包和类的命名方式相同。如果authname以点号结尾则不是真正意义上的授权,如果以grant结尾则能够将授权分派给其他用户。
res1和res2为保留字段。
short_desc为该authorization的短名。
long_desc为该authorization的详细信息。
attr为key-value对,其间用逗号分隔,key只能为help,以指定HTML格式的帮助文件。

此外,在/etc/security/policy.conf文件中的AUTHS_GRANTED和PROFS_GRANTED两个字段则给定了默认的authorization和profile,其间用逗号分隔。

下面的例子能够很好的说明了这几个文件之间的关系。

首先,在/etc/passwd文件中定义了用户信息:
fsadm:x:60003:60003:File System Administrator:/export/home/adm:/bin/bash

在/etc/user_attr文件中定义了对应的角色信息:
fsadm::::type=normal;roles=fsmgr
fsmgr::::profiles=File System Management;type=role

这里,第一条记录表示fsadm为普通用户,且分配了一个fsmgr的角色;第二条记录表示fsmgr为一个角色,其授权为File System Management。

然后是/etc/security/prof_attr文件中定义的授权:
File System Management:::Manage, mount, share file systems:auths=solaris.smf.manage.autofs, ...;help=RtFileSysMngmnt.html

这里我为了简单起见仅仅只给出了第一个授权,为solaris.smf.manage.autofs。

先看/etc/security/auth_attr中的权限:
solaris.smf.manage.autofs:::Manage Automount Service States::help=SmfAutofsStates.html

最后看看在/etc/security/exec_attr文件中的定义:
File System Management:solaris:cmd:::/sbin/mount:privs=sys_mount

这里我也省略也其他的一些定义。

尽管可以通过直接修改上述文件来对RBAC进行配置,但最好还是通过命令行方式或者通过SMC进行。RBAC中常用的命令包括以下一些。

auths:显示指定用户的authorization,命令格式为auths [usr2..],例如:
$auths root
solaris.*

profiles:显示指定用户的right profile,命令格式为profiles [-l] [usr2..],例如:
$profiles zxz

 

isql -U a -P a -S a
 sp__helpdb 列出所有库/报告有关指定数据库或所有数据库的信息
                 sp_helpuser  查看用户信息
 sp__helptable
                sp_help [tablename]查看表信息
                 sp_helpserver go   查看服务名      
    

 

use muni_feed
go
use scratch
go(在此)
us

 


             
isql -Usa(用户名) -P(密码) -SABC(服务名)
isql参数详解
usage: isql [-b] [-e] [-F] [-p] [-n] [-v] [-X] [-Y] [-Q]
        [-a display_charset] [-A packet_size] [-c cmdend] [-D database]
        [-E editor [-h header [-H hostname [-i inputfile]
        [-I interfaces_file] [-J client_charset] [-K keytab_file]
        [-l login_timeout] [-m errorlevel] [-M labelname labelvalue]
        [-o outputfile] [-P password] [-R remote_server_principal]
        [-s col_separator] [-S server_name] [-t timeout] [-U username]
        [-V [security_options]] [-w column_width] [-z localename]
        [-Z security_mechanism]

create table tablename(id int not null primary key,name char(8)constraint foreign key(id) references table2(id))
create table tmp_as(id int not null primary key constraint foreign key(id) refrences typ_cds (id))
alter table tmp_as add constraint PL_T foreign key(Cd) refrence typ_cds(cd)

你可能感兴趣的:(unix/linux)