文件权限与目录配置1

使用者与群组

Linux最优秀的地方之一就在于他的多用户多任务环境。而为了让各个使用者具有较保密的文件数据,因此文件的权限管理就变的很重要了。Linux一般将文件可存取的身份分为三个类别,分别是owner/group/others,且三种身份各有read/write/execute等权限。

Linux使用者身份与群组记录的文件:
在我们Linux系统当中,默认的情况下,所有的系统上的帐号与一般身份使用者,还有那个root的相关信息, 都是记录在/etc/passwd这个文件内的。至于个人的密码则是记录在/etc/shadow这个文件下。 此外,Linux所有的群组名称都纪录在/etc/group内!这三个文件可以说是Linux系统里面帐号、密码、群组信息的集中地啰!不要随便删除这三个文件啊!

文件权限概念

下面内容建议切换到root账号进行操作:

[withong@withong ~]$ su - root
密码:
上一次登录:五 2月 21 17:22:53 CST 2020pts/0 上
[root@withong ~]# 

查看所有文件(包括隐藏):

ls -al

在这里插入图片描述

[1][2][3][4][5][6][7]   <=上面七个字段的意思
[权限][链接][拥有者][群组][文件大小][修改日期][文件名]

[1] 代表这个文件的类型与权限(共十个字符)

  • 第一个字符:文件的类型
    在这里插入图片描述
  • 接下来的九个字符中,以三个为一组,且均为“rwx” 的三个参数的组合;[r]代表可读(read)、[w]代表可写(write)、[x]代表可执行(execute); 没有权限,就会出现减号[-]
    在这里插入图片描述

[2]表示有多少文件名链接到此节点(i-node)

[3]表示这个文件(或目录)的“拥有者帐号”

[4]表示这个文件的所属群组

[5]为这个文件的容量大小,默认单位为Bytes

[6]为这个文件的创建日期或者是最近的修改日期

[7]为这个文件的文件名(文件名前多一个点’.'则为隐藏文件)

思考题一
假设test1, test2, test3同属于testgroup这个群组,如果有下面的两个文件,请说明两个
文件的拥有者与其相关的权限为何?

-rw-r--r--	1  root	  root      238	  Jun 18  17:22	 test.txt
-rwxr-xr--	1  test1  testgroup	5238  Jun 19  10:25  ping_tsai

答:

  • 文件test.txt的拥有者为root,所属群组为root。至于权限方面则只有root这个帐号可以存取此文件,其他人则仅能读此文件;
  • 另一个文件ping_tsai的拥有者为test1,而所属群组为testgroup。
    • test1 可以针对此文件具有可读可写可执行的权力;
    • 而同群组的test2, test3两个人与test1同样是testgroup的群组帐号,则仅可读可执但不能写(亦即不能修改);
    • 至于没有加入testgroup这一个群组的其他人则仅可以读,不能写也不能执行!

思考题二
承上一题如果我的目录为下面的样式,请问testgroup这个群组的成员与其他人(others)是否可以进入本目录?

drwxr-xr--	1  test1  testgroup	5238   Jun 19	10:25	groups/

答:

  • 文件拥有者test1[rwx]可以在本目录中进行任何工作;
  • 而testgroup这个群组[r-x]的帐号,例如test2, test3亦可以进入本目录进行工作,但是不能在本目录下进行写入的动作;
  • 至于other的权限中[r–]虽然有r ,但是由于没有x的权限,因此others的使用者,并不能进入此目录!

改变文件属性与权限

常用指令:

  • chgrp :改变文件所属群组
  • chown :改变文件拥有者
  • chmod :改变文件的权限, SUID, SGID, SBIT等等的特性

chgrp:change group 缩写
注意:被改变的群组名称必须要在/etc/group文件内存在才行,否则就会显示错误!

先man下:
在这里插入图片描述
在/etc/group里面已经存在一个名为users的群组, 但是testing这个群组名字就不存在/etc/group当中了,此时改变群组成为users与testing分别会有什么现象发生呢?

[root@study	~]#	chgrp	users	initial-setup-ks.cfg
[root@study	~]#	ls	-l
-rw-r--r--.	1	root	users	1864	May		4	18:01	initial-setup-ks.cfg
[root@study	~]#	chgrp	testing	initial-setup-ks.cfg
chgrp:	invalid	group:		`testing'	<==	发生错误讯息啰~找不到这个群组名~

文件的群组被改成users了,但是要改成testing的时候, 就会发生错误

chown:change owner缩写
注意:使用者必须是已经存在系统中的帐号,也就是在/etc/passwd这个文件中有纪录的使用者名称才能改变

范例:将	initial-setup-ks.cfg	的拥有者改为bin这个帐号:
[root@study	~]#	chown	bin	initial-setup-ks.cfg
[root@study	~]#	ls	-l
-rw-r--r--.	1	bin		users	1864	May		4	18:01	initial-setup-ks.cfg
范例:将	initial-setup-ks.cfg	的拥有者与群组改回为root:
[root@study	~]#	chown	root:root	initial-setup-ks.cfg
[root@study	~]#	ls	-l
-rw-r--r--.	1	root	root	1864	May		4	18:01	initial-setup-ks.cfg

此外,chown也能单纯的修改所属群组呢! 例如“chown .sshd initial-setup-ks.cfg”就是修改群组


chown或chgrp的使用示例:

你今天要将Linux.txt这个文件拷贝成为Linux_test.txt文件名,且是要给root这个人,你可以这样做:

[root @withong 桌面]$ cp Linux.txt Linux_test.txt
[root @withong 桌面]$ ls -al Linux*
-rw-rw-r--. 1 root root 38 2月  23 15:21 Linux_test.txt
-rw-rw-r--. 1 root root 38 9月  14 19:24 Linux.txt

由于复制行为(cp)会复制执行者的属性与权限,所以!怎么办?.Linux_test.txt还是属于root所拥有, 如此一来,即使你将文件拿给withong这个使用者了,那他仍然无法修改的(看属性/权限就知道了吧), 所以你就必须要将这个文件的拥有者与群组修改一下啰!

chmod:更改文件权限
权限的设置方法有两种,分别可以使用数字或者是符号来进行权限的变更

  • 数字类型改变文件权限
    权限的分数对照表
    在这里插入图片描述
    每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: [-rwxrwx—] 分数则是:
    在这里插入图片描述
    所以等一下我们设置权限的变更时,该文件的权限数字就是770啦!变更权限的指令chmod的语法是这样的:

    [root@withong ~]#	chmod	[-R]	xyz	文件或目录
    选项与参数:
    xyz	:	就是刚刚提到的数字类型的权限属性,为	rwx	属性数值的相加。
    -R	:	进行递回(recursive)的持续变更,亦即连同次目录下的所有文件都会变更
    

    在实际的系统运行中最常发生的一个问题就是,常常我们以vim编辑一个shell的文字批处理文件后,他的权限通常是 -rw-rw-r-- 也就是664,如果要将该文件变成可可执行文件,并且不要让其他人更改,那么就需要-rwxr-xr-x这样的权限,此时就得要下达:“chmod 755 test.sh”的指令啰!

  • 符号类型改变文件权限
    借由u, g, o来代表三种身份的权限!此外,a则代表all亦即全部的身份!那么读写的权限就可以写成r, w, x,也就是可以使用下面的方式来看:

    |	chmod	|	u	g	o	a	|	+(加入)	-(除去)	=(设置)	|	r	w	x	|	文件或目录	|
    

    假如我们要“设置”一个文件的权限成为“-rwxr-xr-x”时,基本上就是:

     [root@study	~]#	chmod		u=rwx,go=rx		.bashrc
     #注意喔!那个	u=rwx,go=rx	是连在一起的,中间并没有任何空白字符!
     [root@study	~]#	ls	-al	.bashrc
     -rwxr-xr-x.	1	root	root	176	Dec	29		2013	.bashrc
    

    如果我不知道原先的文件属性,而我只想要增加.bashrc这个文件的每个人均可写入的权限, 那么我就可以使用:

    [root@study	~]#	ls	-al	.bashrc
    -rwxr-xr-x.	1	root	root	176	Dec	29		2013	.bashrc
    [root@study	~]#	chmod  a+w	.bashrc
    [root@study	~]#	ls	-al	.bashrc
    -rwxrwxrwx.	1	root	root	176	Dec	29		2013	.bashrc
    

    如果是要将权限去掉而不更动其他已存在的权限呢?例如要拿掉全部人的可执行权限,则:

    [root@study	~]#	chmod		a-x		.bashrc
    [root@study	~]#	ls	-al	.bashrc
    -rw-rw-rw-.	1	root	root	176	Dec	29		2013	.bashrc
    [root@study	~]#	chmod	644	.bashrc		#	测试完毕得要改回来喔!
    

目录与文件之权限意义

现在假设“文件是一堆文件数据夹”,所以你可能可以在上面写/改一些数据。而“目录是一堆抽屉”,因此你可以将数据夹分类放置到不同的抽屉去。 因此抽屉最大的目的是拿出/放入数据夹喔!现在让我们汇整一下数据:
在这里插入图片描述
对一般文件来说,rwx 主要是针对“文件的内容”来设计权限,对目录来说,rwx则是针对“目录内的文件名列表”来设计权限。

例题 有个目录的权限如下所示:

drwxr--r--	3	root	root	4096	Jun	25	08:35	.ssh

系统有个帐号名称为vbird,这个帐号并没有支持root群组,请问vbird对这个目录有何权限?是否可切换到此目录中?
答:
vbird对此目录仅具有r的权限,因此vbird可以查询此目录下的文件名列表。因为vbird不具有x的权限,亦即vbird没有这个抽屉的钥匙啦!因此vbird并不能切换到此目录内!【能不能进入某一个目录,只与该目录的x权限有关啦!】

例题 假设有个帐号名称为dmtsai,他的主文件夹在/home/dmtsai/,dmtsai对此目录具有[rwx]的权限。若在此目录下有个名为the_root.data的文件,该文件的权限如下:

-rwx------	1   root  root  4365  Sep 19 23:20	  the_root.data

请问dmtsai对此文件的权限为何?可否删除此文件?
答:
由于dmtsai对此文件来说是“others”的身份,因此这个文件他无法读、无法编辑也无法执行, 也就是说,他无法变动这个文件的内容。但是由于这个文件在他的主文件夹下, 他在此目录下具有rwx的完整权限,因此对于the_root.data这个“文件名”来说,他是能够“删除”的!

注意:w也具有相当重要的权限,因为他可以让使用者删除、更新、新建文件或目录,是个很重要的参数

使用者操作功能与权限案例
假设两个文件名,分别是下面这样:

  • /dir1/file
  • /dir2

假设你现在在系统使用dmtsai这个帐号,那么这个帐号针对 /dir1,/dir1/file1,/dir2 这三个文件名来说,分别需要“哪些最小的权限”才能达成各项任务?
在这里插入图片描述上面很多动作中,你只要具有x即可(打开摸黑也能拿到呀)!r是非必备的(抽屉里的灯光)!只是,没有r的话,使用[tab] 时,他就无法自动帮你补齐文件名了!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值