欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Bash Shell--权限管理

程序员文章站 2022-03-06 15:58:33
Bash Shell–Linux文件的权限文件的权限用户权限通过创建用户时分的用户ID(User ID,通常缩写为UID)来跟踪的。登陆系统时使用的是登录名。Linux系统会为各种各样的功能创建不同的用户账户,而这些账户并不是真的用户。这些账户叫作系统账户,是系统上运行的各种服务进程访问资源用的特殊账户。所有运行在后台的服务都需要用一个系统用户账户登录到Linux系统上。添加新用户用来向Linux系统添加新用户的主要工具是useradd。从系统中删除用户可以用userdel命令。默认情...

Bash Shell–Linux文件的权限

文件的权限

用户权限通过创建用户时分的用户ID(User ID,通常缩写为UID)来跟踪的。
登陆系统时使用的是登录名。
Linux系统会为各种各样的功能创建不同的用户账户,而这些账户并不是真的用户。
这些账户叫作系统账户,是系统上运行的各种服务进程访问资源用的特殊账户。
所有运行在后台的服务都需要用一个系统用户账户登录到Linux系统上。

添加新用户

用来向Linux系统添加新用户的主要工具是useradd。
从系统中删除用户可以用userdel命令。
默认情况下, userdel命令会只删除/etc/passwd文件中的用户信息,而不会删除系统中属于该账户的任何文件。
如果加上-r参数, userdel会删除用户的HOME目录以及邮件目录。

文件权限

Bash Shell--权限管理

八进制模式的值664代表属主和属组成员都有读取和写入的权限,而其他用户都只有读取权限。
umask值只是个掩码。它会屏蔽掉不想授予该安全级别的权限。
要把umask值从对象的全权限值中减掉。
对文件来说,全权限的值是666(所有用户都有读和写的权限);
而对目录来说,则是777(所有用户都有读、写、执行权限)。
文件一开始的权限是666, 减去umask值022之后, 剩下的文件权限就成了644。
由于目录的默认权限是777, umask作用后生成的目录权限不同于生成的文件权限。
 umask值026会从777中减去,留下来751作为目录权限设置。

chmod命令

用来改变文件和目录的安全性设置。

Bash Shell--权限管理

符号模式的权限

Bash Shell--权限管理

第一组字符定义了权限作用的对象:
 u代表用户
 g代表组
 o代表其他
 a代表上述所有
下一步,后面跟着的符号表示你是想在
现有权限基础上增加权限( +),
还是在现有权限基础上移除权限( .),
或是将权限设置成后面的值( =)。
第三个符号代表作用到设置上的权限。
 X:如果对象是目录或者它已有执行权限,赋予执行权限。
 s:运行时重新设置UID或GID。
 t:保留文件或目录。
 u:将权限设置为跟属主一样。
 g:将权限设置为跟属组一样。
 o:将权限设置为跟其他用户一样。

chown命令

用来改变文件的属主。

Bash Shell--权限管理
Bash Shell--权限管理

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

Bash Shell--权限管理

chgrp命令

可以更改文件或目录的默认属组。

Bash Shell--权限管理

/usr/sbin/groupadd shared 在系统上创建新组shared
/usr/sbin/usermod -G shared rich 将用户rich添加到组shared
/usr/sbin/groupmod -n sharing shared 修改组shared名为sharing
可以修改已有组的GID(加-g选项)或组名(加-n选项)。

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

Bash Shell--权限管理
Bash Shell--权限管理

mkdir命令来创建共享的目录。
chgrp命令将目录的默认属组更改。
最后,将目录的SGID位置位,以保证目录中新建文件都用shared作为默认属组。
为了让这个环境能正常工作,所有组成员都需把他们的umask值设置成文件对属组成员可写。
在前面的例子中, umask改成了002,所以文件对属组是可写的。
做完了这些,组成员就能到共享目录下创建新文件了。
跟期望的一样,新文件会沿用目录的属组,而不是用户的默认属组。现在shared组的所有用户都能访问这个文件了。

总结

本章讨论了管理Linux系统安全性的一些命令行命令。
Linux通过用户ID和组ID来限制对文件、目录以及设备的访问。
useradd命令用来创建新的用户账户, 
groupadd命令用来创建新的组账户。
修改已有用户账户,我们用usermod命令。类似的groupmod命令用来修改组账户信息。
每个文件都有三个安全等级:文件的属主、能够访问文件的默认属组以及系统上的其他用户。
每个安全等级通过三个访问权限位来定义:
读取、写入以及执行,
对应于符号rwx。
如果某种权限被拒绝,权限对应的符号会用单破折线代替(比如r–代表只读权限)。
chmod命令用来修改文件和目录的安全设置。
只有文件的属主才能改变文件或目录的权限。
不过root用户可以改变系统上任意文件或目录的安全设置。
chown和chgrp命令可用来改变文件默认的属主和属组。
设置组ID位来创建共享目录。 
SGID位会强制某个目录下创建的新文件或目录都沿用该父目录的属组,而不是创建这些文件的用户的属组。
这可以为系统的用户之间共享文件提供一个简便的途径。

参考

1. https://blog.csdn.net/qq_44710568/article/details/105013302

本文地址:https://blog.csdn.net/x13262608581/article/details/107621770

相关标签: Dev-Env--Linux