文件权限管理

一、用户、用户组、其他人
1、用户
在Linux中,用户(User)是系统中能够登录并执行任务的实体。每个用户都有一个唯一的用户ID(UID)和用户名。用户在系统中的权限由它的UID和分配的组来决定。通常,一个用户就是一个实际的人,但也可能是一个系统服务或进程。
2、用户组
用户组(Group)是用户的集合,定义了一组用户的共同权限。每个用户都属于一个或多个组,每个组也有一个唯一的组ID(GID)。组的概念允许管理员轻松地管理权限,使得某些资源对一组用户开放。
主组(Primary Group):每个用户都有一个主组,通常在创建用户时指定。用户创建的文件和目录默认归属到其主组。
附加组(Secondary Group):用户还可以属于多个附加组,用来获得额外的权限。
3、其他人
其他人(Others)指的是既不属于文件/目录的所有者,也不属于文件/目录所属用户组的其他所有用户。其他人通常代表系统中绝大部分用户,因此为“其他人”设定的权限通常是最严格的。
二、文件属性
执行ls -al 命令在当前目录下查看文件或目录(ls为显示文件的文件名与相关属性,al则表示列出所有文件详细的权限与属性(包含隐藏文件,即文件名第一个字符为.的文件)。

可以看到一共有九栏,以打红框的一行为例:

1、第一栏drwxrwxr-x代表文件类型与权限
在这里插入图片描述

(1)第一个字符代表文件类型,是目录、文件、或链接文件等
d则是目录;
-则是文件;
l则是链接文件;
b则表示为设备文件里面可供存储的周边设备(可按块随机读写的设备);
c则表示为设备文件里面的串行端口设备,例如键盘、鼠标(一次性读取设备)。
(2)接下来以三个为一组,且均为【rwx】的三个参数的组合。其中r代表可读(read)、w代表可写(write)、x代表可执行(execute)。
第一组为文件拥有者可具备的权限,以图中案例为例,该文件的文件拥有者可读、可写、可执行该文件;
第二组为加入此用户组之账号的权限,及与该文件拥有者同用户组的其余用户权限;
第三组为非本人且没有加入本用户组的其他账号的权限。
2、第二栏表示有多少文件名链接到此节点(inode)
每个文件都会将它的权限与属性记录到系统文件的inode中,不过我们使用的目录树却是使用文件名来记录,因此每个文件名都会链接到一个inode,这个属性记录的就是有多少不同的文件名链接到相同的一个inode号码。比如硬链接时,多个文件链接到同一个inode,这种情况下,它们指向同一个文件。这些文件名共享相同的inode号和文件内容,但它们在目录树中可能位于不同的位置。
3、第三栏表示这个文件或目录的拥有者账号
4、第四栏表示这个文件的所属用户组
5、第五栏表示这个文件的容量大小,默认单位为Bytes
6、第六栏为这个文件的创建日期或是最近修改的日期
7、第七栏为这个文件名,比较特殊的是文件名是以.开头,比如.condarc则该文件为隐藏文件

三、如何修改文件权限
chmod命令
1、数字类型修改文件权限
rwx三种权限都各自对应一个数字

r:4
w:2
x:1

每一种身份(user,group,others)各自的三个权限数字是需要叠加的,例如当权限为drwxrwxr-x

owner = rwx = 4+2+1 = 7
group = rwx = 4+2+1 = 7
others = r-x = 4+0+1 = 5

chmod命令的使用

chmod [-R] xyz 文件或目录 
#[-R]:进行递归(recursive)修改,会连同子目录下的所有文件都被修改,可选
#xyz:即owner,group,others三者各自的权限的数值,为rwx属性数值的相加

如将文件.bashrc这个文件的权限改为-rwxrwxr--,则命令为

chmod 774 .bashrc

如果你不希望你的文件被别人看到,你可以将权限设置为-rwx------

chmod 700 filename

2、符号类型修改文件权限
三种身份的符号代表为

u:user
g:group
o:others
a:all

chmod命令使用:

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

要使所有人对某个文件有可执行权限

chmod a+x filename

要将一个文件权限设置为-rwxr-xr-x即:
user(u):rwx
group(g)和others(o):r-x

chmod u=rwx,go=rx filename

四、目录与文件的权限意义
1、文件权限
r(read):可读取此文件的实际内容,如读取文本文件的文字内容等;
w(write):可以编辑、新增或是修改该文件的内容,但不包含删除该文件,因为对于文件的rwx权限来说,主要针对文件的内容而言,而与文件名文件位置无关。
x(execute):该文件具有可以被系统执行的权限。与Windows系统区别:在Windows下面一个文件是否具有执行的能力是借由扩展名来判断的,例如:.exe、.bat、.com等,但在Linux下面,一个文件是否能被执行,则是借由是否具有x这个权限来决定的,跟文件名是没有绝对关系的。
2、目录权限
文件是存放实际数据的所在,而目录主要的内容是记录文件名列表,所以文件名与目录有强烈的关联。
r(read contents in directory):表示具有读取目录结构列表的权限,即可以通过ls命令将该目录的内容列表显示出来,查询该目录下的文件名数据。
w(modify contents of directory):表示具有改动该目录结构列表的权限:
· 建立新的文件与目录;
·删除已经存在的文件与目录(不论该文件自身的权限是什么)
·将已存在的文件或目录进行更名;
·移动该目录内的文件、目录位置。
x(access directory):代表用户能否进入该目录,是否可以用cd命令切换进该目录,即该目录能否成为工作目录(当前所在目录)。如果你在某个目录下不具有x权限,那么就无法切换到该目录下,也就无法执行该目录下的任何命令(如目录中的软件的调用),即使你具有该目录的r或w的权限。
五、关于执行文件路径的变量:PATH
一个疑问:为什么我可以在任何地方执行ls这个命令?而不用/usr/bin/ls(ls命令的绝对路径)调用?
解答:这是因为ls命令所在的目录/usr/bin 目录通常已经是被添加到 $PATH 环境变量中。当我们执行ls命令时,系统会依照PATH的设置去每个PATH定义的目录下查找文件名为ls的可执行文件,如果在PATH定义的目录中含有多个文件名为ls的可执行文件,那么先查找到的同名命令先被执行。
1、查找环境变量PATH定义的目录

echo $PATH
#echo:有"显示","打印"的意思
#$:代表后面接的是变量,所以$PATH才会显示出目前的PATH


可以看到,PATH定义的目录均用冒号(:)隔开,每个目录都有顺序之分。/usr/bin也被定义在PATH下,因此/usr/bin中的所有可执行文件均可直接调用(直接输入文件名)。我们通过ls -al /usr/bin命令查看/usr/bin中有哪些文件。
在这里插入图片描述

2、如何将新目录添加进环境变量PATH中,以/opt/myapp/bin目录为例
(1)临时添加

export PATH=$PATH:/opt/myapp/bin

该方法只会在当前终端会话中生效。当你关闭终端或打开新终端时,这个更改将不再有效,需要重新添加。
(2)永久添加(对于Bash用户)
1)用vim文本编辑器打开.bashrc文件

vim ~/.bashrc

2)进入编辑模式:打开文件后,按 G 键移动到文件末尾,然后按 o 键,在文件末尾新建一行并进入插入模式。
3)添加新目录到’$PATH’

export PATH=$PATH:/opt/myapp/bin

4)保存并退出vim:按 Esc 键退出插入模式,输入 :wq 然后按 Enter,保存文件并退出。
5)使更改立即生效

source ~/.bashrc

这样,新的目录就被永久添加到PATH中,并会在每次打开终端时生效。

*因此下载安装软件三部曲为:
1、下载安装包并移动到指定目录后解压安装;
2、为软件赋予可执行权限;
3、将目录添加到PATH环境变量中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值