鸟哥linux私房菜 基础篇 笔记2

使用者与群组

这个『使用者与群组』的功能可是相当健全而好用的一个安全防护!


权限图:


  • 第一个属性代表这个档案是『目录、档案或连结文件』:
    • 当为[ ]则是目录,例如上表的第 11 行;
    • 为[ ]则是档案,例如上表的第  5 行;
    • 若是[ ]则表示为连结档(link file);
    • 若是[ b ]则表示为装置文件里面的可供储存的接口设备;
    • 若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标。
  • 除此之外,需要特别留意的是 x 这个标号!若文件名为一个目录的时候,例如上表中的 .ssh 这个目录:   
    drwx------    2 root     root         4096 Feb 10 00:44 .ssh 
     
可以看到这是一个目录,而且只有 root 可以读写与执行。但是若为底下的样式时,请问非 root 的其它人是否可以进入该目录呢?   
drwxr--r--    2 root     root         4096 Feb 10 00:44 .ssh 
  咦!似乎好像是可以喔!因为有可读[ r ]存在嘛!『错!』答案是非 root 这个账号的其它使用者均不可进入 .ssh 这个目录,为什么呢?因为 x 与 目录 的关系相当的重要,如果您在该目录底下不能执行任何指令的话,那么自然也就无法执行 ls, cd 等指令,所以啰,也就无法进入了,因此,请特别留意的是,如果您想要开放某个目录让一些人进来的话,请记得将该目录的 x 属性给开放呦!(仅针对目录,对文件没有这个要求) 
  • example:
drwxr-xr--   1 test1    testgroup    5238 Jun 19 10:25 groups/ 
请问 testgroup 这个群组的成员与其它人( others )是否可以进入本目录? 
答:
  • 档案拥有者 test1 可以在本目录中进行任何工作;
  • 而 testgroup 这个群组的账号,例如 test2, test3 亦可以进入本目录进行工作,但是不能在本目录下进行写入的动作;
  • 至于 other 的权限中虽然有 r ,但是由于没有 x 的权限,因此 others 的使用者,并不能进入此目录!

  另外,你也必须要更加的小心的是,在 Windows 底下一个档案是否具有执行的能力是借由『附档名』来执行的,例如:.exe, .bat, .com 等等,但是在 Linux 底下,我们的档案是否能执行,则是借由是否具有 x 这个属性来决定的!所以,跟档名是没有绝对的关系的!这点还请特别留意呢!第二栏表示为连结占用的节点 (i-node) ( 若为目录时,通常与该目录底下还有多少目录有关 )

第三栏表示这个档案(或目录)的『拥有人

第四栏表示拥有人的群组

第五栏为这个档案的大小

第六栏为这个档案的建档日期或者是最近的修改日期,如果乱码,请修改一下 /etc/sysconfig/i18n 这个档案,里面的『 LC_TIME 』修改为:『 LC_TIME=en 』再储存离开,再登入一次,就可以得到英文字形显示的日期了

第七栏为这个档案的档名,如果档名之前多一个『 . 』,则代表这个档案为『隐藏档』,例如上表第 6 行的『.bashrc_history』档名即是隐藏档,由于我们有下一个参数为 ls -al,所以连隐藏档都列出来,如果你只输入 ls 则档名有加『 . 』的档案就不会被显示出来!




如何改变档案权限?

chgrp :改变档案所属群组   
chown :改变档案所属人 
chmod :改变档案的属性、 SUID 、等等的特性chgrp   change group的缩写。
  • 要改变成为的群组名称必须要在
 /etc/group 里面存在的名字才行,否则就会显示错误!
  • example:
语法: 
chgrp 群组名称 档案或目录

范例: 
[root@test root]# chgrp users tmp 
[root@test root]# ls –l 
drwx------    2 root     root         4096 Oct 19 11:43 drakx/ 
drwx------    2 root     users        4096 Oct 19 21:24 tmp/ 
[root@test root]# chgrp testing tmp 
chgrp: invalid group name `testing'   <==发生错误讯息啰!


chower : change ower的缩写

  • 要注意的是,使用者必须是已经存在系统中的,也就是在 
/etc/passwd 这个档案中有纪录的使用者名称才行改变。
  • 还可以顺便直接修改群组的名称呢!此外,如
果要连目录下的所有次目录或档案同时更改档案拥有者的话,直接加上 –R 的参数即可语法: 
chown [ -R ] 账号名称 档案或目录 
chown [ -R ] 账号名称:群组名称 档案或目录

范例: 
[root@test root]# chown test tmp 
[root@test root]# ls -l 
total 28 
drwx------    2 root     root         4096 Oct 19 11:43 drakx/ 
drwx------    2 test     users        4096 Oct 19 21:24 tmp/ 
[root@test root]# chown –R root:root tmp  
[root@test root]# ls –l 
drwx------    2 root     root         4096 Oct 19 11:43 drakx/ 
drwx------    2 root     root         4096 Oct 19 21:24 tmp/


拷贝目录时,副本的目录的权限和所有者是不会改变的,这个时候就需要chower命令了

example:

[root@test root]# cp .bashrc .bashrc_test 
[root@test root]# ls –al .bashrc* 
-rw-r--r--    1 root     root          226 Feb 16  2002 .bashrc 
-rw-r--r--    1 root     root          226 Oct 21 14:24 .bashrc_test


chmod 改变属性。 通常是九个 其实linux中不止九个,暂时先学这九个,其余的以后再学

-rwxrwxrwx 就是这九个属性 也就是读写执行的三个权限
  • 这九个属性是三个三个一组的!其中,我们可以使用数字来代表各个属性,各属性的对照表如下: 
     
r:4 
w:2 
x:1 
  由于同一组的数字是相加的!例如当属性为 [ -rwxrwx--- ] 则是: 
  owner  = rwx  = 4+2+1 = 7 
group  = rwx  = 4+2+1 = 7 
others = ---  = 0+0+0 = 0   
所以,这样的属性造成的数值就是 770 啰!语法: 
chmod [-R] xyz 档案或目录 
xyz 为同三组 rwx 属性数值的相加

[root@test root]# ls –al .bashrc 
-rw-r--r--    1 root     root          226 Feb 16  2002 .bashrc 
[root@test root]# chmod 777 .bashrc 
[root@test root]# ls –al .bashrc 
-rwxrwxrwx    1 root     root          226 Feb 16  2002 .bashrc


  • 常常我们以 vi 编辑一个 shell 的文字文件后,他的属性通常是 -rw-rw-rw- 也就是 666 的属性
符号类型改变档案型态 

除了用数字改变属性 还可以用符号改变

chmod
u 
g 
o 
a
+(加入) 
-(除去) 
=(设定)
r 
w 
x
档案或目录

example

[root@test root]# chmod u=rwx,og=rx .bashrc 
[root@test root]# ls –al .bashrc 
-rwxr-xr-x    1 root     root          226 Feb 16  2002 .bashrc

  • 请注意, r=rwx,og=rx 这一段文字之间并没有空格符隔开呦!

  • 假如是『 -rwxr-xr-- 』?可以使用『 
chmod u=rwx,g=rx,o=r filename 』来设定

  • 如果我不知道原先的档案属性,而我只想要增加 .bashrc 这个档案的每个人均可写入的权限,那么我就可以使用:
[root@test root]# ls –al .bashrc 
-rwxr-xr-x    1 root     root          226 Feb 16  2002 .bashrc 
[root@test root]# chmod a+w .bashrc 
[root@test root]# ls –al .bashrc 
-rwxrwxrwx    1 root     root          226 Feb 16  2002 .bashrc*


  • 如果是要将属性去掉而不更动其它的属性呢?!例如要拿掉所有人的 x 的属性,则 
     
[root@test root]# chmod a-x .bashrc 
[root@test root]# ls –al .bashrc 
-rw-rw-rw-    1 root     root          226 Feb 16  2002 .bashrc




Linux 支持的档案格式与档案种类

  • 档案种类:
    !Linux 的档案种类主要有底下这几种: 
     
    • 正规档案( regular file ):就是一般类型的档案,在由 ls –al 所显示出来的属性方面,第一个属性为 [ - ]。另外,依照档案的内容,又大略可以分为两种档案种类:
      • 纯文字文件(ascii) :这是 Unix 系统中最多的一种啰,几乎只要我们可以用来做为设定的档案都属于这一种;
      • 二进制文件(binary) :通常执行档除了 scripts (文字型批次文件)之外,就是这一种档案格式;
       
    • 目录 (directory):第一个属性为 [ d ];
     
    • 连结档 (link):就是类似 Windows 底下的快捷方式啦!第一个属性为 [ l ];
     
    • 设备档 (device):与系统周边相关的一些档案,通常都集中在 /dev 这个目录之下!通常又分为两种:
      • 区块 (block) 设备档 :就是一些储存数据,以提供系统存取的接口设备,简单的说就是硬盘啦!例如你的一号硬盘的代码是 /dev/hda1 等等的档案啦!第一个属性为 [ b ];
      • 字符 (character) 设备档 :亦即是一些串行端口的接口设备,例如键盘、鼠标等等!第一个属性为 [ c ]。
设备文件是我们系统中很重要的档案,最好不要随意修改


另一个比较有趣的档案就是连结档。如果你常常将应用程序捉到桌面来的话,就是 Windows 底下有所谓的『快捷方式』。同样的,你可以将 linux 下的连结档简单的视为一个档案或目录的快捷方式。但是这两个东西是不一样的!在 Windows 系统的快捷方式中,你将无法修改主程序,但是在 Linux 中,连结档可以直接连结到主程序,因此你只要改了这个连结文件,则主程序亦被改变了!


Linux 档案附档名:就是windows下后缀名

  • 批次档 ( scripts ):通常以 *.sh 来代表,(因为批次档为使用 shell 写成的,所以附档名就编成 .sh 啰);
  • 打包或压缩档:通常附档名为 *.Z, *.tar, *.tar.gz, *.zip, *.tgz 等等,这是因为压缩软件分别为 gunzip, tar 等等的,由于不同的压缩软件,而取其相关的附档名啰!
  • 网页相关档案:通常使用 *.html 与 *.php 等等的档案,分别代表 HTML 语法与 PHP 语法的网页档案啰!这种档案可以使用网页浏览器来开启!
另外,还有程序语言如 perl 的档案,其附档名也可能取成 .pl 这种档名! 基本上, Linux 上面的档名真的只是让你了解该档案可能的用途而已,真正的执行与否仍然需要属性的规范才行! 你在网络上下载一个可执行档,但是偏偏在你的 Linux 系统中就是无法执行!呵呵!那么就是可能档案的属性被改变了!不要怀疑,从网络上传送到你的 Linux 系统中,档案的属性确实是会被改变的喔!  再提个另外!在 Linux 底下,每一个档案或目录的文件名最长可以到达 256 的字符,是相当长的档名喔!


Linux 目录配置:




每个目录的大致内容如下表所示: 
 
/bin 这是放例如: ls, mv, rm, mkdir, rmdir, gzip, tar, telnet, 及 ftp 等等常用的执行档的地方(这些执行档的执行方法会在后面提到),有时候这个目录的内容与 /usr/bin 是一样的(有时候甚至会使用连结档哩),是给一般使用者使用的执行程序放置的所在!
/boot 没错,这里就是放置你 Linux 核心与开机相关档案的地方,这个目录底下的 vmlinuz-xxx 就是 Linux 的 Kernel 啦!粉重要的东西!而如果你的开机管理程序选择 grub 的话,那么这个目录内还有 /boot/grub 这个次目录呦!
/dev 摆放一些与装置有关的档案。基本上 Unix 或 Linux 系统均把装置当成是一个档案来看待,例如 /dev/fd0 代表软盘,亦即 Windows 系统下的 A 槽,而 /dev/cdrom 则代表光盘,等等!而如上所述,在这个目录底下的档案型态通常分为两种喔,分别是管理磁盘 Input/Output 的 Block 档案与周边的 Character 档案。
/etc 系统在开机过程中需要读取的档案均在这个目录中,例如 Lilo 的参数、人员的账号与密码、系统的主要设定、http 架站的参数内容、你所要开启的服务项目等等都在这个目录中,所以在这个目录下工作的时候,请记得一定要备份,否则档案被改掉了可是很麻烦的!
/etc/rc.d 这个路径主要在记录一些开关机过程中的 scripts 档案, scripts 有点像是 DOS 下的批次档(.bat档名)
/etc/rc.d/init.d 所以服务预设的启动 scripts 都是放在这里的,例如要启动与关闭 iptables 的话,可以:  
/etc/rc.d/init.d/iptables start 
/etc/rc.d/init.d/iptables stop
/etc/xinetd.d 这个路径在较新的 Linux distribution 当中才有,由于早期的版本用来开启服务的档案是 inetd.conf ,但是在较新的版本中,开启服务的项目已经变成使用 xinetd.conf 这个档案,因此,你若需要启动一些额外的服务的话,在 Mandrake 9.0 或者是 Red Hat 7.0 以后就要到 /etc/xinetd.d 这个目录下了。
/etc/X11 这是与 X windows 有关的设定文件所在的目录,尤其里面的 XF86Config-4 更是重要呢!
/home 基本上,这是系统预设的使用者的家目录( home directory ),在你新增一般使用者账号的时候,预设的使用者家目录都在这里设定好啰!
/lib 在 Linux 执行或编译一些程序的时候,均会使用到一些函式库(library),就在这个目录下
/lost+fount 系统不正常产生错误时,会将一些遗失的片段放置于此目录下,通常这个目录会自动出现在装置目录下。例如你加装一棵硬盘于 /disk 中,那在这个目录下就会自动产生一个这样的目录 /disk/lost+found
/mnt 这是软盘与光盘预设挂载点的地方;通常软盘挂在 /mnt/floppy 下,而光盘挂在 /mnt/cdrom 下,不过也不一定啦!只要你高兴,随便找一个地方来挂载也可以呀!
/proc 系统核心与执行程序的一些信息。例如你的网络状态的问题啦!这个目录将在启动 Linux 的时候自动的被挂上,而且该目录底下不会占去硬盘空间!因为里面都是『内存』内的数据啦
/root 系统管理员的家目录
/sbin 放置一些系统管理常用的程序,例如: fdisk, mke2fs, fsck, mkswap, mount 等等。与 /bin 不太一样的地方,这个目录下的程序通常是给 root 等系统管理员使用的程序喔!
/tmp 这是让一般使用者暂时存放档案的地方,例如你在安装 Linux 下的软件时,可能软件预设的工作目录就是 /tmp ,所以你要定期的清理一下,当然,重要数据最好不要放在这里!
/usr 这是最重要的一个目录了,里面含有相当多的系统信息,内有许多目录,用来存放程序与指令等等。这个目录有点像是 Windows 底下的『Program Files』那个目录说~
/usr/bin 放置可执行程序,如前所说,这个目录的档案与 /bin 几乎是相同的。
/usr/include 一些套件的header档。基本上,当我们在以 tarball 方式( *.tar.gz 的方式安装软件)安装某些数据时,会使用到的一些函式库都在这个目录底下喔!
/usr/lib 内含许多程序与子程序所需的函式库。
/usr/local 在你安装完了 Linux 之后,基本上所有的配备你都有了,但是软件总是可以升级的,例如你要升级你的 proxy 服务,则通常软件预设的安装地方就是在 /usr/local 中( local 是『当地』的意思),同时,安装完毕之后所得到的执行文件,为了与系统原先的执行文件有分别,因此升级后的执行档通常摆在 /usr/local/bin 这个地方。 

给个建议啦,通常 VBird 都会将后来才安装上去的软件放置在这里,因为便于管理呦!

/usr/sbin 放置管理者使用程序,与 /sbin 类似的功能
/usr/share/doc 放置一些系统说明文件的地方,例如你安装了 lilo 了,那么在该目录底下找一找,就可以查到 lilo 的说明文件了!很是便利!
/usr/share/man 放置一些程序的说明文件的地方,那是什么?呵呵!就是你使用 man 的时候,会去查询的路径呀!例如你使用 man ls 这个指令时,就会查出 /usr/share/man/man1/ls.1.bz2 这个说明档的内容啰!
/usr/src 这是放置核心原始码的预设目录,未来我们要编译核心的时候,就必须到这个目录底下呦!
/usr/X11R6 X Window System存放相关档案的目录
/var 这个目录可就重要了!所有服务的登录文件或错误讯息档案(log files)都在 /var/log 里面,此外,一些数据库如 MySQL 的数据库则在 /var/lib 里头,此外,使用者未读邮件邮件的预设放置地点为 /var/spool/mail !呵呵!你说重不重要呀!?


发布了22 篇原创文章 · 获赞 1 · 访问量 13万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章