Linux编程 14 文件权限(用户列表passwd,用户控制shadow,useradd模板与useradd命令参数介绍)
一. 概述
linux安全系统的核心是用户账户。 创建用户时会分配用户ID(UID)。 UID是唯一的,但在登录系统时不是用UID,而是用登录名。在讲文件权限之之前,先了解下linux是怎样处理用户账户的。以及用户账户需要的文件和工具,这样处理文件权限问题时,就知道如何使用它们了。
1.1 /etc/passwd用户文件
/etc/passwd 是用来将用户的登录名,匹配到对应的UID上。它包含了一些与用户有关的信息。下面截取二个片断。如下图所示:
root用户账户是linux系统管理员,固定分配给它的UID是0。 上面linux系统会为各种各样的功能创建不同的用户账户,而这些账户并不是真正的用户。它们叫作系统账户,是系统上运行各种服务进程访问资源用的特殊账户。root用户UID是0,mysql用户的UID是998。如下图所示:
linux系统账户预留了500以下的UID值。有些服务甚至要用特定的UID才能正常工作。在/etc/passwd文件中冒号分隔的字段包含以下信息:
mysql:x::::/home/mysql:/bin/bash
登录用户名 |
例如:mysql |
用户密码 |
x (密码字段都被设置成了x) |
用户UID |
998 |
用户的组ID (GID) |
I000 |
用户的文本描述 |
mysql 用户描述为空 |
用户的HOME目录位置 |
/home/mysql |
用户的默认shell |
/bin/bash |
1.2 /etc/shadow 用户文件
/etc/shadow文件对linux系统密码管理提供了更多的控制。只有root用户才能访问/etc/shadow文件。比起/etc/passwd安全许多,文件内容如下图所示:
比如让mysql 用户来查看该文件,是没有这个权限的。
下是copy出来的root用户账户信息:
root:$$BSeXl2xuiNYlDwkO$X4dfd8A97XHRO9S.9KNqL/bRX4B33tIAzOu1dwiPVLDS42YqwaY8JrwYAExGPuvc42yhnMmO28VRMP.qVjYDY1:::::::
每条记录都有9个字段,字符串以冒号分隔的字段信息如下:第一个字段:登录名。 第二个字段:加密后的密码。其它字段以后在解读。使用/etc/shadow,可以控制用户多久更改一次密码,以及什么时候禁用该用户账户(在其它字段上设置这些功能)。
二. 用户工具管理
2.1 useradd 模板介绍
在linux系统中添加新用户的工具是useradd, 可以一次性创建新用户账户及设置用户HOME目录结构。useradd命令使用系统的默认值以及命令行参数来设置用户账户。系统默认值被设置在/etc/default/useradd文件中,可以定位到/etc/default/useradd文件,修改默认值。使用useradd -D 选项查看这些默认值。如下图所示:
如果用户不指定具体的值,使用useradd添加用户时就会使用这些默认值。默认值解释如下:
GROUP=100 |
新用户会添加到GID为100的公共组中 |
HOME=/home |
新用户的HOME目录将位于/home/loginname下 |
INACTIVE=-1 |
新用户密码在过期后不会被禁用 |
EXPIRE= |
新用户未设置过期日期 |
SHELL=/bin/bash |
新用户将bash shell作为默认shell |
SKEL=/etc/skel |
系统会将/etc/skel目录下的内容复制到用户的HOME目录下 |
CREATE_MAIL_SPOOL=yes |
系统为用户账户在mail目录下创建一个用于接收邮件的文件 |
SKEL参数是指:useradd命令允许管理员创建一份默认的HOME目录配置,然后把它作为创建新用户HOME目录的模板。这样就能自动在每个新用户的HOME目录里放置默认的系统文件(上篇讲到的系统环境变量位置)。新用户HOME目录下的系统文件模板。如下图所示:
在上篇中,知道了.bashrc, .bash_profile这些文件都是bash shell的标准启动文件。系统会自动将这些默认文件复制到你创建的每个用户HOME目录下。我的linux系统在很久前创建了一个mysql用户,下面去/home/mysql下检查有没有这些标准启动文件。
上图告诉我们,mysql目录不存在,这是因为创建用户默认情况下,useradd命令不会创建HOME目录,需要使用useradd -m 命令来创建HOME目录。我推测当mysql用户没有这些bash shell标准启动文件时,会去继承root用户下的标识启动文件。
2.2 useradd -m
上面mysql用户没有指定HOME目录,下面是创建一个新test用户,并使用参数m来创建HOME目录,并将/etc/skel目录中的文件复制了过来,/home/test 下面就有了标准启动文件。如下图所示:
再次查看passwd用户列表,多出来一个test用户,创建的这个test除了指定了HOME目录,其它参数都是使用的默认值(没有指定组,密码,过期时间)。如下图所示:
下面是切换到test用户下,如下图所示:
2.3 useradd 命令参数
要想在创建用户时改变默认值或默认行为,可以使用命令参数,下面列出一些常用参数
参数 |
描述 |
-c comment |
给新用户添加备注 |
-d home_dir |
为主目录指定一个名字(如果不想用登录名作为主目录名) |
-e expire_date |
用YYYY-MM-DD格式指定一个账户过期日期 |
-f inactive_days |
指定这个账户密码过期后多少天,这个账户被禁用;0表示密码一过期就立即禁用, 1表示禁用这个功能 |
-g initial_group |
指定用户登录组GID |
-m |
创建用户HOME目录 |
-r |
创建系统账户 |
-p passwd |
指定默认密码 |
当创建用户账户时,如果总需要修改某个值的话,最好还是修改一下系统的默认值,修改(useradd模板),也可以使用"useradd -D 默认参数"来修改模板,这里就不再介绍useradd默认值参数。
Linux编程 14 文件权限(用户列表passwd,用户控制shadow,useradd模板与useradd命令参数介绍)的更多相关文章
- Linux编程 15 文件权限(用户管理 useradd,userdel,usermod,passwd,chpasswd,chsh, chfn,chage)
一. 概述 在上一篇中讲到了与用户账户有关的二个文件passwd和shadow,以及useradd工具的介绍.这篇接着讲useradd+参数,删除用户,修改用户的演示. 1. 删除用户userdel ...
- Linux编程 17 文件权限(权限设置chmod,改变文件属主属组关系chown,chgrp)
一. 概述 如果创建了一个目录或文件,有时会需要改变它的安全性设置,在linux系统上有一些工具可以完成这任务,包括使用chmod命令改变已有默认权限,分别能对属主,属组,其它用户的权限的控制分别以读 ...
- Linux编程 16 文件权限(组管理 groupadd, groupmod,文件权限介绍)
一.用户组 前面章节知道用户账户在控制单个用户安全性方面很好,但涉及到共享资源或把用户类型分组时,组概念就出来了. 组权限允许多个用户对系统中的对象(比如文件,目录,设备等)共享一组共用的权限. 在c ...
- linux中的文件权限chmod
linux中的文件权限chmod 还是GPU集群那点事儿,集群之间磁盘互相挂载,普通用户也可以操作/cu02_nfs./cu04_nfs文件夹,这就牵扯到权限的问题,去google发现所谓的777 ...
- Linux下文件权限(一)用户ID和用户组ID
最近在读<unix环境高级编程>,看到文件权限这里比较糊涂,主要设计多个用户ID和用户组ID,包括下面两个: (1)实际用户ID和实际用户组ID:这一部分表示我们究竟是谁.这两个字段在登录 ...
- Linux入门:文件权限、用户、用户组(比较清楚)
单个文件名或目录名长度不超过255字符: 文件或目录的绝对路径长度不超过4096字符: 一.文件所有者与用户组 一个文件有很多属性,包括文件类型.文件权限.文件隐藏权限.文件所有者.用户组 ...
- linux 修改目录文件权限,目录文件所属用户,用户组
1:查看命令:ll drwxr-xr-x 4 gamer ftp 4096 Mar 7 16:56 gstore drwxrwxrwx 10 root ftp 4096 De ...
- linux:用户和组文件解释(/etc/passwd、/etc/shadow、/etc/group、/etc/gshadow)
一.用户文件:/etc/passwd [root@pinfun6 ~]# cat /etc/passwd root:x:0:0:root:/root:/bin/bash 1 2 3 4 5 6 7 | ...
- Linux 学习笔记 文件权限
* Linux系统会为各种各样的功能创建不同的用户账户,而这些账户并不是真的用户.这些账户称作系统账户,是系统上运行的各种服务进程访问资源用的特殊账户. 所有运行在后台的服务都需要用一个系统用户账户登 ...
随机推荐
- 异步async与await的简单探究
在学习.net core的过程中,到处见到异步的使用,Task.async.await随处可见.有点疑惑,就去了解了下这个过程是怎样的. 下面是一段代码,去看看是怎么执行的吧. 一.看看异步执行的方式 ...
- 适用于 iOS、Android 和 Windows 设备的移动设备管理
适用于 iOS.Android 和 Windows 设备的移动设备管理 随着企业环境中移动设备的数量不断增加,详细检查访问您企业资源的移动设备变得至关重要.统一终端管理软件 Desktop Centr ...
- IOS KVO没有在delloc中移除导致奔溃
1.背景 为了监听tableview的移动 [_tableView addObserver:self forKeyPath:@"contentOffset" options:NSK ...
- Java性能优化的50个细节(珍藏版)
原文地址:https://www.toutiao.com/i6595499804082569742/ 在JAVA程序中,性能问题的大部分原因并不在于JAVA语言,而是程序本身.养成良好的编码习惯非常重 ...
- 11-jQuery的事件绑定和解绑
1.绑定事件 语法: bind(type,data,fn) 描述:为每一个匹配元素的特定事件(像click)绑定一个事件处理器函数. 参数解释: type (String) : 事件类型 data ( ...
- 20145232韩文浩《网络对抗》PC平台逆向破解
shellcode注入 1.Linux下有两种基本构造攻击buf的方法:retaddr+nop+shellcode,nop+shellcode+retaddr.我们采用anything+retaddr ...
- npm: 权限阻止修复
在使用 npm install 时,总提示: Error: EACCES: permission denied 今天通过这个命令设置了权限解决了问题: sudo chown -R $(whoami) ...
- 将 Idea 常用快捷键 设置为 Eclipse 的快捷键
- 【笔记】css基于box的一行时垂直方向居中,多行平均居中,多出部分还省略号代替
题目很长,其实他就是这样的: 看标题,一行的时候是这样的,在行中间 标题文字多的时候是这样的,变成2行,超出部分用省略号: 但是为了更好的兼容性,没有使用flex,使用的是box布局. 核心代码就是这 ...
- 安装easygui
1.下载0.96的easygui 官网: http://easygui.sourceforge.net/ 2.解压后得到文件夹,里面有两个文件分别为,setup.py和easygui.py 3.在py ...