您的位置:首页 > 运维架构 > Linux

【Linux学习笔记】Linux的文件权限与目录配置——笔记

2017-07-31 09:31 741 查看
一、用户和用户组

1、每个账号都可以有多个用户组的支持

2、在我们的Linux系统中,默认的情况下所有的系统上的账号与一般身份的用户,还有root的相关信息,都是记录在【/etc/passwd】这个文件内的。而个人的密码则是记录在【/etc/shadow】文件下的。

所有的组名都记录在【/etc/group】内。

二、Linux文件权限概念





[ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ][ 7 ]
[ 权限 ] [ 连接 ] [ 所有者 ] [ 用户组 ][ 文件容量 ] [ 修改日期 ][ 文件名 ]

1、ls -al

ls----"list" ,重点在显示文件的文件名与相关属性。

参数 -al ,表示列出所有的文件详细的权限与属性(包括隐藏文件,就是文件名第一个字符为“.”的文件)

2.具体权限



1)第一个字符代表这个文件是“目录、文件或链接文件等”

[d]---为目录

[-]---为文件

[l]---为连接文件(linkfile)

---表示设备文件里面的可供存储的接口设备

[c]---表示设备文件里面的串行端口设备,例如键盘、鼠标(一次性读取设备)
2)可以将这十位权限排序 1 2 3 4 5 6 7 8 9 0
3)第5列的文件容量,默认单位为B

[b]2.1 如何改变文件属性与权限

chgrp:改变文件所属用户组
chown :改变文件所有者
chmod :改变文件的权限

-R --->进行递归(recursive)的持续更改,也即连同子目录下的所有文件、目录。
1、chgrp (改用户组名)

要被改变的组名必须要在/etc/group文件内存在才可以。

chgrp [-R] dirname/filename ---- -R是用户组名

eg : chgrp users install.log

2、chown(改变文件所有者)

chown [-R] 账户名称 文件或目录

eg:1)chown bin install.log 把Intall.log的所有者改为bin这个账号

2)chown root:root inatll.log 把install.log的所有者与用户组改回root

3、chmod(改变权限)

1)数字类型改变权限
r---4
w---2
x---1

所以如果权限是-rwxrwx---

owner = rwx = 4+2+1= 7

group = rwx = 4+2+1 = 7

other = --- = 0+0+0 = 0

a)常见权限数据
文件变为可执行文件,并且不让其他人修改这个文件的话-----755 -rwxr-xr-x
有些文件不希望让别人看到 -rwxr----- 740

2)符号类型改变文件权限
user----u
group ---g
other---o

b)eg:设置一个文件的权限是 -rwxr-xr-x

user(u) : 具有可读、可写、可执行的权限

group(g)/other(o):具有可读、可执行的权限

chmod u=rwx,go=rx filename

c)设置全部人都有的权限

chmod a+w filename --- 添加全部人的写权限

chmod a-x filename --- 去除全部人执行权限
EG:假设有个账号名称是dmtsai ,他的主文件夹在/home/dmtsai,dmtsai对此文件具有rwx的权限,如果在此目录下有个名为the_root.data的文件,该文件的权限如下:

[-rwx------ 1 root root 4365 Sep 19 23:20 the_root,data]
请问dmtsai对此文件的权限是什么?可否删除该文件?
A:如上所示,由于dmtsai对此文件来说是“others”的身份,因此这个文件他无法读、写、也无法执行,也就是说他无法变动这个文件的内容。

但是由于这个文件在他的主文件夹下,他在此目录下具有rwx的完整权限,因此对于the_root.data这个文件来说,他是有”删除“权限的。

所以他可以删除root这个文件。
如果查出来的文件,能查出来,但是有一堆问号,那就是权限不够(没有X)

总结:

Linux的每个文件中,依据权限分为用户、用户组与其他人三种身份
用户组最有用的功能之一,就是当你在团队开发资源的时候,且每个账号都可以有多个用户组的支持。
利用ls -l显示的文件属性中,第一个字段是文件的权限,一共有10位,第一位是文件类型,接下来三个位一组共三组,为用户、用户组、其他人的权限,权限有r\w\x三种。
如果文件名之前多一个“.”,则代表这个文件为“隐藏文件”。
更改文件的用户组支持chrpg,修改文件的所有者用chown,修改文件的权限可以用chmod。
chmod修改权限的方法有两种,分别是符号法与数字法,数字法中r,w,x的分数为4,2,1
对文件来讲,权限的效能为:
r :可读取此文件的实际内容,如读取文本文件的文字内容等。
w:可以编辑、新增或者是修改该文件的内容(但不包含删除该文件)
x:该文件具有可以被系统执行的权限。

对目录来说,权限的属能为:

r:read contents in directory

w:modify contents of directory

x:access directory
要开放目录给任何人浏览时,应该至少也要给予r和x的权限,但w权限不可随便给予。
Linux文件名的限制为:单一文件或目录的最大容许文件名为255个字符;包含完整路径名称及目录(/)的完整文件名为4096个字符。
根据FHS的官方文件指出,其主要目的是希望让用户可以了解到已安装软甲通常放置于哪个目录下。
FHS制定出来的四种目录特色为shareable,unshareable,static,variable
FHS所定义的三层主目录为/、/var、/user
有五个目录不可与根目录放在不同的分区,分别是/etc、/bin、/lib、/dev、/sbin五个
/usr 不是 user 的缩写,是UNIX Software Resource的缩写,也是就是“UNIX操作系统软件资源”所放置的目录,而不是用户的数据。

习题:

1.请说明/bin与/user/bin目录所放置的执行文件有何不同之处?
A:/bin放置执行文件,但是比较特殊。/bin放置的是在单用户维护模式下还能够被操作的命令,在/bin下面的命令可以被root与一般账号所使用,主要有cat、chmod、chown、date、mv、mkdir、cp、bash等常用命令,与开机执行过程有关。
/user/bin,绝大部分的用户可使用的命令都放在这里,与开机执行过程无关。

2.说明/bin与/sbin目录所放置的执行文件有何不同之处?
A:/bin放置的是一般用户惯用的指令,至于/sbin则是系统管理员才会使用到的指令。不过/bin与/sbin都与开机、单人维护模式有关。
更多的软件执行命令会被放置到/usr/bin及/usr/sbin底下。

/bin,主要用于放置一些系统必备的二进制执行文件。
/usr/bin,主要放置一些应用软件工具的必备的二进制执行文件。
/sbin,主要放置系统管理员专用的二进制执行文件,用于系统管理。
/usr/sbin,主要放置一些网络管理的二进制执行文件。
以上目录中,s代表super user,bin代表binary。
/bin : system installed user commands
/usr/bin: user commands for applications
/usr/sbin: super user commands for applications

3.那几个目录不能够与根目录(/)放置到不同的分区?请说明该目录所放置的数据是什么?
A:1)/etc :配置文件
2)/bin:重要执行文件
3)/dev:所需要的设备文件
4)/lib:执行文件所需的函数库与内核所需的模块
5)/sbin:重要的系统执行文件

4.为什么根目录要小一点比较好?在分区的时候,为什么/home、/user、/var、/tmp最好与根目录放到不同的分区?试说明可能的原因有哪些?(由目录放置数据的内容谈起)
A:根目录是整个系统最重要的一个目录,因为不但所有的目录都是由根目录衍生出来的,同时根目录也与开机、还原、系统修复等操作有关。根目录非常重要,所以在FHS的要求方面,希望根目录所在分区应该越小越好,且应用程序所安装的软件最好不要与根目录放在同一个分区内,保持根目录越小越好。这样不仅性能较好,根目录所在的文件系统也不容易发生问题。
根据FHS的说明,越小的/可以放置的较为集中且读取频率较不频繁,可避免较多的错误。 至于/home(用户主目录), /usr(软件资源), /var(变动幅度较大的数据),
/tmp(系统暂存,临时数据)中, 因为数据量较大或者是读取频率较高,或者是不明的使用情况较多,因此建议不要与根目录放在一起, 也会有助于系统安全。

5.早期的UNIX系统文件名最多允许14个字符,而新的UNIX与Linux系统中,文件名最多可以容许几个字符?
A:单一文件或目录的最大容许文件名为255个字符
包含完整路径名称及目录(/)的完整文件名为4096个字符。

6.当一个文件权限为-rwxrwxrwx,请问这个文件的意义是什么?
A:这是一个普通文件,并且对于所有者,用户组,和其他人三个身份来说,都拥有可读,可写,可执行的权限。

7.将一个文件的权限改为-rwxr-xr--,请问该如何执行命令?
A:#chmod 744 filename
#chmod u=rwx,g=rx,o=r filename

8.如果我需要更改一个文件的所有者与用户组,该用什么命令?
A: #chown onwer:group filename

9.下面的目录都主要放置什么数据?
/etc、/etc/inid、/boot、/user/bin、/bin、/usr/sbin、/sbin、/dev、/var/log
A:1)/etc:系统主要的配置文件
2)/etc/inid:服务的默认启动脚本
3)/boot:内核文件与开机配置文件
4)/user/bin:绝大部分用户可以使用的命令
5)/bin:放置执行文件,但是是在单用户维护模式下还能够被操作的命令
6)/usr/sbin:非系统正常运行所需要的系统命令
7)/sbin: 用来设置系统环境的命令
8)/dev:接口与设备以文件的形式存在与这个目录中
9)/var/log:登录文件

10.如果一个文件的文件名开头为“.”,例如.bashrc这个文件,代表什么?另外如何显示出这个文件名与它的相关属性?
A:表示是隐藏文件。在终端输入ls -al /...(相应路径)/.bashrc


【学习整理自《鸟哥的Linux私房菜》】
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: