文件查找

which whereis    locate    find

--which

 which - shows the full path of (shell) commands.


[root@li ~]# which mount
/bin/mount

[root@li ~]# rpm -qf `which ls`  --有别名
--color=tty': unknown option


[root@li ~]# rpm -qf `which --skip-alias ls`
coreutils-5.97-23.el5


[root@li ~]# which ifconfig --查找二进制可执行文件,通过环境变量来查找 也就是$PATH的路径来查找。
/sbin/ifconfig

[a@li ~]$ which ifconifg --普通用户环境变量没有/sbin/这个路径,所以which找不到
/usr/bin/which: no ifconifg in (/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/a/bin)


--whereis

  whereis - locate the binary, source, and manual page files for a command


[root@li ~]# whereis ifconfig 
ifconfig: /sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz

[a@li ~]$ whereis ifconfig
ifconfig: /sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz


--locate

       locate - find files by name

[root@li ~]# locate rhel-5.4
/share/soft/iso/rhel-5.4-server-i386-dvd.iso


 速度快,通过系统带的一个数据库去查找
[root@li ~]# ls /var/lib/mlocate/
mlocate.db 

[root@li ~]# ll /var/lib/mlocate/mlocate.db -h
-rw-r----- 1 root slocate 4.6G Jul  6 11:02 /var/lib/mlocate/mlocate.db
--我这里看到这个文件有近5G,太大了,一般都在几M大小;因为我这台机器先前写脚本建立过大量文件


[root@li ~]# touch abcd777 --新建一个文件
[root@li ~]# locate abcd777 --locate查找不出来


[root@li ~]# updatedb  --手动更新locate数据库,时间比较长,但是系统的时间任务服务会在晚上4点帮你去更新

[root@li ~]# locate abcd777 --更新locate数据库后,再查找就有了
/root/abcd777

 

find
 find  - search for files in a directory hierarchy


 速度慢,因为要扫你的磁盘,功能强大
 find 路径 [选项]
  -name      --通过名字找
  -type    --通过文件类型找
  
  -uid    --通过uid查找
  -gid    --通过gid查找
  -user    --通过username查找
  -group    --通过groupname查找

  -perm    --通过权限查找
   +n --n包含的权限也查找出来
   -n --包含n的权限也查找出来
  -size    --通过大小查找
   +n --查出大于n的文件
   -n --查出小于n的文件


1,按名称查找

[root@li ~]# find /etc/  -name grub.conf  --必须要全名,与locate不同,不是匹配名字 
/etc/grub.conf
[root@li ~]# find /etc/  -name grub 
/etc/sysconfig/grub
[root@li ~]# find /etc/  -name grub* --名字不太确定,可以用*通配符来代替
/etc/sysconfig/grub
/etc/grub.conf


  find /test/  -iname Aaa --忽略大小写加上-i
  /test/aaa
  /test/Aaa
  /test/AAa

[root@dns test]# find /test/ -name  adobe*

[root@dns test]# find /test/ -iname  adobe*
/test/AdobeReader_chs-7.0.0-2.i386.rpm


--定义查找的目录层次
[root@li a]# find /test/ -maxdepth 1 -name  aaa 
/test/aaa
[root@li a]# find /test/ -maxdepth 2 -name  aaa
/test/aaa
/test/a/aaa

[root@dns test]# find /  -maxdepth 1 -name grub.conf
[root@dns test]# find /  -maxdepth 2 -name grub.conf
/etc/grub.conf
/test/grub.conf
[root@dns test]# find /  -maxdepth 3 -name grub.conf
/etc/grub.conf
/boot/grub/grub.conf
/test/grub.conf
[root@li test]# find / -mindepth 3 -maxdepth 3 -name grub.conf
/boot/grub/grub.conf


2,按类型查找
  find /etc  -type l |grep grub.conf
  find /etc  -type l -name grub.conf --与-name参数一起写

   find /  -type b
   find /  -type s
   find /  -type c
   find /  -type p 


find /test -type d |xargs chmod 777
find /test -type d -exec chmod 755 {} \;

 

3,按用户名,组名,uid,gid查找
  find / -user a
  find / -group a
  find / -uid 533
  find / -gid 533
  find / -nouser   --查出系统的无头文件,就是指没有属主的文件 
  find / -nogroup  --查出系统的没有属组的文件
    没有属主和属组的文件,系统管理一般是要去注意的


[root@dns test]# find /test -user a |xargs tar cf /backup/c.tar


4,按权限查找

  find / -perm  777   --查出所有权限为777的文件,一般也是管理员要注意的
  find . -perm +111  ---相当于或的功能
  find . -perm -777  ---相当于与的功能


[root@li test]# ll
total 0
-rwxrwxrwx 1 root root 0 Mar 16 13:38 1
-rwxr-xr-- 1 root root 0 Mar 16 13:38 2
-r-xr-x-w- 1 root root 0 Mar 16 13:38 3
-r-x------ 1 root root 0 Mar 16 13:38 4
-r--r----x 1 root root 0 Mar 16 13:38 5
--w-r--r-x 1 root root 0 Mar 16 13:38 6
---x-w--wx 1 root root 0 Mar 16 13:38 7
---------- 1 root root 0 Mar 16 13:38 8

[root@li test]# find . -perm +001 --文件的权限与+号后的权限只要有一位重合,就找出来
.
./6
./5
./1
./7


--find . -perm /001   --和+号一样,用来取代+号

[root@li test]# find . -perm -400 --文件的权限要包含-号后的权限(也就是都重合)就找出来
.
./3
./5
./1
./2
./4

练习: 查找/etc/下所有只要user1用户可读可写的文件
  find /etc/ -perm -006

 

5,按大小查找

  find / -size +500M --单位有k,m,g等
  find / -size +1G
  find /etc -size +50k
  find /etc -size +50b --b是块,一个块是512个字节
  find /  -size -1M

--查找大于80M小于100M的文件
find /share -size +80M -size -100M  -type f 


6,按时间查找


[root@li a]# stat 1
  File: `1'
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 808h/2056d      Inode: 12177882    Links: 1
Access: (0777/-rwxrwxrwx)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2010-04-24 14:44:00.000000000 +0800 --atime 阅读过,用cat,tail,head命令等或者vi访问过,但没有修改;执行过也会改变
Modify: 2010-04-24 14:44:00.000000000 +0800 --mtime 修改过内容,用vi修改过或者echo一个值重定向
Change: 2010-04-24 14:44:14.000000000 +0800 --ctime 改变过内容,属主,属组,权限,创建软链接,硬链接,重命名等


find 按时间查找有  atime,mtime,ctime,amin,mmin,cmin等

 -mtime  n --代表n天前的24小时内 
  +n --代表n天前(不包含n天本身的24小时)
  -n --代表n天内

 find . -atime 1        --表示从现在起往前推24小时到推48小时之间的24小时
 find . -atime +1       --表示从现在起前推48小时之前的所有时间
 find . -atime -1       --表示从现在起往前推24小时到将来的所有时间

 

 

 1 2 3 4 5 6 7
   |-- 2 --|
 <-------    -2  |  | +2 --------------->
将来 now      以前的时间

 


 find / -mtime 0  --0代表目前当天的24小时
 find / -mtime  +1 --修改时间1天之前
 find . -mtime -1 --修改时间在一天之内


练习:
 比如现在为7号凌晨0点
    查找/etc/下5号那天修改过内容的文件
 find /etc -mtime 1

    查找/ 下2号以前修改过权限的可能文件
 find /  -ctime  +4

    查找  / 下6号到现在被访问过的文件
 find /  -atime 0 

    查找10分钟内访问过的文件
 find / -amin  -10

 现在为下午11:30   查找上午10点之后修改过内容的文件
  find / -mmin -90


-----------------------------
find后接-exec动作
 -exec   

 find /etc/ -name "*.conf" -exec  cp {} /test/a \;

  find  /etc/ -name grub -exec cat {} \;
-- -exec后面接动作,  {}代表前面的结果集      \; 代表结束


==================================

 

 


=======================================


  quota - display disk usage and limits


磁盘配额

 可以以用户来配额,也可以以组来配额


应用的场景:

 web服务器          对web空间进行限制
 邮件服务器   对用户的邮件空间进行限制
 文件服务器   对用户的文件共享空间进行限制


VPS   虚拟私有主机    virtual  private  server

把一台强劲的服务使用虚拟化技术虚拟成多台小的服务器,然后租用给用户使用


quota的使用限制:

 1,它只能对分区有效
 2,内核要支持quota --但挂载时要使用特殊参数
 3,只能针对普通用户,不能限制root用户


quota的限制方式:
  
 1,block 对磁盘空间大小来做限制,最常用
 2,inode  对文件个数来做限制,不太好用,但可以和block一起使用


--第一步:
先分一个区出来做测试:


 fdisk /dev/sda

Command (m for help): n   --新建一个分区
First cylinder (21848-38913, default 21848):
Using default value 21848
Last cylinder or +size or +sizeM or +sizeK (21848-22195, default 22195): +1000M --指定分区为1000M大小
Using default value 22195

Command (m for help): w  --保存并退出

[root@li /]#  partprobe  --将刚分区的信息刷新到磁盘分区表

[root@li /]# mkfs.ext3 /dev/sda13 --格式化刚分的分区

 

--第二步:
挂载刚分的区,注意挂载参数
[root@li /]# mount -t ext3 -o usrquota,grpquota /dev/sda13 /quota/ --usrquota指支持以用户来配额,grpquota指支持以组来配额


[root@li /]# mount
/dev/sda13 on /quota type ext3 (rw,usrquota,grpquota) --用mount命令验证挂载参数

要想永久生效:

写到/etc/fstab

/dev/sda13 /quota  ext3     defaults,usrquota,grpquota  0 0

 

--第三步:
对要使用quota功能的分区生成quota配置文件
命令为quotacheck
 quotacheck  - scan a filesystem for disk usage, create, check and repair
       quota files

[root@li /]# cd /quota/
[root@li quota]# ls
lost+found
  quotacheck -cauvg
 -c    忽略已经原有的配置文件并再次生成
 -a    扫描所有使用挂载参数挂载的分区,并对他们生成配置文件
 -u    生成与用户配额有关的配置文件
 -g    生成与组配额有关的配置文件 
 -v    可以看到生成配置过程信息 

[root@li quota]# quotacheck -cauvg  --对启用quota的分区生成配置文件
quotacheck: Scanning /dev/sda13 [/quota] quotacheck: Cannot stat old user quota file: No such file or directory
quotacheck: Cannot stat old group quota file: No such file or directory
quotacheck: Cannot stat old user quota file: No such file or directory
quotacheck: Cannot stat old group quota file: No such file or directory --第一次扫描有报错,没关系
done
quotacheck: Checked 3 directories and 2 files
quotacheck: Old file not found.
quotacheck: Old file not found.

[root@li quota]# ls  --再次列表查看,会发现多了两个配置文件
aquota.group  aquota.user  lost+found

 

--第四步:
开始对用户使用配额

 edquota - edit user quotas

[root@li ~]# id a
uid=522(a) gid=522(a) groups=522(a)
[root@li ~]# id b
uid=523(b) gid=523(b) groups=523(b)


[root@li quota]# edquota -u a


Disk quotas for user a (uid 533):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/sda13                        0        20000      30000       0        0        0
   --软限制为20M ,硬限制为30m        inode不好控制,不建议使用 

 

[root@li quota]# edquota -u b

Disk quotas for user a (uid 533):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/sda13                        0        40000      50000       0        0        0


--第五步:
启用quota功能
  quotaon /dev/sda13

 

-第六步:
 查看配额的使用情况:
  [root@li quota]# repquota -a 
*** Report for user quotas on device /dev/sda13
Block grace time: 7days; Inode grace time: 7days
                        Block limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --   69712       0       0              4     0     0    

 

[root@li quota]# repquota -avugs --查看更详细的磁盘配额
  -a  直接搜索有quota标志的分区,报告quota的结果
  -v  显示详细信息
  -u   显示使用者的quota值
  -g   显示组的quota值
  -s    Try  to  report  used  space, number of used inodes and limits in
              more appropriate units than the default ones.

*** Report for user quotas on device /dev/sda13
Block grace time: 7days; Inode grace time: 7days --grace time指的是宽限时间,默认是7天
                        Block limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --   69712       0       0              4     0     0      
a         --       0   20000   30000              0     0     0      
b         --       0   40000   50000              0     0     0      

Statistics:
Total blocks: 7
Data blocks: 1
Entries: 3
Used average: 3.000000

*** Report for group quotas on device /dev/sda13
Block grace time: 7days; Inode grace time: 7days
                        Block limits                File limits
Group           used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --   69712       0       0              4     0     0      

Statistics:
Total blocks: 6
Data blocks: 1
Entries: 1
Used average: 1.000000


下面使用a用户测试:

[root@li ~]# su - a
[a@li quota]$ dd if=/dev/zero of=/quota/a1  bs=1M  count=19 --创建一个19M的文件a1,没有警告
19+0 records in
19+0 records out
19922944 bytes (20 MB) copied, 0.0535929 seconds, 372 MB/s


[a@li quota]$ dd if=/dev/zero of=/quota/a2  bs=1M  count=2 --再创建一个2M的文件a2,因为19+2大于对a用户的软件限制20M,所以报警告
sda13: warning, user block quota exceeded.
2+0 records in
2+0 records out
2097152 bytes (2.1 MB) copied, 0.00702628 seconds, 298 MB/s

[a@li quota]$ dd if=/dev/zero of=/quota/a3  bs=1M  count=8 --创建8M的文件a3,还没超过硬限制


[a@li quota]$ dd if=/dev/zero of=/quota/a4  bs=1M  count=2 --创建2M的文件a4,超过硬限制,失败
sda13: write failed, user block limit reached.
dd: writing `/quota/a4': Disk quota exceeded
1+0 records in
0+0 records out
266240 bytes (266 kB) copied, 0.00137422 seconds, 194 MB/s


b用户测试方式也一样

===========================================================


root用户查看测试后的情况:

[root@li quota]# repquota -a
*** Report for user quotas on device /dev/sda13
Block grace time: 10days; Inode grace time: 7days
                        Block limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --   69712       0       0              4     0     0      
a         +-   30000   20000   30000  9days       5     0     0      
b         +-   50000   40000   50000  9days       2     0     0   

 

--上面的实验可以针对grace time来测试一下,

 

[user2@li ~]$ dd if=/dev/zero of=/quota/user2.01 bs=1M count=29
29+0 records in
29+0 records out
30408704 bytes (30 MB) copied, 0.0526351 seconds, 578 MB/s

[user2@li ~]$ dd if=/dev/zero of=/quota/user2.02 bs=1M count=2
sda7: warning, user block quota exceeded.  
2+0 records in
2+0 records out
2097152 bytes (2.1 MB) copied, 0.00345779 seconds, 607 MB/s

--上面达到了软限制,在这里我把系统时间改到7天之后

[user2@li ~]$ dd if=/dev/zero of=/quota/user2.03 bs=1M count=2
sda7: write failed, user block quota exceeded too long.
dd: writing `/quota/user2.03': Disk quota exceeded
1+0 records in
0+0 records out
0 bytes (0 B) copied, 0.00022272 seconds, 0.0 kB/s

--系统时间在7天之后(也就是grace time),按理来说硬限制还没有达到,仍然可以写8M到9M的大小,但是现在一个字节都写不进去    --->这就是grace time的作用


[root@li test]# edquota -t  --修改grace time的方法


==================================


尝试使用inode来限制

 

[root@li test]# edquota -u a


Disk quotas for user a (uid 520):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/sda8                         0      20000      30000          0        2        5


[root@li src]# su - a
[a@li ~]$ cd /quota/
[a@li quota]$ touch a1
[a@li quota]$ touch a2
[a@li quota]$ touch a3
sda8: warning, user file quota exceeded.
[a@li quota]$ touch a4
[a@li quota]$ touch a5
[a@li quota]$ touch a6
sda8: write failed, user file limit reached.
touch: cannot touch `a6': Disk quota exceeded


==================================

 

-----------------------------------------------------------


组quota配置 
 要使用组quota配置,挂载时要加上grpquota的参数
 1,做实验用两个或多个用户加入到一个组,要求gid相同
 grupadd quota  
 useradd -g quota a
 useradd -g quota b

 usermod  -g quota  a
 
 2,编辑组quota时
 edquota -g  quota

 3,测试的时候,
  对quota组的限制要以组员a和b创建文件占用大小的总和的计算

 

[root@li quota]# groupadd quota

[root@li quota]# useradd -g quota aa
[root@li quota]# useradd -g quota bb
[root@li quota]# id aa
uid=537(aa) gid=538(quota) groups=538(quota)
[root@li quota]# id bb
uid=538(bb) gid=538(quota) groups=538(quota)


[root@li quota]# repquota -avgs

*** Report for group quotas on device /dev/sda13
Block grace time: 7days; Inode grace time: 7days
                        Block limits                File limits
Group           used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --   69712       0       0              4     0     0      
a         --   30000       0       0              5     0     0      
b         --   50000       0       0              2     0     0      
quota     --       0   30000   40000              0     0     0      

Statistics:
Total blocks: 7
Data blocks: 1
Entries: 4
Used average: 4.000000

[aa@li ~]$ dd if=/dev/zero of=/quota/aa1 bs=1M count=10
10+0 records in
10+0 records out
10485760 bytes (10 MB) copied, 0.0339249 seconds, 309 MB/s

[bb@li ~]$ dd if=/dev/zero of=/quota/bb1 bs=1M count=21
sda13: warning, group block quota exceeded.
21+0 records in
21+0 records out
22020096 bytes (22 MB) copied, 0.0730932 seconds, 301 MB/s


[aa@li ~]$ dd if=/dev/zero of=/quota/aa2 bs=1M count=10
sda13: write failed, group block limit reached.  --这里报的是group block 限制到达
dd: writing `/quota/aa2': Disk quota exceeded
9+0 records in
8+0 records out
8396800 bytes (8.4 MB) copied, 0.0282151 seconds, 298 MB/s

 

问:当用户配额和组配额都配置了的时候,有冲突的话,那么是哪个生效?还是都生效?

全部生效,先到达限制的就生效;如果还配置了inode的方式,也一样是都生效的

 


=============================================================

 

=============================================================


ACL access control  list   访问控制列表

  内核级别上去实现的


 创建一个文件 test  ,要求 user1用户对它有读写执行,user2,user3,user4用户对它有读和执行,其它用户对它只读
  
  -rwxr-xr-- user1 group1  test

   --把user2,user3,user4都加入到group1这个组


 --上面的针对同一个文件或者目录有三类不同的权限需求,是可以表示出来的;如果有四类或者四类以上的权限需求,就不能表示,那么ACL就可以用上了

 

  acl   access control list 访问控制列表
针对同一个文件,对不同的用户实现不同的权限设置,它是内核级别实现权限控制

--要注意的:在rhel5.1,5.2版本是不能直接支持,需要挂载时加上acl参数  -o acl

[root@li test]# dumpe2fs /dev/sda8 |grep user_xattr
dumpe2fs 1.39 (29-May-2006)
Default mount options:    user_xattr acl --这里有acl表示是支持acl


 mount -t ext3  -o defaults,usrquota,grpquota,acl  /dev/sda7 /quota

 


setfacl 设置acl命令 --对文件和目录都可以
getfacl 查看acl权限状态


setfacl - set file access control lists


EXAMPLES --man帮助文档中的例子
       Granting an additional user read access
              setfacl -m u:lisa:r file

       Revoking  write  access  from  all  groups and all named
       users (using the effective rights mask)
              setfacl -m m::rx file

       Removing a named group entry from a file’s ACL
              setfacl -x g:staff file


setfacl
 -m   设置acl
 -x   与-m相反
 -b   清空文件所有设置的acl


练习:
   针对test文件,user1对其rwx,user2对其rw,user3对其rx


  setfacl  -m u:user1:rwx test
  setfacl  -m u:user2:rw test
  setfacl  -m u:user3:rx test

 

[root@li test]# ll |grep test
-rw-r--r-- 1 root root    0 Apr 18 16:05 test


[root@li test]# getfacl test
# file: test
# owner: root
# group: root
user::rw-
group::r--
other::r--

 

[root@li test]# setfacl -m u:a:rwx  test  --设置a用户对test文件的权限为rwx

[root@li test]# ll |grep test --用ll查看时发现有一个+号,而且权限有点不一样,表明有acl在起作用
-rw-rwxr--+ 1 root root    0 Apr 18 16:05 test


[root@li test]# getfacl test
# file: test  --指文件名
# owner: root  --指文件的属主 
# group: root  --指文件的属组
user::rw-  --指的是属主对此文件的权限
user:a:rwx  --指的是a用户对此文件的权限
group::r--  --指的是属组对此文件的权限
mask::rwx  --指的是一个有效位,做一个与运算
other::r--  --指的others对此文件的权限

 

[root@li test]# setfacl -m u:b:r test
[root@li test]# setfacl -m u:c:rx test
[root@li test]# setfacl -m u:d:wx test
[root@li test]# getfacl test
# file: test
# owner: root
# group: root
user::rw-
user:a:rwx
user:b:r--
user:c:r-x
user:d:-wx
group::r--
mask::rwx
other::r--


[root@li test]# setfacl -m g:quota:rwx test  --设置quota组对test文件的权限为rwx
[root@li test]# getfacl test
# file: test
# owner: root
# group: root
user::rw-
user:a:rwx
user:b:r--
user:c:r-x
user:d:-wx
group::r--
group:quota:rwx
mask::rwx
other::r--


[root@li test]# setfacl -m o:x test  --对others对test文件的权限为x
[root@li test]# getfacl test
# file: test
# owner: root
# group: root
user::rw-
user:a:rwx
user:b:r--
user:c:r-x
user:d:-wx
group::r--
group:quota:rwx
mask::rwx
other::--x

--验证时要注意,只有x权限还是不能执行的,因为读取不了内容,就算有X权限也不可以。所以rx都要有,才能执行


[root@li test]# setfacl -m mask:r test --对test文件的mask值设为r
[root@li test]# getfacl test
# file: test
# owner: root
# group: root
user::rw-
user:a:rwx                      #effective:r--
user:b:r--
user:c:r-x                      #effective:r--
user:d:-wx                      #effective:---
group::r--
group:quota:rwx                 #effective:r--
mask::r--
other::--x   --mask对other无效


[root@li test]# setfacl -b test
[root@li test]# getfacl test
# file: test
# owner: root
# group: root
user::rw-
group::r--
other::--x


[root@li test]# setfacl -m u:a:rw,g:b:rwx,o:r,mask:rwx test  --一次设置多个acl
[root@li test]# getfacl test
# file: test
# owner: root
# group: root
user::rw-
user:a:rw-
group::r--
group:b:rwx
mask::rwx
other::r--


取消用户的acl规则:
setfacl -x u:user1 test

取消所有的acl规则:
setfacl -b test


--如果一个用户同属于两个组,使用acl定义的这两个组一个有rw权限,另一个有x权限,那么此用户会对其有rwx权限;

 

acl可以对目录生效,设置方法一样

 

练习:

一,创建一个/acl目录,
现在有user1,user2,user3,user4,user5五个用户
要求:
 user1能在此目录下创建文件,能CD进去,别的都不能
 user2能列出目录内容,能CD进去,别的都不能
 user3,user4同属于group1,group1组的用户对此目录有任意权限
 user5用户只能CD进去

 

先使用acl参数来挂载一个分区到/acl目录让它支持quota

groupadd group1
useradd user1
useradd user2
useradd -G group1 user3
useradd -G group1 user4
useradd user5

setfacl -m u:user1:wx /acl
setfacl -m u:user2:rx /acl
setfacl -m g:group1:rwx /acl
setfacl -m u:user5:x /acl

 


============================================================


vnc

Summary     : A remote display system.
Description :
Virtual Network Computing (VNC) is a remote display system which
allows you to view a computing 'desktop' environment not only on the
machine where it is running, but from anywhere on the Internet and
from a wide variety of machine architectures.  This package contains a
client which will allow you to connect to other desktops running a VNC
server.


VNC   (虚拟网络计算)virtual network computing  
  AT&T实验室最早开发的

 属于一种远程控制软件 

 主要分vncserver      vncviewer       


[root@li a]# yum list |grep vnc
This system is not registered with RHN.
RHN support will be disabled.
vnc.i386                                4.1.2-14.el5_3.1          installed   --客户端  
vnc-server.i386                         4.1.2-14.el5_3.1          installed   --服务端


客户端先装上vnc.i386这个包 
 yum install vnc 装完后就会有vncviewer这个命令


[root@li ~]# vncserver

You will require a password to access your desktops.

Password:
Verify:

New 'li.cluster.com:1 (root)' desktop is li.cluster.com:1

Creating default startup script /root/.vnc/xstartup
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/li.cluster.com:1.log


[root@li ~]# vncviewer 10.1.1.35:1 --注意后面这个 :1


--默认连接的桌面叫做twm,一种最简单的桌面环境 

--------------

让客户端实现连接上的不是twm这个简单桌面,而是gnome

/root/.vnc/ --配置目录

 vim /root/.vnc/xstartup  --要显示gnome-session 就把下面两句打开,再把别的都给注释掉
 unset SESSION_MANAGER
 exec /etc/X11/xinit/xinitrc

#[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
#[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
#xsetroot -solid grey
#vncconfig -iconic &
#xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
#twm &


修改完配置文件后,再在服务端使用vncserver开启一个连接,用客户端来连接这个新连接就可以控制server端的gnome桌面了

[root@li ~]# vncserver :99 --一般数字是按照顺序来的,但也可以这样指定,直接开启第99号控制窗口


[root@li ~]# vncpasswd

 

[root@li a]# ls /root/.vnc/
li.cluster.com:1.log  li.cluster.com:2.log  li.cluster.com:3.log  passwd
li.cluster.com:1.pid  li.cluster.com:2.pid  li.cluster.com:3.pid  xstartup


[root@li a]# vncserver -kill :1  --杀掉1号控制窗口
Killing Xvnc process ID 11889

[root@li a]# ls /root/.vnc/
li.cluster.com:1.log  li.cluster.com:2.pid  li.cluster.com:3.pid  xstartup
li.cluster.com:2.log  li.cluster.com:3.log  passwd
 
[root@li a]# netstat -ntl |grep 58
tcp        0      0 0.0.0.0:5802                0.0.0.0:*                   LISTEN     
tcp        0      0 0.0.0.0:5803                0.0.0.0:*                   LISTEN

 

vnc的端口是5801开始和5901开始
 5800+n  是给浏览器用的     5900+n  是给vncviewer用的


http://10.1.1.35:5802/  --用浏览器访问

 但linux下的firefox浏览器是要装一个java插件


实现大家都可以连接上来,并且是只读模式
 vncviewer -Viewonly -Shared 10.1.1.35:1  --这种也不太用

 

服务端可以使用下面的命令来控制
[root@li ~]# vino-preferences


客户端使用:
 vncviewer  10.1.1.35:0 连接就可以了