[Linux]第1周.day4 基本权限操作

个人主页:哈维数据
QQ:1876815991
邮箱:[email protected]

一、文件权限

1.文件权限位置信息

第一位不是权限位,是文件类型标识位。
rwx分别代表了读、写、执行。
三个rwx分别代表了,用户,用户组,其他人。
而最后一位的.表示这个文件是受SElinux保护的(小细节)

1 2 3 4
d rwx rwx rwx
标识区 user权限 group权限 other权限

2.标识位

-|普通文件
d|目录文件
l|软链接文件
s|套接字文件 一种特殊设备文件,支持socket访问的服务会出现
c|字符设备文件,一般来讲,鼠标键盘这种输入设备都是字符设备文件
b|块设备文件,存储设备一般都是块设备文件
p|管道符文件,一般很少见

二、修改权限命令

1.修改权限 chmod

root@localhost ~]# chmod [选项] [权限模式] [文件名]
命令名称:chmod
英文原意:change file mode bits
所在路径:/bin/chmod
执行权限:所有用户
功能描述:修改文件的权限模式

选项 作用
-R 递归设置权限,也就是子目录的所有文件设定权限

修改权限的具体案例:
【单独使用】
chmod u+x abc //给abc的user添加执行权限
chmod g+r abc //给abc的group添加读权限
chmod o+w abc //给abc的other添加写权限
【组合使用】
chmod o+w,u+x abc //给abc的other添加写权限和执行权限
这样操作的坏处是需要知道原本的权限是什么,所以可以使用=来进行设置权限,不过这些方式都比较复杂。所以我们会使用数字赋权法。

2.数字权限

权限 数字对应
4
2
执行 1

数字权限的具体案例
chmod 775 abc//user为rwx,group为rwx,其他人为rw-

3.常用的数字权限

644:文件基本权限
755:文件的执行权限和目录的基本权限
777:最大权限,实际生产服务器中尽量避免(尤其是网站,除了系统自带的777,实际的服务器不要赋予777权限),此类现象容易出现安全隐患,极大可能出现在网站上。
在正常情况下,所有者>所属组>其他人。

4.chown修改文件所有者

root@localhost ~]# chown [选项] 所有者:所属组 [文件名]
命令名称:chown
英文原意:change file owner and group
所在路径:/bin/chown
执行权限:所有用户
功能描述:修改文件和目录的所有者和所属组

选项 作用
-R 递归设置权限,也就是子目录的所有文件设定权限

注:
普通用户不能修改文件所有者,哪怕自己是这个文件所有者也不行。
普通用户可以修改所有者是自己的文件的权限

5.chgrp修改文件所属组

root@localhost ~]# chgrp [选项] 所属组 [文件名]
命令名称:chgrp
英文原意:change group ownership
所在路径:/bin/chgrp
执行权限:所有用户
功能描述:修改文件和目录的所属组

选项 作用
-R 递归设置权限,也就是子目录的所有文件设定权限

一般来讲,为了方便我们操作,我们都会选择使用chown对用户和用户组进行更改

三、添加用户和用户组

1.添加用户

root@localhost ~]# useradd [用户名] //添加新用户,添加用户就会生成同名的出生组,随着用户添加自动生成。
root@localhost ~]# passwd [用户名] //给用户改登陆密码

2.新建用户组

root@localhost ~]# groupadd [用户名] //新建用户组

用户类型 UID范围
普通用户 UID > 500
root UID=0
系统用户 UID< 200

注意事项:

  • 在不设置密码的时候新创建的用户一般是不能正常使用的。
  • 普通用户在设置自己的密码的时候,必须复合复杂性要求,而root则不用,但是不代表可以修改的较为简单。
  • 一般来讲,生产环境中的root用户都是掌握在高级的工程师手中,多数的普通工程师可以操作的都是普通用户,这样做其实从根本上提高了安全性,是一个较好的安全模式。权限是Linux中最重要的一部分,同样也是生产环境中最需要注意的一部分,权限与生产安全密不可分。

3.权限对文件的作用

虽然Linux中只有读写执行三个权限,但是对目录和文件是不同的。

权限 作用
可以读取文件的数据,可以对文件执行cat,more,less等文件查看命令
可以修改文件中的数据,比如vi,echo重定向等。但是:对文件有写权限,并不代表可以删除文件本身的,只能修改文件中的数据。如果想要删除文件,则需要对文件的上级目录有写权限,原因是因为I节点的存放的文件名信息在上级目录中,权限控制的是block,我们对文件有权限代表我们只能修改这个文件的block内容,而文件名确在上级目录的block中。所以我们只有对上级目录有写的权限,才能删除文件。
执行 对文件有执行权限,只代表有执行权限,到底能不能正确执行,不仅仅是需要执行权限同样还要看文件中的代码是不是正确的语言代码。对文件来讲,执行权限是最高权限。所以给文件要小心给执行权限。

4.权限对目录的作用

权限 作用
可以查看目录下的内容,如果对目录有读,就可以执行ls等命令
可以修改目录下的数据,能对目录新建、删除、复制、剪切文件或者子目录。比如可以执行touch、rm、cp、mv等命令,对目录来说,写是最高权限,所以一定要小心给写权限
执行 目录是不能执行的,所以给目录执行权限,代表可以进入目录,也就是可以执行cd命令,进入目录,对目录来讲,执行权限的危险远远不如写权限的危险。

在我们实际操作中真的需要目录的可用权限其实只有以下几个
0:任何权限都没有
5:基本的目录浏览和进入权限(常用)
7:完全权限
这些所有权限对root是没有任何限制的,root是凌驾于权限之上的账户存在,这也侧面又一次强调了root用户的风险度,也侧面解释了为什么root用户都被严格管控。

四、UMSK权限

1.umask默认权限(做了解即可)

所有文件都需要有默认权限,我们需要了解为什么新建文件都有权限。这个东西不需要我们更改,但是我们需要知道原理
root@localhost ~]# umask //查询当前系统的umask权限

2.1umask权限的计算方法

我们需要先了解一下新建文件和目录默认的最大权限
对文件来讲,新建文件的默认最大权限是666,没有执行权限,以为执行权限对文件来讲,过于危险,不能再新建文件的收默认赋予,而是必须通过用户手工赋予。

而对目录来讲,新建目录的默认权限最大是777。对目录而言执行权x仅仅代表可以进入到这个目录中去,所以即使新建目录的时候默认给予执行权限,也不会有什么风险。
umask的默认值,并不是反向进行运算就的出来的。是采用二进制进行逻辑与运算和逻辑非的联合运算才可以的到正确的新建文件和目录的默认权限,这种方式对计算机特别友好,不需要多少运算资源。对人来讲这种方式就不好理解了。
如果我们真的需要进行修改,那么我们可以使用字母减的方式来进行运算。

rw-rw-rw- 减去 -----w--w 等于 rw-r--r--

计算过程:

  1. 文件的最大权限是666
  2. 666-022等于的结果为644
  3. 目录的最大权限是777
  4. 777-022等于的结果为755

这样只是方便我们理解。
注意:umask的默认权限的计算绝不是数字直接相减!!!!
如果需要修改umask
可以再/etc/profile(环境变量文件)进行修改。但是我们在使用的时候没有必要对umask值进行更改。

你可能感兴趣的:([Linux]第1周.day4 基本权限操作)