Linux文件权限

在理解权限前,要了解用户和组的概念。

用户

1./etc/passwd文件

Linux系统使用一个文件来将用户的登录名匹配到对应的UID值,即为/etc/passwd,它包含了一些与用户有关的信息。
root用户账户是Linux系统的管理员,固定分配给它的UID是0。并且,系统会为各种功能也创建账户,这些账户叫作系统账户。所有运行在后台的服务都需要用一个系统用户账户登录到Linux系统上。
绝大多数Linux系统都将用户密码保存在另一个单独的文件中(叫作shadow文件,位置在/etc/shadow)。只有特定的程序(比如登录程序)才能访问这个文件。
/etc/passwd是一个标准的文本文件。你可以用任何文本编辑器在/etc/password文件里直接手动进行用户管理(比如添加、修改或删除用户账户),但这样做极其危险,可能会影响读取进而导致用户无法登录。

/etc/shadow 文件

只有root用户才能访问/etc/shadow文件,文件为系统上的每个用户账户都保存了一条记录。使用shadow密码系统后,Linux系统可以更好地控制用户密码。它可以控制用户多久更改一次密码,以及什么时候禁用该用户账户,如果密码未更新的话。

添加新用户

向Linux系统添加新用户的主要工具是useradd,可以一次性创建新用户账户及设置用户HOME目录结构。useradd命令使用系统的默认值以及命令行参数来设置用户账户。系统默认值被设置在/etc/default/useradd文件中。可以使用加入了-D选项的useradd命令查看所用Linux系统中的这些默认值。
useradd命令允许管理员创建一份默认的HOME目录配置,然后把它作为创建新用户HOME目录的模板。这样就能自动在每个新用户的HOME目录里放置默认的系统文件。
在创建新用户时,如果你不在命令行中指定具体的值,useradd命令就会使用-D选项所显示的那些默认值。
默认情况下,useradd命令不会创建HOME目录,但是-m命令行选项会使其创建HOME目录。要想在创建用户时改变默认值或默认行为,可以使用命令行参数。
在这里插入图片描述
在这里插入图片描述
如果总需要修改某个值的话,最好还是修改一下系统的默认值。可以在-D选项后跟上一个指定的值来修改系统默认的新用户设置。
在这里插入图片描述
例如:
useradd -D -s /bin/tsch
useradd命令会将tsch shell作为所有新建用户的默认登录shell。

删除用户

userdel命令会只删除/etc/passwd文件中的用户信息,而不会删除系统中属于该账户的任何文件。
加上-r参数,userdel会删除用户的HOME目录以及邮件目录。

修改用户

在这里插入图片描述
1.usermod命令
部分参数与useradd的参数一样,额外实用的有-L锁定用户,无法登录,-U解锁用户。
2. passwd和chpasswd
passwd可以修改自己用户的密码,只有root权限才能更改别人的密码,-e参数可以强制用户下次登陆时更改密码。
chpasswd命令可以同时更改多个密码,从标准输入自动读取登录名和密码对(由冒号分割)列表,给密码加密,然后为用户账户设置。你也可以用重定向命令来将含有userid:passwd对的文件重定向给该命令。
3.chsh,chfn
chsh命令用来快速修改默认的用户登录shell。使用时必须用shell的全路径名作为参数,不能只用shell名。
chfn命令提供了在/etc/passwd文件的备注字段中存储信息的标准方法。chfn命令会将用于Unix的finger命令的信息存进备注字段,finger命令可以非常方便地查看Linux系统上的用户信息。
chage命令用来帮助管理用户账户的有效期。
在这里插入图片描述

组权限允许多个用户对系统中的对象(比如文件、目录或设备等)共享一组共用的权限。

/etc/group 文件

该文件包含系统上用到的每个组的信息。
在这里插入图片描述

/etc/group文件有4个字段:
组名
组密码
GID
属于该组的用户列表

组密码允许非组内成员通过它临时成为该组成员。使用usermod命令可以把用户添加到组中,添加前应该有组。

在列表中,有些组并没有列出用户。这并不是说这些组没有成员。当一个用户在/etc/passwd文件中指定某个组作为默认组时,用户账户不会作为该组成员再出现在/etc/group文件中。

将用户添加进组

使用groupadd命令添加组:
/usr/sbin/groupadd shared
添加了一个名为shared的组。
在创建新组时,默认没有用户被分配到该组。groupadd命令没有提供将用户添加到组中的选项,但可以用usermod命令来弥补这一点:
/usr/sbin/usermod -G shared rich
/usr/sbin/usermod -G shared test
shared组现在有两个成员:test和rich。usermod命令的-G选项会把这个新组添加到该用户账户的组列表里。

修改组

groupmod命令可以修改已有组的GID(加-g选项)或组名(加-n选项)。修改组名时,GID和组成员不会变,只有组名改变。由于所有的安全权限都是基于GID的,修改组名并不会改变安全性。

文件权限

权限简介:

输入ls -l命令后,可以看到文件包含权限的相关信息:

-rw-rw-r-- 1 rich rich 237 2010-09-18 13:58 myprog.c
drwxrwxr-x 2 rich rich 4096 2010-09-03 15:12 test1

输出结果的第一个字段就是描述文件和目录权限的编码。这个字段的第一个字符代表了对象的类型:

-代表文件
d代表目录
l代表链接
c代表字符型设备
b代表块设备
n代表网络设备

例1开头是‘-’,为文件,第二个开头是d,为目录。
之后有3组三字符的编码。每一组定义了3种访问权限:
1 r表示可读
2 w表示可写
3 x表示可执行
若没有指定的权限,则会显示-号。
这3组3字符编码,按顺序,每一组分别代表对象的属主,对象的属组,系统其他用户的权限。即前三个字母是属主的权限,中间三个字符是同组的权限,后三个是其它用户的权限。

默认文件权限(umask命令的使用)

touch命令用分配给我的用户账户的默认权限创建了这个文件。umask命令可以显示和设置这个默认权限,默认文件权限像一个模板,可以通过umask命令修改。

umask接收4位数字
第一位代表了一项特别的安全特性,叫作粘着位。
后面的3位表示文件或目录对应的umask八进制值。
八进制模式的安全性设置先获取这3个rwx权限的值,然后将其转换成3位二进制值,用一个八进制值来表示。在这个二进制表示中,每个位置代表一个二进制位。因此,如果读权限是唯一置位的权限,权限值就是r–,转换成二进制值就是100,代表的八进制值是4。
在这里插入图片描述
要把umask值从对象的全权限值中减掉。对文件来说,全权限的值是666(所有用户都有读和写的权限);而对目录来说,则是777(所有用户都有读、写、执行权限)。
例如文件一开始的权限是666,减去umask值022之后,剩下的文件权限就成了644。可以用umask命令为默认umask设置指定一个新值。

改变文件权限

chmod命令用来改变文件和目录的安全性设置。该命令的格式如下:
chmod options mode file
mode参数可以使用八进制模式,例如:
chmod 760 newfile;将会自动应用到指定的文件上,除此之外,也可使用符号模式。
符号模式使用3组字符来实现:
第一组字符包括:
u代表用户
g代表组
o代表其他
a代表上述所有
第二组字符,想在现有权限基础上增加权限(+),还是在现有权限基础上移除权限(-),或是将权限设置成后面的值(=)。
第三组字符代表具体的权限,除了rwx之外,还有一些额外的设置值。
在这里插入图片描述符号模式的使用例子:
chmod o+r newfile
chmod u-x newfile

更改从属关系

chown命令用来改变文件的属主:
格式:chown options owner[.group] file
例子:chown data file(将file属主改为data)

chown命令也支持同时改变文件的属主和属组:
chown dan.shared newfile
chgrp命令可以更改文件或目录的默认属组:
chgrp shared newfile

共享文件

Linux还为每个文件和目录存储了3个额外的信息位。
设置用户ID(SUID):当文件被用户使用时,程序会以文件属主的权限运行。
设置组ID(SGID):对文件来说,程序会以文件属组的权限运行;对目录来说,目录中
创建的新文件会以目录的默认属组作为默认属组。
粘着位:进程结束后文件还驻留(粘着)在内存中。
SGID可以强制在一个共享目录下创建的新文件都属于该目录的属组,这个组也就成为了每个用户的属组。SGID可通过chmod命令设置。它会加到标准3位八进制值之前(组成4位八进制值),或者在符号模式下用符号s。

八进制模式下:
在这里插入图片描述
首先,用mkdir命令来创建希望共享的目录。然后通过chgrp命令将目录的默认属组改为包含所有需要共享文件的用户的组(你必须是该组的成员)。最后,将目录的SGID位置位,以保证目录中新建文件都用shared作为默认属组。为了让这个环境能正常工作,所有组成员都需把他们的umask值设置成文件对属组成员可写。
做完了这些,组成员就能到共享目录下创建新文件了。跟期望的一样,新文件会沿用目录的属组,而不是用户的默认属组。现在shared组的所有用户都能访问这个文件了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值