1.用户与用户组
Linux系统下,存在3种用户身份:
- 文件所有者
- 用户组
- 其他人
每个账号可以有多个用户组的支持(这样它就能同时具有这两个用户组的权限)。
默认情况下,用户的相关信息都记录在/etc/password这个文件内,个人的密码记录在/etc/shadow,Linux所有的组名都记录在/etc/group内。
2.Linux文件属性
在登录Linux后,执行“ls -al”命令,可以查看所有文件的详细的权限和属性,如下:
[root@www ~]# ls -al total 156 drwxr-x--- 4 root root 4096 Sep 8 14:06 . drwxr-xr-x 23 root root 4096 Sep 8 14:21 .. -rw------- 1 root root 1474 Sep 4 18:27 anaconda-ks.cfg -rw------- 1 root root 199 Sep 8 17:14 .bash_history -rw-r--r-- 1 root root 24 Jan 6 2007 .bash_logout -rw-r--r-- 1 root root 191 Jan 6 2007 .bash_profile -rw-r--r-- 1 root root 176 Jan 6 2007 .bashrc -rw-r--r-- 1 root root 100 Jan 6 2007 .cshrc drwx------ 3 root root 4096 Sep 5 10:37 .gconf <=范例说明处 drwx------ 2 root root 4096 Sep 5 14:09 .gconfd -rw-r--r-- 1 root root 42304 Sep 4 18:26 install.log <=范例说明处 -rw-r--r-- 1 root root 5661 Sep 4 18:25 install.log.syslog [ 1 ][ 2 ][ 3 ][ 4 ][ 5 ][ 6 ][ 7 ] [ 权限 ][连结][拥有者][群组][文件容量][ 修改日期 ][ 檔名 ]
上面查询结果共7列,第一列代表这个文件的类型和权限,第二列表示有多少文件名连接到此节点,第三列表示文件的所有者的账号,第四列表示文件的所属用户组,第五列表示文件的容量大小(默认单位为B),第六列表示文件的创建日期或者最近的修改时期,第七列为该文件名。
第一列共有十个字符,第一个字符代表这个文件的类型,后九个字符代码这个文件的权限。
第一个字符代表的意义:
d:表示 bin/ 为目录;
-: 表示 bin/ 为文件;
l: 表示 bin/ 为连接文件(类似Windows中都快捷方式);
b:表示 bin/ 为设备文件里面的可供存储的接口设备;
c:表示 bin/ 为设备文件里面都串行串行端口设备,例如键盘、鼠标;
后9个字符中,以三个为一组,且均为『rwx』 的三个参数的组合。其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ – ]而已。
前面3个:文件所有者的权限
中间3个:同一用户组的权限
最后3个:其他人的权限
3.如何改变文件的属性与权限
常用修改文件属性和权限的命令如下:
##chgrp:改变文件所属用户组。 chgrp -[R] groupname dirname/filename ##chown:改变文件所有者。 chown [-R] username dirname/filename ##chmod:改变文件的权限。 chmod 777 filename
-R : 进行递归(recursive)的持续变更,即连同子目录下的所有文件都更改。
设置权限的方法有两种:数字和符号。
(1)数字方式设置权限:
上面谈到Linux中权限分为9个,分别是 Owner、Group、Others 三种身份分别对应各自的 Read、Write、Execute 权限,对照表如下:
Read : r : 4
Write : w : 2
Execute : x : 1
假设我们现在要将文件 test.txt 的属性设置为文件所有者拥有全部权限,文件用户组拥有读写权限,其他人拥有读权限,那么最终的权限数字计算公式如下:
- 文件所有者全部权限:4 + 2 + 1 = 7
- 文件用户组读写权限:4 + 2 = 6
- 其他人只有读取权限:4
所以,最终的权限数字为:764。
(2)符号方式设置权限:
在这种方式中Linux分别用u,g,o,a代表文件Owner、Group、Others 、All(所有人)。
chmod |
u |
+(加入) |
r |
文件或目录 |
假如我们要设置一个文件的权限成为『-rwxr-xr-x』时,可以使用:
[root@www ~]# chmod u=rwx,go=rx .bashrc |
假如我们要设置一个文件的某个权限,而不影响该文件的其他权限,可以使用:
[root@www ~]# chmod a-x .bashrc |
4.Linux文件名与扩展名
常用文件扩展名
- *.sh : 脚本或批处理文件
- *.z *.tar *.tar.gz *.zip *z.tgz : 经过打包都压缩文件
- *.html *.php : 网页相关文件
文件名长度限制
- 单一文件或目录文件名的最大长度为255个字符
- 包含完整路径及目录名称的文件名最大长度为4096个字符
5.Linux目录配置
5.1 Linux目录配置标准:FHS
因为Linux的版本非常多,如果每个版本都有自己的目录配置,那么会造成很多困扰,所以就有了Linux目录配置标准:FHS标准。
FHS针对目录树架构仅定义出三层目录底下应该放置什么数据而已,分别是底下这三个目录的定义:
- / (root, 根目录):与开机系统有关。一定要注意其子目录也有一个root目录,与这个完全不同,不要混为一谈,也就是说根目录就是“/”。
- /usr (unix software resource):与软件安装/执行有关。
- /var (variable):与系统运作过程有关。
5.2 根目录的意义与内容
根目录是整个系统最重要的一个目录,因为不但所有的目录都是由根目录衍生出来的,同时根目录也与开机/还原/系统修复等动作有关。
FHS标准建议:根目录(/)所在分割槽应该越小越好,且应用程序所安装的软件最好不要与根目录放在同一个分割槽内,保持根目录越小越好。如此不但效能较佳,根目录所在的文件系统也较不容易发生问题。
有鉴于上述的说明,因此FHS定义出根目录(/)底下应该要有底下这些次目录的存在才好:
目录 |
应放置文件内容 |
/bin |
系统有很多放置执行文件的目录,但/bin比较特殊。因为/bin放置的是在单人维护模式下还能够被操作的指令。 在/bin底下的指令可以被root与一般账号所使用,主要有:cat, chmod, chown, date, mv, mkdir, cp, bash等等常用的指令。 |
/boot |
这个目录主要在放置开机会使用到的文件,包括Linux核心文件以及开机选单与开机所需配置文件等等。 Linux kernel常用的档名为:vmlinuz,如果使用的是grub这个开机管理程序,则还会存在/boot/grub/这个目录喔! |
/dev |
在Linux系统上,任何装置与接口设备都是以文件的型态存在于这个目录当中的。你只要透过存取这个目录底下的某个文件,就等于存取某个装置啰~比要重要的文件有/dev/null, /dev/zero, /dev/tty, /dev/lp*, /dev/hd*, /dev/sd*等等 |
/etc |
系统主要的配置文件几乎都放置在这个目录内,例如人员的账号密码文件、各种服务的启始档等等。一般来说,这个目录下的各文件属性是可以让一般使用者查阅的,但是只有root有权力修改。FHS建议不要放置可执行文件(binary)在这个目录中喔。比较重要的文件有: /etc/inittab, /etc/init.d/, /etc/modprobe.conf, /etc/X11/, /etc/fstab, /etc/sysconfig/ 等等。另外,其下重要的目录有:
|
/home |
这是系统默认的用户家目录(home directory)。在你新增一个一般使用者账号时,默认的用户家目录都会规范到这里来。比较重要的是,家目录有两种代号喔: |
/lib |
系统的函式库非常的多,而/lib放置的则是在开机时会用到的函式库,以及在/bin或/sbin底下的指令会呼叫的函式库而已。什么是函式库呢?妳可以将他想成是『外挂』,某些指令必须要有这些『外挂』才能够顺利完成程序的执行之意。尤其重要的是/lib/modules/这个目录,因为该目录会放置核心相关的模块(驱动程序)喔! |
/media |
media是『媒体』的英文,顾名思义,这个/media底下放置的就是可移除的装置啦! 包括软盘、光盘、DVD等等装置都暂时挂载于此。常见的档名有:/media/floppy, /media/cdrom等等。 |
/mnt |
如果妳想要暂时挂载某些额外的装置,一般建议妳可以放置到这个目录中。在古早时候,这个目录的用途与/media相同啦!只是有了/media之后,这个目录就用来暂时挂载用了。 |
/opt |
这个是给第三方协力软件放置的目录。什么是第三方协力软件啊?举例来说,KDE这个桌面管理系统是一个独立的计划,不过他可以安装到Linux系统中,因此KDE的软件就建议放置到此目录下了。另外,如果妳想要自行安装额外的软件(非原本的distribution提供的),那么也能够将你的软件安装到这里来。不过,以前的Linux系统中,我们还是习惯放置在/usr/local目录下呢! |
/root |
系统管理员(root)的家目录。之所以放在这里,是因为如果进入单人维护模式而仅挂载根目录时,该目录就能够拥有root的家目录,所以我们会希望root的家目录与根目录放置在同一个分割槽中。 |
/sbin |
Linux有非常多指令是用来设定系统环境的,这些指令只有root才能够利用来『设定』系统,其他用户最多只能用来『查询』而已。 放在/sbin底下的为开机过程中所需要的,里面包括了开机、修复、还原系统所需要的指令。 至于某些服务器软件程序,一般则放置到/usr/sbin/当中。至于本机自行安装的软件所产生的系统执行文件(system binary),则放置到/usr/local/sbin/当中了。常见的指令包括:fdisk, fsck, ifconfig, init, mkfs等等。 |
/srv |
srv可以视为『service』的缩写,是一些网络服务启动之后,这些服务所需要取用的数据目录。常见的服务例如WWW, FTP等等。举例来说,WWW服务器需要的网页数据就可以放置在/srv/www/里面。 |
/tmp |
这是让一般使用者或者是正在执行的程序暂时放置文件的地方。这个目录是任何人都能够存取的,所以你需要定期的清理一下。当然,重要数据不可放置在此目录啊!因为FHS甚至建议在开机时,应该要将/tmp下的数据都删除唷! |
5.3 绝对路径与相对路径
除了需要特别注意的FHS目录配置外,在文件名部分我们也要特别注意喔!因为根据档名写法的不同,也可将所谓的路径(path)定义为绝对路径(absolute)与相对路径(relative)。这两种文件名/路径的写法依据是这样的:
- 绝对路径:由根目录(/)开始写起的文件名或目录名称,例如 /home/dmtsai/.bashrc;
- 相对路径:相对于目前路径的文件名写法。例如 ./home/dmtsai 或 ../../home/dmtsai/ 等等。反正开头不是 /就属于相对路径的写法
举例来说,你目前在 /home这个目录下,如果想要进入 /var/log 这个目录时,可以怎么写呢?
- cd /var/log (absolute)
- cd ../var/log (relative)
因为你在 /home 底下,所以要回到上一层 (../) 之后,才能继续往 /var 来移动的!
特别注意下面几个特殊的目录:
- . :代表当前的目录,也可以使用 ./ 来表示。
- .. :代表上一层目录,也可以 ../ 来代表。
- - :代表前一个工作目录
- ~: 代表“目前使用者身份”所在的主文件夹
- ~account: 代表 account 这个使用者的主文件夹(account是个帐号名称)
例子:
[dmtsai@study ~]$ su - # 先切换身份成为 root 看看! [root@study ~]# cd [相对路径或绝对路径] # 最重要的就是目录的绝对路径与相对路径,还有一些特殊目录的符号啰! [root@study ~]# cd ~dmtsai # 代表去到 dmtsai 这个使用者的主文件夹,亦即 /home/dmtsai [root@study dmtsai]# cd ~ # 表示回到自己的主文件夹,亦即是 /root 这个目录 [root@study ~]# cd # 没有加上任何路径,也还是代表回到自己主文件夹的意思喔! [root@study ~]# cd .. # 表示去到目前的上层目录,亦即是 /root 的上层目录的意思; [root@study /]# cd - # 表示回到刚刚的那个目录,也就是 /root 啰~ [root@study ~]# cd /var/spool/mail # 这个就是绝对路径的写法!直接指定要去的完整路径名称! [root@study mail]# cd ../postfix # 这个是相对路径的写法,我们由/var/spool/mail 去到/var/spool/postfix 就这样写!
参考:
《鸟哥的Linux私房菜》
http://february30thcf.iteye.com/blog/1770406
http://www.cnblogs.com/duanbiaowu/p/5089418.html