Linux入门linux学习

Linux学习--No.6Linux用户与文件权限

2020-02-18  本文已影响0人  小贝学生信

之前摸索生信时,执行一个自己写的小脚本却失败了。后来经上网查找执行了chmod u+x lizi.sh就可以了。这里将学习文件权限的相关内容,就能理解那行代码是什么意思了。在学习Linux文件权限知识之前,还有必要了解下用户账户与组的概念。

要点一、Linux账户

Linux有三类用户。一是root用户账户,为Linux系统的管理员,UID为0;二是系统账户,为各种各样的功能而创建的不同的虚拟用户账户,UID为1~500;三是用户账户,为真正用户登录操作的账户,UID从500开始。

cat /etc/passwd
#该文件储存用户信息(之前学习shell类型时,了解过这个文件,这次系统学习一下)

举一用户账户例 ake:x:501:501:ake:/home/ake:/bin/bash ,以冒号为分隔,依次为

关于Linux用户的账户增减、信息修改操作就不介绍了,详见p127。
这里介绍一个常用的命令 usermod,可以修改/etc/passwd中的大部分字段,参数大部分与useradd参数相同p128,此外还有以下的参数。

要点二、组Group

(1)组的概念
组权限允许多个同组用户对系统中的对象(文件,目录等)共享一组共用的权限。一些Linux发行版(比如Ubuntu)会为每个用户创建一个单独的与用户账户同名的用户默认组,比如上面的ake的账户信息。
(2)/etc/group文件

cat /etc/group

举一例 ake:x:501: ,以冒号为分隔,依次为:

(3)组的操作

/user/sbin/groupadd shared    #创建名为shared的新组
tail /etc/group    #查看组列表,可以看出shared没有组成员
/user/sbin/usermod -G shared ake #将ake用户添加到shared组里
/user/sbin/usermod -G shared bei #将bei用户添加到shared组里
tail /etc/group    #ake、bei用户被添加到shared组里

如上, -G参数表示将该组(shared组)添加到用户(bei)的属组里(即同时在两个组里),不会影响原默认组(ake的501组);如果使用 -g参数 指定的组名会替换掉该账户的默认组,要小心。

/user/sbin/groupmod -n sharing shared  #将组名改为sharing

要点三、文件权限(划重点!)

1、文件权限符

ls -lh  #重点关注输出的第一段描述文件/目录权限的编码

例如 -rwxrw-r--
(1) 第一个字符表示对象类型

(2)剩下的九个字符:每三个按顺序分别对应属主、属组、其它用户的权限

ls -lh 也会给出属主、属组信息;根据/etc/group 可知道该属组的其它成员。

2、文件的默认权限

umask  #通过该命令查看默认权限设置
#返回值为 0022  

(1)首先要理解返回的四位数的后三位数(022),分别对应属主、属组、其它用户权限;
(2)然后要明白每种权限要由三个字符才能完整表达。所以其实那三位数022,均为八进制值,分别由3个二进制转换而来。即每一位八进制与固定的三位二进制值详细对应关系见p137,比如常见的有

(3)最后要知道umask为掩码计算的,并非直接是022权限。若为文件用全权限666-022=644;目录用全权限777-022=755,减掉后的值即为创建文件/目录的默认权限。

umask
touch test1
ls -lh test1
umask 026   #好像也可修改默认权限
touch test2
ls -lh test2
umask #观察有没有修改默认设置 (由于在家条案件限制,无法演练了)

3、修改对象属性

3.1修改权限

方法一:直接修改八进制值

ls -lh test1
chmod 760 test1  #将760的权限赋给test1文件,不用考虑掩码了
ls -lh test1

方法二:符号模式
即导语所述的方法;举一例就清楚了,如下。

chmod u+x test1  #给属主添加执行命令

关键内容是中间的三个字符:
第一个为操作对象: u 表属主、g 表属组、o 表其它、a 表所有;
第二个为如何修改:+ 表增加、- 表移除、= 表设置成后面的值;
第三个为操作权限:r、w、x 还有其它权限,没怎么理解,详见p139。

3.2修改属主、属组

(1)修改属主 chown命令

chown ake test1  #将test1的文件属主设置成ake
#注意格式,直接通过指定登录名/UID指定新属主

(2)修改属组 chgrp命令

chgrp shared test1   #将test1的属组修改为shared

4、共享文件

mkdir testdir
ls -lh    #查看目录属组
chgrp shared testdir #修改目录属组
ls -lh 
chmod g+s testdir   #启用SGID(详见p141),使目录里的新建文件都沿用目录的属组shared
ls -lh
umask 002  #所有组成员都应该增加默认属组权限
cd testdir
touch test2
ls -lh

参考自《Linux命令行与shell脚本编程大全》

上一篇 下一篇

猜你喜欢

热点阅读