Linux学习之文件权限

一、Linux的安全性

1、/etc/password文件

      该文件将用户的登录名匹配到对应到UID值,包含了一些与用户有关的信息。root用户帐户是Linux系统的管理员,固定分配给它的 UID是0。

2、/etc/shadow文件

该文件对Linux系统密码管理提供了更多的控制。只有root用户才能访问/etc/shadow文件。

3、添加新用户

查看所用Linux系统中创建新用户时的默认值:/usr/sbin/useradd -D

用默认系统参数创建一个新用户帐户,然后检查新用户的HOME目录。

例:

useradd -m test

ls -al /home/test

默认情况下,useradd命令不会创建HOME目录,但是-m命令行选项会使其创建HOME目录。

想要在创建用户时改变默认值或默认行为,可以使用命令行参数,如下表useradd命令行参数:

可以在-D选项后跟上一个指定的值来修改系统默认的新用户设置,这些参数如下表:

4、删除用户

用userdel命令删除已有用户帐户(加上-r参数,会删除用户的HOME目录以及邮件目录):

例:

/usr/sbin/userdel -r test

5、修改用户

(1)usermod

能用来修改/etc/password文件中的大部分字段。

(2)password和chpasswd

用password可以改变用户密码

例:passwd test

只用passwd命令会改变自己的密码,系统上的任何用户都能改自己的密码,但只有root用户才有权限改别人的密码。

-e选项能强制用户下次登录时修改密码。

chpasswd命令能从标准输入自动读取登录名和密码对列表,给密码加密,然后为用户帐户设置。也可以用重定向命令来将含有userid:passwd对的文件重定向给该命令。

例:chpasswd < users.txt

(3)chsh、chfn和chage

用来修改特定的帐户信息。chsh命令用来快速修改默认的用户登录shell。使用时必须用shell的全路径名作为参数。

例:chsh -s /bin/csh test

命令finger可以非常方便地查看Linux系统上的用户信息。

例:finger rich

命令chage用来帮助管理用户帐户的有效期。需要对每个值设置多个参数。chage命令参数如下:

二、使用Linux组

1、/etc/group文件

该文件包含系统上用到的每个组的信息。包含4个字段:组名、组密码、GID、属于改组的用户列表。

组密码允许非组内成员通过它临时成为该组成员。

2、创建新组

groupadd命令可在系统上创建新组。

例:/usr/sbin/groupadd shared

tail /etc/group

在创建新组时,默认没有用户被分配到该组。groupadd命令没有提供将用户添加到组中的选项,但可以用usermod命令来实现。

eg:/usr/sbin/usermod -G shared rich

/usr/sbin/usermod -G shared test

tail /etc/group

此时shared组有两个成员:rich和test。usermod命令的-G选项会把这个新组添加到该用户帐户的组列表里。

3、修改组

groupmod命令可以修改已有组的GID(加-g选项)或组名(加-n选项)。

eg:/usr/sbin/groupmod -n sharing shared

tail /etc/group

修改组名时,GID和组成员不会变,只有组名改变。由于所有的安全权限都是基于GID的,可以随意改变组名而不会影响文件的安全性。

三、文件权限

1、使用文件权限符

输出结果第一个字段描述文件和目录权限的编码。

第一个字符代表了对象的类型:

-代表文件

d代表目录

c代表字符型设备

b代表块设备

n代表网络设备

之后的3组三字符的编码,每一组定义了3种访问权限:

r代表对象是可读的

w代表对象是可写的

x代表对象是执行的

若没有某种权限,在该权限位会出现单破折线。这3组权限分别对应对象的3个安全级别:对象的属主、对象的属组、系统其他用户。

2、默认文件权限

umask命令用来设置所创建文件和目录的默认权限:

第一位0代表了意向特别的安全特性,叫作粘着位,后续介绍。

后边的3位002表示文件或目录对应的umask八进制值。Linux文件权限码如下图:

Linux系统默认的八进制的umask值是0022,而所创建的文件的八进制权限却是644。

这是因为umask值只是个掩码,要把umask值从对象的全权限值中减掉,对文件来说,全权限的值是666(所有用户都有读和写的权限);而对目录来说,则是777(所有用户都有读、写、执行权限)。所以文件开始的权限是666,减去umask值002之后,剩下的文件权限就成了644.

可以用umask命令为默认umask设置指定一个新值。

eg:umask 026

把umask值设为026后,默认的文件权限变成了640,因此新文件对组成员来说是只读的,而系统里的其他成员则没有任何权限。

umask值同样会作用在创建目录上。

四、改变安全性设置

1、改变权限

chmod命令用来改变文件和目录的安全性设置

例:chmod 760 newfile

2、改变所属关系

(1)chown命令用来改变文件的属性,格式:chown options owner[.group] file

例:chown wyy newfile

chown命令也支持同时改变文件的属主和属组.

例:chown dan.shared newfile

chown命令采用-R选项配合通配符可以递归地改变子目录和文件的所属关系。-h选项可以改变该文件的所有符号链接文件的所属关系。

注:只有root用户能够改变文件的属主。任何属主都可以改变文件的属组,但前提是属主必须是原属组和目标属组的成员。

(2)chgrp命令可以更改文件或目录的默认属组。

例:chgrp shared newfile

五、共享文件

Linux还为每个文件和目录存储了3个额外的信息位。

设置用户ID(SUID):当文件被用户使用时,程序会以文件属主的权限运行。

设置组ID(SGID):对文件来说,程序会以文件属组的权限运行;对于目录来说,目录中创建的新文件会以目录的默认属组作为默认属组。SGID位对文件共享非常重要,启用SGID位后,可以强制在一个共享目录下创建的新文件都属于该目录的属组,这个组也成为了每个用户的属组。

粘着位:进程结束后文件还驻留(粘着)在内存中。

例:

创建一个共享目录:

mkdir testdir

将目录的默认属组改为包含所有需要共享文件的用户的组(你必须是该组的成员):

chgrp shared testdir

将目录的SGID位置位,以保证目录中新建文件都用shared作为默认属组:

chmod g+s testdir

所有组成员都需把他们的umask值设置成文件对属组成员可写:

umask 002

此时,组成员就能到共享目录下创建新文件了。

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值