您现在的位置是:首页> 操作系统> Linux

linux权限详解之深入理解

  • 857人已阅读
  • 时间:2018-11-13 11:07:12
  • 分类:Linux
  • 作者:祥哥

Linux 从ls命令开始

Linux学习的第一步就是掌握常用命令,Linux命令很多,以祥哥的理解,在真正的管理应用中使用到的命令大概也就只有一二百个,所以要把握学习的原则,掌握最常使用的命令和最常使用的选项即可。

祥哥还建议大家学习要掌握方法,不能死记硬背,不断练习,熟能生巧。毛主席教导我们说“实践是验证真理的唯一标准”;

不多说了,说正事了。ls意为“list directory contents",列出目录内容之意,可理解为ls即为list的缩写;-l意为”use a long listing format",长格式显示,通谷点说就是显示文件的详细信息,可理解为l即为long的缩写。通过man、info等帮助命令可获得此信息,英文不好的兄弟还可籍此学习(每天背上二三十个英文单词,不出三个月所有的Linux英文帮助文档相信应该都差不多可以看懂),通过这种方法记忆会容易的多。

在linux中使用ls -l命令查看文件的详细信息

-rw-r--r-- 1 root root 27974 Oct 27 2009 install.log

"-rw-r--r--"第一个字符表示文件类型,常见的文件类型包括:-表示二进制文件,d表示目录,l表示软链接文件,使用ls查看会发现有颜色标记不同的文件类型,如目录是蓝色、二进制文件是白色、软链接是青色...默认ls查看目录内容是没有颜色标记的,之所会显示这样的信息,因为在Linux中默认有一个别名定义:

# which ls

alias ls=`ls --color=tty`

       /bin/ls

甚至颜色还可以更改,比如你喜欢黄色想把目录改成黄色,只需编辑配置文件/etc/DIR_COLORS即可,把这个文件复制改名并保存存用户宿主目录中(cp /etc/DIR_COLORS ~/.dir_colors),就可以产生一个用户独立的配置,具体颜色如何更改只要看此文件的注释说明即可。笔者并不推荐用颜色的方式识别文件类型,一来大多UNIX默认无此设置;二来很多远程登录管理工具默认不支持颜色标记。

龙其要说明的是软链接文件,在Linux中,有两种链接文件,一种是软链接,类似Windows的桌面快捷方式,一个是硬链接,相当于复制+同步更新。

# ln -s install.log install.log.soft   # 生成install.log文件的软链接文件install.log.soft

# ln install.log install.log.hard   # 生成install.log文件的硬链接文件install.log.hard

-rw-rw-r-- 2 root admgroup 27941 May 20 07:42 install.log

-rw-rw-r-- 2 root admgroup 27941 May 20 07:42 install.log.hard

lrwxrwxrwx 1 root root        11 May 29 01:14 install.log.soft -> install.log

可以观察到软链接文件用l标记,权限皆为lrwxrwxrwx,会有->指向源文件,它很小,同Windows快捷方式一样,只是一个符号链接。而硬链接所有属性与原文件相同,且与原文件可以同步更新,最牛X的是原文件即便被干掉了,硬链接依然有效,而软链接当然就死翘翘了。知其然还要知其所以然,为什么硬链接可以这么牛XX,在此要先讲一个LINUX法则,这个法则说的通俗一点就是LINUX内核这家伙不认识字母,所以它在管理文件时文件要用一个数字标记,就是i节点;同样,用户要有一个UID,用户组要有一个GID、进程要有一个PID。ls -i可以查看到文件的i节点

# ls -i install.log install.log.soft install.log.hard

679394 install.log 679394 install.log.hard 679477 install.log.soft

在LINUX中每个文件必须有一个I节点,反之,一个i节点是不是必须对应一个文件,一般来说是的,但是硬链接就是个特例,大家会看到原文件和硬链接对映一个i节点,所以它们会同步更新,因为内核不管文件名是什么它只识别i节点,这就是硬链接和原文件可以同步更新的原因。

其它的九个字符,每三个字符对应一种用户类型,简单来说LINUX中基本权限管理,是每个文件把用户分成了三类:

第一类是所有者(u),也就是文件的创建者或拥有者

一般来说文件的创建者就是所有者,但有时会变更文件所有者,比如笔者原本在写一个防火墙脚 本,因出差,工作要转交给另一个同事,索性把文所有者改为他,他可以拥有对文件的全部操作权限,此时可以理解为他是文件的拥有者也就是所有者。文件的所有者只能有一个。

第二类是所属组(g),可以定义一组具有相同权限的用户地文件的操作权限。

文件所属组默认就是创建文件的所有者所在的缺省组,一个用户可以属于多个组,但是只有一个缺省组,就像不管你是多么大个的花心大萝卜,你只能有一个媳妇,这就是缺省的,缺省的只能有一个,而且在Linux中规定,没媳妇的萝卜是不允许存在的!每个用户必须有个缺省组,添加用户时如果没有指定所属组,系统会自动为你分配。理论上来说,一个管理做的很好的系统,应该每个用户都录属于至少一个组,不可能添加一个用户到系统是什么都不让他做的或者他不属于任何公司部门的,这是管理员要规划好的事情。

第三类其它人(o),如果不是所有者也不是所属组中的成员,那么就属于其它人。

linux中的用户分类比较简单,权限也简单的分为r可读、w可写、x可执行三种,ls-l的第三个部分“root root"分别对应着文件的所有者和所属组,所以此文件的权限为所有者root对文件有读写权限,而所属组root用户组和其他人只有读权限。

更深入理解rwx

做一个小实验,用root用户登录系统,然后执行

# mkdir /test   # 创建目录/test

# chmod 777 /test   # 目录权限修改为777即rwxrwxrwx

# touch /test/newfile   # 在/test目录下新建文件newfile

# ls -ld /test   # 查看/test目录详细信息

drwxrwxrwx 2 root root 4096 May 20 07:46 /test

# ls -l /test/newfile   # 查看/test/newfile文件详细信息

-rw-r--r-- 1 root root 0 May 20 07:46 /test/newfile

# su - zhangsan   # 切换用户身份为用户zhangsan

$ rm /test/newfile   # 删除/test/newfile文件

问题:普通用户zhangsan是否可以删除管理员root创建的newfile文件?

答案是:可以的,很多朋友觉得不可以,因为newfile文件是root创建且其他用户没有写权限,这其实是搞错了一个概念,认为删除一个文件的前提条件是对文件有写权限。要注意的是,rwx对于文件和目录的意义是截然不同的,这往往是新手容易忽视的地方,我们通过表格比较一下

代表字符
权限
对文件的含义
对目录的含义
r
可读
可以查看文件的内容
可以列出目录中的内容
w
可写
可以修改文件的内容
可以在目录中创建、删除文件
x
可执行
可以执行文件
可以进入目录

所以,在LINUX中,一个文件能否被删除,是取决于命令执行者对文件所在目录是否有写权限,而与文件本身权限无关,文件本身权限定文件内容查看或修改权限及是否可执行。

用户授权

授权用户zhangsan和lisi对/backup目录具有读写权限,是Linux中最基本的用户与权限管理,一般的做法是:把zhangsan和lisi用户加入到一个用户组中,然后改变/backup目录的所属组为此用户组,再将所属组权限设置为rw即可。

#groupadd admgroup #添加用户组admgroup
#groupadd -a zhangsan admgroup #将用户zhangsan加入到用户组admgroup
#groupadd -a lisi admgroup #将用户lisi加入到用户组admgroup
#grep admgroup /etc/group $查看admgroup 用户组信息
admgroup:x:502:zhangsan,lisi
#chgrp admgroup /backup #改变/backup目录的所属组为admgroup
#chmod g+w /backup   #给所属组添加w可写权限
#ls -ld /backup #查看/backup目录详细信息
drwxrwxr-x 2 root admgroup 4096 May 20 08:19 /backup

以上是授权用户对目录的访问权限,若授权用户对文件的控制权限,则要更复杂一点,除了对文件本身授权外,还要授权用户对文件所在目录具有可读性可执行权限。如祥哥使用的Red Hat Linux系统在安装后会在/root下生成安装日志文件,设置用户zhangsan 和 lisi对/root/install.log文件有读写权限,还要考虑用户对文件所在的目录/root要具有可读和可执行权限,否则依然无法获得文件的操作权限。


Top