《Linux命令行与shell脚本编程大全》 第七章理解Linux文件权限
Linux沿用了Unix文件权限的方法,允许用户和组根据每个文件和目录的安全性设置来访问文件。
用户权限通过创建用户时分配的用户ID(UID)来跟踪的。每个用户有唯一的ID,但是登录时用的不是UID,而是登录名。
7.1.1 /etc/passwd 文件
这个文件将用户的登录名匹配到对应的UID中,还包含了一些与用户相关的信息。
root用户账户是Linux系统的管理员,UID是0.
有些账户是系统账户:系统上运行的各种服务进程访问资源用的特殊账户。
所有运行在后台的服务都需要用一个系统用户账户登录到linux系统上。
UID 500 以下是系统预留给系统账户的。
/etc/passwd 文件包含的信息有:登录用户名,密码,UID,组ID(GID),文本描述,HOME目录的位置,默认的shell。
7.1.2 /etc/shadow 文件
对Linux系统密码管理提供了更多的控制。只有root才能访问
为每个用户账户都保存了一条记录。
这样Linux系统可以更好的控制用户密码。
7.1.3 添加新用户
useradd,可以一次性创建新用户账户及设置用户HOME目录结构。
可以查看useradd命令用到的一些默认值, -D。
/etc/skel 目录很有意思,创建用户时会将这些默认文件复制到你创建的每个用户的HOME目录中。
例子:
$user add -m test // 默认情况下不会创建HOME目录,除非加了 -m。
// 创建了HOME目录,并将/etc/skel 复制进去了
useradd还可以接一些参数。
还可以更改默认值的参数。
7.1.4 删除用户
默认会删除/etc/passwd文件中的用户信息。不会删除属于该账户的任何文件。
加上-r 会删除用户的HOME目录和邮件目录,
userdel -r test
7.1.5 修改用户
修改用户账户信息的
usermod: 修改用户账户字段。可以加其他选项
passwd和chpasswd,改变用户密码
chpwsswd能从标准输入自动读取登录密码和密码对列表。
chsh:修改默认的用户登录shell
chfn:
chage:帮助管理用户账户的有效期
7.2 使用Linux组
组权限允许许多个用户对系统中的对象(文件,目录,设备......)共享一组共用的权限。
每个组都有唯一的组ID(GID)。还有唯一的组名。
7.2.1 /etc/group 文件
可以查看该文件:包含组名 组密码 GID 属于该组的用户列表
不能直接修改/etc/group 这个文件来将一个用户添加进组。而应该使用usermod命令。
7.2.2 创建新组
groupadd命令
7.2.3 修改组
groupmod命令
7.3 理解文件权限
ls -l
- 代表文件
d 代表目录
l 链接
c 字符设备
b 块设备
n 网络设备
-rwxrwxr-x 分别是文件属主、同组用户、其他人的权限
7.3.2 默认文件权限
创建一个文件,会有个默认的权限。通过umask查看
umask 第一个表示粘着位。
后面的3位表示文件或目录对应的umask对应的八进制值。
这个只是一个掩码。还要转换一下才能得到真正的权限
对于文件来说全权限是666(全都可读可写) rw-rw-rw-
对于目录来说全权限是777(全都可读可写可执行)rwxrwxrwx
创建新文件的权限=全权限 - umask
比如:umask 是222,那么创建的文件的权限就是 666 - 222 = 444(r--r--r--)
对于目录来说就是 555 (r-xr-xr-x)
7.4 改变安全性设置
chmod 命令
chmod 777 newfile
chmod o+r newfile // 给其他用户增加可执行权限
chmod u+r newfile // 给属主增加可执行权限
chmod g+w newfile // 给组用户增加写权限
chmod a+r newfile // 给所有增加读权限
还可以移除权限
chmod a-r newfile // 给所有移除读权限
7.4.2 改变所属关系
chown改变文件的属主,(可用登录名或UID来指定文件的新属主)
chgrp改变文件的默认属组(属于哪个组group)
7.5 Linux上共享文件的方法是创建组
目前新建一个文件想让其他人能访问,有两个方法:
(1)改变其他用户所在安全组的访问权限
(2)给文件分配一个包含其他用户的新默认属组。
大规模操作就会很繁琐。下面就来解决这问题。
Linux还为每个文件和目录存储了3个额外的信息位
设置用户ID(SUID):文件被用户使用时,程序会以文件属主的权限运行
设置组ID(SGID):对文件来说被使用时,以文件属组的权限运行。对目录来说,创建的新文件会已目录的默认属组作为默认属组。
粘着位:进程结束后文件还驻留在内存中。
SGID非常重要,启用SGID之后可以强制在一个共享目录下创建的新文件都属于该目录的属组,这个组也就成为了每个用户的属组。
要创建共享目录,使目录里的新文件都能沿用目录的属组,只需将该目录的SGID位置位。
《Linux命令行与shell脚本编程大全》 第七章理解Linux文件权限的更多相关文章
- 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---6
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下: <Linux命令行与shell脚本 ...
- 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---5
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下: <Linux命令行与shell脚本 ...
- 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---4
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下: <Linux命令行与shell脚本 ...
- 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---3
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下: <Linux命令行与shell脚本 ...
- 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---2
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下: <Linux命令行与shell脚本 ...
- 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---1
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下: <Linux命令行与shell脚本 ...
- 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---0
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下: <Linux命令行与shell脚本 ...
- 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---57
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:
- 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---56
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:
- 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---55
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:
随机推荐
- 【NOIP】OpenJudge - 15-02:财务管理
#include<stdio.h>//财务管理 int main() { ]={},sum=,ave=; ;i<=;i++) { scanf("%f",& ...
- DDL DML DCL TCL之不同
http://www.orafaq.com/faq/what_are_the_difference_between_ddl_dml_and_dcl_commands DDL Data Definiti ...
- web前端面试官挖的那些坑(js)
题目1: function Foo() { getName = function () { alert (1); }; return this; } Foo.getName = function () ...
- wxPython中基本控件学习
wxPython工具包提供了多种不同的窗口部件,包括了本章所提到的基本控件.我们涉及静态文本.可编辑的文本.按钮.微调.滑块.复选框.单选按钮.选择器.列表框.组合框和标尺.对于每种窗口部件,我们将提 ...
- 基于FPGA的肤色识别算法实现
大家好,给大家介绍一下,这是基于FPGA的肤色识别算法实现. 我们今天这篇文章有两个内容一是实现基于FPGA的彩色图片转灰度实现,然后在这个基础上实现基于FPGA的肤色检测算法实现. 将彩色图像转化为 ...
- IDL 数组运算
1.求大.求小和求余 IDL> arr=indgen(4) IDL> print,arr 0 1 2 3 IDL> print,arr>3 3 3 3 3 IDL> pr ...
- springboot使用zookeeper(curator)实现注册发现与负载均衡
最简单的实现服务高可用的方法就是集群化,也就是分布式部署,但是分布式部署会带来一些问题.比如: 1.各个实例之间的协同(锁) 2.负载均衡 3.热删除 这里通过一个简单的实例来说明如何解决注册发现和负 ...
- typescript 的 polyfill 学习1-Class 继承篇
Class 继承 js 是多范式的编程语言,同样也是支持面向对象编程的,类 是面向对象中是很重要的概念. 区别于传统的java,c#基于模板的类,js是基于原型的. 类继承一般是通过原型链的方式来实现 ...
- java中==与equel的区别
值类型是存储在内存中的堆栈(以后简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中. ==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地 ...
- layer.msg 添加在Ajax之前 显示进度条。
一.使用方法:1)必须先引入jQuery1.8或以上版本 <script src="jQuery的路径"></script> <script src= ...