Linux学习笔记(14)——Linux 账号管理与 ACL 权限设定_thinkpadshi的博客-程序员宅基地

技术标签: Linux  linux  

1) Linux账号与群组

a)  使用者标识符: UID 与GID

每一个档案都具有『拥有人与拥有群组』的属性,每个登入的使用者至少都会取得两个 ID ,一个是使用者 ID (User ID ,简称 UID)、一个是群组 ID (Group ID ,简称 GID)。

b)  使用者账号

跟使用者账号有关的有两个非常重要的档案,一个是管理使用者 UID/GID 重要参数的 /etc/passwd ,一个则是专门管理密码相关数据的/etc/shadow

c)  /etc/passwd档案结构

【账户名称】:用来对应UID,root的UID为0(第三个字段).

【密码】:已经放到了/etc/shadow中,目前只能看到[x].

【UID】:使用者标识符,uid 为0,则表示系统管理员;uid在1到499之间,表示系统账号,uid大于500,则为普通账号。

【GID】:这个与/etc/group有关。

【用户信息说明栏】:解释账号意义,chfn

【家目录】:默认的用户家目录在/home/yourIDname。

【shell】:预设使用哪种shell,但是/sbin/nologin却无法让账号取得shell环境的登入动作。

d)  /etc/shadow档案结构

【账户名称】:对应相应的账号,必须要与/etc/passwd 相同。

【密码】:

【最近更改密码的日期】:1970年1月1日作为 1 累加的日期。

【密码不可被更改的天数】:(不第 3 字段相比)

【密码需要重新变更的天数】:(不第 3 字段相比)

【密码需要变更期限前的警告天数】:(不第 5 字段相比)

【密码过期后的账号宽限时间(密码失效日)】:

【账号失效日期】:

【保留】:

e)  /etc/group档案结构

这个档案就是在记录 GID 与组名的对应了

【组名】:

【群组密码】:,密码已经移动到/etc/gshadow去

【GID】:/etc/passwd 第四个字段使用的 GID 对应的群组名

【此群组支持的账号名称】:

f)  有效群组(effective group)与初始群组(initial group)

/etc/passwd 里面的第四栏 GID 就是所谓的『初始群组 (initial group) 』!用户一登入系统,立刻就拥有这个群组的相关权限

g)  groups:有效与支持群组的观察

#groups     查询当前账户所支持的群组

groups命令第一个输出的群组即为有效群组(effective group)

新建档案的拥有者为有效群组,有效群组的主要用途也在此。

h)  newgrp:有效群组的切换

#newgrp 群组名

newgrp命令实际上时另起一个shell,在新的shell中切换群组。如需退出,请使用exit

i)  /etc/gshadow

【组名】【密码栏】【群组管理员的账号】【该群组的所属账号】

2) 账号管理

a)  新增账号

#useradd  新建用户名

CentOS 这些默认值主要会帮我们处理几个项目:

---在 /etc/passwd 里面建立一行与账号相关的数据,包括建立 UID/GID/家目录等;

---在 /etc/shadow 里面将此账号的密码相关参数填入,但是尚未有密码;

---在 /etc/group 里面加入一个与账号名称一模一样的组名;

---在 /home 底下建立一个与账号同名的目录作为用户家目录,且权限为 700

b)  设置密码

#passwd username      #修改账号名为username的密码

#passwd               #修改当前账户的密码

可以使用如下命令查看账号密码参数:

#passwd username –S

#chage username

c)  useradd参考档

# useradd –D   呼叫useradd默认值

其实是呼叫/etc/default/useradd档案而来

【GROUP=100】:新建账号的初始群组使用 GID 为 100 ,即user,由于centos采用私有群组机制,故此项设定不会生效,新建账号的初始群组为与账号名称一样的群组。

【HOME=/home】:用户家目录的基准目录(basedir),用户的家目录通常是与账号同名的目录,这个目录将会摆放在此设定值的目录后。

【INACTIVE=-1】:密码过期后是否会失效的设定值,若为-1,则表示永远都不会失效

【EXPIRE=】:账号失效的日期

【SHELL=/bin/bash】:默认使用的 shell 程序文件名,如果不希望用户登入系统取得 shell ,那么设定为 /sbin/nologin。

【SKEL=/etc/skel】:用户家目录参考基准目录,新增的用户家目录下的内容都是由/etc/skel 所复制过去的。

【CREATE_MAIL_SPOOL=yes】:建立使用者的mailbox

d)  /etc/login.defs账号额外参考值

此档案规范如下数据:

【mailbox 所在目录】:

【shadow 密码第 4, 5, 6 字段内容】

【UID/GID 挃定数值】

【用户家目录设定值】

【用户删除与密码设定值】

e)  useradd这支程序在建立Linux 上的账号时,至少会参考:

/etc/default/useradd

/etc/login.defs

/etc/skel/*

f)  usermod:对useradd中设定参数进行调整

#usermod [选项与参数] username

g)  userdel  删除用户的相关数据

用户的数据有:

【用户账号/密码相关参数】:/etc/passwd, /etc/shadow

 【使用者群组相关参数】:/etc/group,/etc/gshadow

【个人档案】: /home/username,/var/spool/mail/username..

如果只是想让账号[暂时不启用]的话,将/etc/shadow里头账号失效日期 (第八字段) 设定为 0 就可以让该账号无法使用,但是所有跟该账号相关的数据都会留下来。使用 userdel的时机通常是『真的确定不要让该用户在主机上面使用任何数据了!』

       

3) 用户功能

a)  finger  查询用户相关信息,大多是/etc/passwd这个档案中的

【Login:】为使用者账号,即 /etc/passwd 内的第一字段;

【Name:】为全名,即 /etc/passwd 内的第五字段(或称为批注);

【Directory】:就是家目录了;

【Shell】:就是使用的 Shell 档案所在;

【Never logged in.:】调查用户登入主机的情况

【No mail.:】调查 /var/spool/mail 当中的信箱资料;

【No Plan.:】调查 ~vbird1/.plan 档案,并取出来说明!

b)  chfn:

c)  chsh:change shell

d)  id:查阅账户的UID/GID等的信息

e)  新增与移除群组

#groupadd

#groupmod  与usermod相似,用来修改groupadd的参数

#groupdel  删除群组

删除群组时,必须确认 /etc/passwd 内的账号没有任何人使用该群组作为 initial group

f)  gpasswd:群组管理员功能

g)  例题

 

4) 主机的细部权限规划:ACL 的使用

a)  什么是ACL

ACL 是 Access Control List 的缩写,主要的目的是在提供传统的 owner,group,others 的 read,write,execute 权限之外的细部权限设定。ACL 可以针对单一使用者,单一档案或目录来进行 r,w,x 的权限规范。

b)  如何启动ACL

centos中预设ext3时启动支持ACL

# dumpe2fs -h /dev/sda2

c)  ACL的设定技巧:getfacl, setfacl

getfacl:取得某个档案/目录的 ACL 设定项目;

setfacl:训定某个目录/档案的 ACL 规范。

d)  setfacl指令用法

如果一个档案设定了 ACL 参数后,他的权限部分就会多出一个 + 号了!但是此时你看到的权限与实际权限可能就会有点误差! 可以透过 getfacl 来观察

e)  getfacl指令用法

# getfacl filename

显示的数据前面加上 # 的,代表这个档案的默认属性,包括文件名、档案拥有者与档案所属群组。底下出现的 user, group, mask, other 则是属于不同使用者、群组与有效权限(mask)的设定值。

使用者或群组所设定的权限必须要存在于 mask 的权限设定范围内才会生效,此即『有效权限 (effective permission)』

vbird1 与 mask 的集合发现仅有 r 存在,因此 vbird1 仅具有r 的权限而已,并不存在 x 权限!

f)  取消ACL属性

#setfacl -b 档案名

5) 使用者身份切换

a)  su

在su的用法中,减号[-]涉及到login-shell 与non-login shell 的变量读取方法。

单纯使用『 su 』切换成为 root 的身份,读取的变量设定方式为 non-login shell 的方式,这种方式很多原本的变量不会被改变,因此,务必添加减号[-]

一个只有 root 才能进行的指令,且执行完毕就恢复原本的身份,那就可以加上 -c 这个选项

若要完整的切换到新使用者的环境,必须要使用『 su- username 』或『 su -l username 』, 才会连同 PATH/USER/MAIL 等变量都转成新用户的环境;

如果仅想要执行一次 root 的指令,可以使用『 su - -c "指令串" 』癿方式来处理;

  使用 root 切换成为任何使用者时,并不需要输入新用户的密码;

    多人使用su来连接root时,容易导致root密码泄露,此时可以使用sudo来解决。

b)  sudo

并非所有人都能够执行 sudo , 而是仅有 /etc/sudoers 内的用户才能够执行 sudo 这个指令。

系统默认仅有 root 可以执行 sudo

无法使用『 su - sshd 』去切换系统账号 (因为sshd为系统账号,且shell 是 /sbin/nologin), 这个时候sudo 就好用了,立刻以 sshd 的权限在 /tmp 底下建立档案

c)  sudo执行流程

1. 当用户执行 sudo 时,系统于 /etc/sudoers 档案中搜寻该使用者是否有执行 sudo 的权限;

2. 若使用者具有可执行 sudo 的权限后,便让使用者『输入用户自己的密码』来确认;

3. 若密码输入成功,便开始进行 sudo 后续接的指令(但 root 执行 sudo 时,不需要输入密码);

4. 若欲切换的身份与执行者身份相同,那也不需要输入密码。

d)  sudo执行的重点是:『能否使用sudo 必须要看 /etc/sudoers 的设定值, 而可使用 sudo 者是透过输入用户自己的密码来执行后续的指令串』

e)  visudo与/etc/sudoers

除了 root 之外的其他账号,若想要使用 sudo 执行属于 root 的权限指令,则 root 需要先使用 visudo 去修改 /etc/sudoers ,让该账号能够使用全部或部分 root 指令功能。

f)  单一用户进行 root 所有指令,与sudoers 档案语法:

那个 ALL 是特殊关键词,代表任何身份、主机或指令的意思

g)  利用群组以及免密码的功能处理 visudo

任何加入 wheel 这个群组的使用者,就能够使用 sudo 切换任何身份来操作任何指令』

以上的关键字nopasswd可以实现免密码使用sudo

h)  有限制的指令操作

当使用者仅能使用 passwd 这个指令帮忙 root 修改其他用户的密码

! 代表『不可执行』的意思,可以执行『 passwd 任意字符』,但是『 passwd 』与『 passwd root 』这两个指令例外! 如此一来授权用户 就无法改变 root 的密码了

i)  透过别名建置 visudo

j)  sudo时间间隔问题:

两次执行 sudo 的间隔在五分钟内,那么再次执行 sudo 时就不需要再次输入密码

k)  sudo搭配 su 的使用方式

只要输入『 sudo su - 』并且输入『自己的密码』后,立刻变成 root 的身份!不但 root 密码不会外流,用户的管理也变的非常方便!

6) 用户的特殊 shell 与 PAM 模块

a)  特殊的 shell, /sbin/nologin

所谓『无法登入』指的仅是:『这个使用者无法使用bash 或其他 shell 来登入系统』而已, 并不是说这个账号就无法使用其他的系统资源

可以修改/etc/nologin.txt配置文件,当用户无法登入时,提示我们自定义的信息,而不是系统预设的信息。

b)  PAM(Pluggable Authentication Modules, 嵌入式模块)

c)  PAM模块设定语法

以passwd这个指令为例,呼叫PAM的流程为:

1. 用户开始执行 /usr/bin/passwd 这支程序,并输入密码;

2. passwd 呼叫 PAM 模块进行验证;

3. PAM 模块会到 /etc/pam.d/ 找寻与程序 (passwd) 同名的配置文件;

4. 依据 /etc/pam.d/passwd 内的设定,引用相关的PAM 模块逐步进行验证分析;

5. 将验证结果 (成功、失败以及其他信息) 回传给 passwd 这支程序;

6. passwd 这支程序会根据 PAM 回传的结果决定下一个动作 (重新输入新密码或者通过验证!)

d)  常用模块简介

/etc/pam.d/*:每个程序个别的 PAM 配置文件;

/lib/security/*:PAM 模块档的癿实际放置目录;

/etc/security/*:其他 PAM 环境的配置文件;

 /usr/share/doc/pam-*/:详细的 PAM 说明文件。

e)  login的 PAM 验证机制流程

7) Linux主机上的用户信息传递

a)  查询使用者: w, who, last, lastlog

#last      #查询自系统建立以来登陆的用户信息

#w/who     #目前系统中已登录的用户

        #lastlog     #用户账号最近登陆的时间

b)  使用者对谈: write, mesg, wall

#mesg n    #设置mesg状态为n,表示不接受其他用户的信息

#mesg y    #设置mesg状态为y,表示接受其他用户的信息

#mesg      #查看mesg 的状态;

#wall      #对当前系统上所有的用户进行广播信息

注意:只有在在线时信息才能生效或传达

c)  使用者邮件信箱: mail

mailbox 都会放置在 /var/spool/mail 里面,一个账号一个 mailbox (档案)

#mail [email protected] -s"邮件标题"     #寄出邮件

由于mail程序中,编辑信件内容不太方便,可以使用数据流重导向功能来使用vi编辑,如下:

#mail [email protected] -s"邮件标题"< filename 

#mail    #收信

前面那个 > 代表目前处理的信件,而在大于符号的左边那个 N 代表该封信件尚未读过,直接按回车键enter进入查看邮件内容,退出时输入x即可

8) 手动新增使用者

a)  检查工具

#pwck   #检查/etc/passwd /etc/shadow 的信息是否一致

#grpck  #检查群组

b)  pwconv

将 /etc/passwd 内的账号与密码,移动到/etc/shadow 当中!

正常使用useradd添加用户时,pwconv不会有任何动作。

c)  手动建立账户流程

1. 先建立所需要的群组 ( vi /etc/group);

2. 将 /etc/group 与 /etc/gshadow 同步化 ( grpconv );

3. 建立账号的各个属性 ( vi /etc/passwd);

4. 将 /etc/passwd 与 /etc/shadow 同步化 ( pwconv );

5. 建立该账号的密码 ( passwdaccountname );

6. 建立用户家目录 ( cp -a /etc/skel/home/accountname );

7. 更改用户家目录的属性 ( chown -Raccountname.group /home/accountname )。

d)  大量建置账号模板

9) 总结

a)  使用者的账号/群组与 UID/GID 对应,参考/etc/passwd 及 /etc/group 两个档案

b)  /etc/passwd档案结构以分号隔开,共分为七个字段,分删是『账号名称、密码、UID、GID、全名、家目录、shell』

c)  使用者可以支持多个群组,其中在新建档案时会影响新档案群组者,为有效群组。而写入 /etc/passwd 的第四个字段者, 称为初始群组。

d)  与使用者建立、更改参数、初除有关的指令为:useradd, usermod, userdel等,密码建立则为 passwd;

e)  与群组建立、修改、删除有关的指令为:groupadd, groupmod, groupdel 等;

f)  群组的观察与有效群组的切换分删为:groups 及 newgrp ;

g)  useradd指令作用参考的档案有:/etc/default/useradd, /etc/login.defs, /etc/skel/ 等等

h)  观察用户详细的密码参数,可以使用『 chage -l 账号 』;

i)  ACL可进行单一个人或群组的权限管理,设定可使用 setfacl ,查阅则使用 getfacl ;

10)     练习

a)  账号分开管理

b)  暂时停掉账号

o将 /etc/passwd 的 shell 字段写成 /sbin/nologin ,即可让该账号暂时无法登入主机;

o将 /etc/shadow 内的密码字段,增加一个 * 号在最前面,这样该账号亦无法登入!

o 将 /etc/shadow 的第八个字段关于账号取消日期的那个,设定小于目前日期的数字,那么他就无法登入系统了!



------以上整理自鸟哥的Linux私房菜

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/thinkpadshi/article/details/46927341

智能推荐

java的excelreader_读取Excel文件ReaderExcel (用到FileUtil.java)(JXL方式读取excel) | 学步园..._盐于律己鸭的博客-程序员宅基地

import com.hao.util.FileUtil;import java.io.File;import java.io.IOException;import java.io.InputStream;import java.util.ArrayList;import java.util.List;import jxl.Cell;import jxl.Sheet;import jxl.Work...

信息安全期末复习知识整理之选择、填空、判断题(上篇)_艳Yansky的博客-程序员宅基地

这里整理了信息安全技术的知识供自己复习也希望对大家有所帮助~一、选择、填空、判断1.1 计算机安全与技术研究的内容①计算机外部安全②计算机信息在存储介质上的安全③计算机信息在传输过程中的安全,即计算机网络安全1.2 影响计算机安全的因素①自然环境 ②人为失误 ③人为恶意破坏 ④软件设计不完善2.1 代替密码代替密码也称“替换密码”,其是按一...

linux服务网卡速率查看,查看linux系统网卡工作模式、速率等_挖数的博客-程序员宅基地

有时候,我们需要看下linux系统网卡工作模式、速率等,比较常用到的命令是mii-tool、ethtool,下面简单看下即可。查看下eth0网卡信息[[email protected] ~]# mii-tool -v eth0eth0: negotiated 100baseTx-FD flow-control, link okproduct info: vendor 00:00:20, model 32 rev...

[10月1日的脚本] 移除Windows8应用商店中的应用程序_MSScriptSample的博客-程序员宅基地

脚本下载: RemoveWindowsStoreApp.ziphttp://gallery.technet.microsoft.com/scriptcenter/Remove-Windows-Store-Apps-a00ef4a4 本脚本可以用来移除Windows8用户账户的多个Windows应用商店应用程序。它提供了已安装的Windows应用商店应用程序的列表。您可以指定欲移除的

远程文件包含2_Beluga的博客-程序员宅基地

开启kali的apache服务返回到网站去page=http://KALI IP ,确认远程包含文件存在准备传入木马生成文件1.txt然后使用kali去访问1.txt,返回结果为成功即可验证是否存在木马文件,返回无结果即为成功使用菜刀连接一句话木马文件打开右击记录,打开虚拟终端,输入ifconfig...

python awaitable_Python 3.5的async和await特性(PEP492翻译)(转)_weixin_39778214的博客-程序员宅基地

原因:1,coroutine容易与正常的generators弄混2,一个function是否为coroutine由函数体内是否有yield 或者yield from 决定,这不科学。3,如果在语法上允许yield的地方才能进行异步调用,那诸如with和for语句中都不能执行异步了。咋解决呢,把coroutine当成一个native的Python语言特性,与generator完全独立。Native ...

随便推点

串口硬盘如何应用于并口硬盘计算机,串口硬盘和并口硬盘的区别 并口硬盘怎么改串口硬盘【详解】..._带笑子的博客-程序员宅基地

摘要:串口硬盘和并口硬盘的区别?并口硬盘怎么改串口硬盘?一说到并口硬盘改串口硬盘,我想,对于不常接触电脑的人们来说肯定是一头雾水,那么,今天就和小编一起去探索探索吧!要想了解并口硬盘改串口硬盘,毋容置疑,首先我们得了解一下并口硬盘和串口硬盘的区别。接下来,我们就一起去看看吧!【并口硬盘盒】串口硬盘和并口硬盘的区别 并口硬盘怎么改串口硬盘串口硬盘和并口硬盘的区别随着技术的成熟,越来越多的主板和 硬盘...

HDU - 2519 新生晚会_李歘歘的博客-程序员宅基地

OJ地址:http://acm.hdu.edu.cn/showproblem.php?pid=2519开学了,杭电又迎来了好多新生。ACMer想为新生准备一个节目。来报名要表演节目的人很多,多达N个,但是只需要从这N个人中选M个就够了,一共有多少种选择方法?Input数据的第一行包括一个正整数T,接下来有T组数据,每组数据占一行。每组数据包含两个整数N(来报名的人数,1&lt;=N&...

Scala从入门到精通之四-映射和元组_weixin_30879169的博客-程序员宅基地

  在Scala中映射之键值对的集合,元组是n个对象的聚集,但是对象的类型不一定相同本节内容要点  Scala中映射的创建,遍历和查询  如何从可变和不可变映射中做出选择  Scala映射和Java映射见的互操作  Scala中元组的使用一.构造映射   我们可以这样来构造一个映射:val scores = Map("ysl"-&gt;100,"wdd"...

Windows系统中鲜为人知的宝藏之程序篇_setoy的博客-程序员宅基地

在Windows操作系统中,一直隐藏着一些我们不知道的秘密,在本文中我们就将从文件夹、程序、启动、命令和进程等五个方面来说明一下Windows操作系统隐藏的秘密。上期我们讲了文件夹篇,本期我们讲述程序篇。   Arp.exe TCP/IP地址解析工具。     Asd.exe 自动跳过驱动程序 。利用该程序 可以检查系统在启动过程中的错误并能提供相应的解决方案。在系统出现严重问题时,可检测引发故障

推荐文章

热门文章

相关标签