鸟哥私房菜 第十四章 Linux账号管理与ACL权限设置
来源:互联网 发布:成都电脑编程培训 编辑:程序博客网 时间:2024/05/11 23:46
Linux账号管理与ACL权限设置
Linux的账号与用户组
用户的标识符:UID与GID
每个登录的用户至少都会取得两个ID,一个是用户ID,即UID,一个是用户组ID,即GID。
用户账号
/etc/passwd文件结构:
每一行使用“:”隔开,共有7个字段。
例:root:x:0:0:root:/root:/bin/bash
1.账号名称:用来对应UID。
2.密码;早期UNIX系统的密码就放在这个字段,后来放到了/etc/shadow里面。
3.UID:当UID是0的时候,代表这个账号是“系统管理员”;
当UID是1~999时,代表这个账号是系统账号;当UID是 1000~60000+时,代表这个账号是给一般用户使用的.
4.GID:这个与/etc/group有关。
5.用户信息说明列:解释账号的意义。
6.主文件夹:默认的用户主文件夹在/home/yourINname中。
7.Shell:当用户登入系统后就会取得一个shell来与系统的核心沟通以进行用户的操作任务。
/etc/shadow文件结构:
shadow同样以“:”作为分隔符,共有9个字段。
例:root:x:0:0:root:/root:/bin/bash
1.账号名称;
2.密码:经过编码加密过后的密码;
3.最近更动密码的日期;
4.密码不可被更动的天数(与第三个字段相比);
5.密码需要重新更改的天数(与第三个字段相比);
6.面膜需要更改期限前的警告天数(与第五个字段相比);
7.密码过期后的账号宽限时间(与第五个字段相比);
8.账号失效日期;
9.保留;
一般用户忘记密码,可以请系统管理员帮忙重新设置好你的密码,不需要知道你的旧密码。
root忘记密码,可以重新启动进入用户维护模式,系统会主动给予root权限的bash接口,此时再以passwd修改密码即可;或者以Live CD开机后挂载根目录去修改/etc/passwd,将里面的root密码字段清空,再重启,并重新去设置密码。
有效与初始用户组:groups,newgrp
/etc/group文件结构
例:root:x:o:root
1.用户组名称;
2.用户组密码;
3.GID;
4.此用户支持的账号名称;
有效用户组与初始用户组
GID代表的就是所谓的“初始用户组”,也就是说,当用户登录系统,立刻就拥有这个用户组的相关权限的意思;
利用group可以查看有效与支持用户组,在输出的信息中,第一个输出的用户组即为有效用户组。通常有效用户组的作用是新建文件。
/etc/gshadow的文件结构
例:root:::root
1.用户组名;
2.密码列,开头为!表示无合法密码,所以无用户组管理员;
3.用户组管理员账号;
4.该用户组的所属账号。
账号管理
新增与删除用户:useradd,相关配置文件,passwd,usermod,userdel
在Linux系统中可以使用useradd来新建用户,密码的给予则使用passwd:
useradd [-u UID] [-g 初始用户组] [-G 次要用户组] [-nM]\
[-c 说明栏] [-d 主文件夹绝对路径] [-s shell] 用户账号名
-u:直接指定一个特定的UID;
-M:强制!不要创建用户文件夹(系统账号默认值)!
-m:强制!要创建用户文件夹(一般账号默认)!
-d:指定某个目录成为主文件夹,而不要使用默认值。务必是绝对路径!
-r:创建一个系统的账号,这个账号的UID会有限制;
-s:后面接一个shell,默认的是/bin/bash;
-e:后面接一个日期,即账号失效日的设置;
-f:后面接shadow的第七字段选项,指定密码是否会失效。0为立刻失效,-1为永不失效(密码只会过期二强制登录时重新设置而已)。
useradd参考文件
useradd -D可以调出useradd的默认值,这个数据是从/etc/default/useradd调用出来的。
GROUP=100:新建账号的初始用户组使用GID为100者。
HOME=/home:用户主目录文件夹的基准目录;
INACTIVE=-1:密码过期后是否会失效的设置值;
EXPIRE=-1:账号失效日期;
SHELL=/bin/bash:默认使用的shell程序文件名;
SKEL=/etc/skel:用户主文件夹参考基准目录;
CREAT_MAIL_SPOOL=yes:创建用户的Mailbox。
设置密码就使用passwd:
passwd [--stdin] --->所有人都可使用来改变自己的密码;
passwd [-l] [-u] [--stdin] [-S] [-n 日数] [-x 日数] [-w 日数] [-i 日数] 账号 <==root功能
--stdin:可以通过来自前一个管道的数据,作为密码输入;
-l:是Lock的意思,会将/etc/shadow第二列最前面加上!使密码失效;
-u:与-l相对,是Unlock的意思;
-S:列出密码相关参数,即shadow文件内的大部分信息;
-n:后面接天数,shadow第四字段,多久不可修改密码;
-x:后面接天数,shadow第五字段,多久内必须改动密码;
-w:后面接天数,shadow第六字段,密码过期钱的警告天数;
-i:后面接“日期”,shadow第七字段,密码失效日期。
对账号的相关数据进行微调
usermod [-cdegGlsuLU] username
-c:后面接账号说明;
-d:后面接账号的主文件夹;
-e:后面接日期,格式是YYYY-MM-DD,也就是/etc/shadow内的第八字段数据(账号失效日);
-f:后面接天数,为shadow的第七字段(密码失效日期);
-g:后面接初始化用户组,即GID字段;
-G:后面接次要用户组;
-a:与-G合用可增加次要用户组的支持而非设置;
-l:后面接账号名称,即修改账号名称;
-s:后面接Shell的实际文件;
-u:后面接UID数字;
-L:暂时将用户的密码冻结;
-U:将/etc/shadow密码列的!去掉。
删除用户的相关数据
userdel [-r] username
-r:连同用户的主文件夹一起删除。
用户功能
id这个指令可以查询某人或者自己的相关UID/GID等等信息:
id [username]
finger也可以查询许多用户相关的信息:
finger [-s] username
-s:仅列出用户的账号、全名、终端机代号与登录时间;
-m:列出与后面接的账号相同者,而不是利用部分比对。
chfn有点像是change finger的意思!
chfn [-foph] [账号名]
-f:后面接完整的大名;
-o:你办公室的房间号码;
-p:办公室的电话号码;
-h:家里的电话号码。
chsh就是change shell的简写。
chsh [-ls]
-l:列出目前系统上面可用的shell,其中就是/etc/shells的内容!
-s:设置修改自己的shell。
新增与删除用户组
基本上群组的内容都与连个文件有关:/etc/group、/etc/gshadow。群组的内容基本上就是上面两文件的新增、修改与删除。groupadd
groupadd [-g gid] [-r] 用户组名
-g:后面接某个特定的GID,用来直接给予某个UID;
-r:新建系统用户组。
群组的GID会由1000以上最大GID+1来决定。
groupmod
groupmod [-g gid] [-n group_name] 群组名
-g:修改既有的GID数字;
-n:修改既有的组名。
groupdel
groupdel [groupname]
gpasswd:群组管理员功能
gpasswd groupname
gpassdw [-A user1,...] [-M user3,...] groupname
gpasswd [-rR] groupname
没有参数,表示给予groupname一个密码(/etc/gshadow);
-A:将groupname的主控权交由后面的用户管理;
-M:将某些账号加入这个用户组中;
-r:将groupname的密码删除;
-R:让groupname的密码栏失效。
关于用户组管理员做的操作:
gpasswd [-ad] user groupname
-a:将某位用户加入到groupname这个用户组中;
-d:将某位用户删除出groupname这个用户组中。
主机的具体权限规划:ACL的使用
什么是ACL?
ACL是Access Control List的缩写,主要的目的是提供传统的owner、group、others的read、write、execute权限之外的具体权限设置。ACL可以针对单一用户单一文件或目录来进行r、w、x的权限设置,对于需要特殊权限的使用状况非常有帮助。
ACL的设置技巧:getfacl,setfacl
getfacl:取得某个文件/目录的ACL的设置项目;
setfacl:设置某个目录/文件的ACL设定;
setfacl命令:
setfacl [-bkRd] [{-m|-x} acl 参数] 目标文件名
-m:设置后续的acl参数给文件使用,不可与-x合用;
-x:删除后续的acl参数,不可与-m合用;
-b:删除所有的acl设置参数;
-k:删除默认的acl参数;
-R:递归设置acl,亦即包括子目录都会被设置起来;
-d:设置默认的acl参数!只对目录有效,在该目录新建的数据会引用此默认值。
getfacl命令:
getfacl filename
getfacl的参数几乎与setfacl相同。
针对特定用户的设置方式:
设置规定:“u:[用户账号列表]:[rwx]”,例如针对Jason的权限规定rx:set -m u:jason:rx filename。
针对特定群组的设置方式:
设定规范:“g:[群组列表]:[rwx]”,例如针对mygroup1的权限规范rx:set -m g:mygroup1:rx filename。
针对有效权限mask的设定方式:
设定规范:“m:[rwx]”,例如针对filename文件规定为仅有r:
setfacl -m m:r filename。
针对预设默认权限的设置方式:
设置规范:”d:[ug]:用户列表:[rwx]”,例如:setfacl -m d:u:myuser1:rx filename。
用户身份切换
su
su是最简单的身份切换命令。方法如下:
su [-lm] [-c 命令] [username]
-:单纯使用-,如“su -”,代表使用login-shell的变量文件读取方式来登录系统;若用户名称没加,则代表切换为root身份;
-l:与-类似,但后面需要加欲切换的用户账号。也是login-shell的方式;
-m:-m与-p是一样的,表示使用目前的环境设置,而不读取新用户的配置文件;
-c:仅进行一次命令,所以-c后面可以加命令。
sudo
sudo的执行只需要自己的密码即可。方法如下:
sudo [-b] [-u 新用户账号]
-b:将后续的命令让系统自行执行,而不与目前的shell产生影响;
-u:后面可以接欲切换的用户,若无此项则代表切换身份为root。
sudo的执行流程:
1.当用户执行sudo时,系统于/etc/sudoers文件中查找该用户是否有执行sudo的权限;
2.若用户具有权限,让用户输入自己账号的密码;
3.密码输入成功后,便开始进行后面的命令;
4.若欲切换的身份与执行者身份相同,便不需要密码。
visudo与/etc/sudoers
visudo就是利用vi将/etc/sudoers文件呼叫出来进行修改。
若要让jason这个账号可以使用root的任何指令,其中一种是直接修改/etc/sudoers,即在”root ALL=(ALL) ALL”后面新增一行“jason ALL=(ALL) ALL”;ALL是特殊的关键词,代表任何身份、主机或指令的意思。
上面的指令中,“root”为使用者账号:系统的哪个账号可以使用sudo 这个指令;
第一个“ALL”是登入者的来源主机名:这个主机由哪台主机连接到本Linux主机,默认值root可来自任何一台网络主机;
第二个“(ALL)”是可切换身份:这个账号可以切换成什么身份来下达后续的指令,默认root可以切换成任何人;
第三个“ALL”是可下达的指令:可由该身份下达什么指令?这个指令请务必使用绝对路径!预设root可以切换成任何身份且进行任何指令
用户的特殊shell与PAM模块
特殊的shell,/sbin/nologin
利用/sbin/nologin这个合法shell,可以使某个账号无法登录;如果我们想要某个具有/sbin/nologin的用户知道,他们不能登录主机时,可以新建”/etc/nologin.txt”,并在其中说明不能登录的原因,下次登录就会显示其中的内容。
PAM模块简介
PAM可以说是一套应用程序编程接口(Application Programming Interface,API)它提供了一连串的验证机制,只要用户将验证阶段的需求告知PAM后,PAM就可以回报用户验证的结果。
PAM模块的设置语法
以passwd指令呼叫PAM的重点是/etc/pam.d里面的配置文件,以及配置文件所呼叫的PAM模块进行的验证工作。
/etc/pam.d/passwd配置文件的内容主要分为三个字段:
第一个字段:验证类别(type)
主要分为四种:auth、account、session和password。
第二个字段:验证的控制标志(control flag)
主要分为四种控制方式:required、requisite、sufficient和optional。
第三个字段:PAM的模块与该模块的参数。
常用模块介绍
详细的模块情报:
/etc/pam.d/*:每个程序个别的PAM配置文件;
/lib/security/*:PAM模块文件的实际放置目录;
/etc/security/*:其他PAM环境的配置文件;
/usr/share/doc/pam-*/:详细的PAM说明文件。
几个较常用的模块:
pam_securetty.so:限制管理员只能够从安全的终端机登录;
pam_nologin.so:限制一般用户是否能够登录主机;
pam_selinux.so:针对程序来进行详细管理权限的功能;
pam_console.so:帮你解决一些某些特殊终端接口的权限问题;
pam_loginuid.so:规范系统账号和一般账号的UID;
pam_env.so:用来设置环境变量的一个模块;
pam_UNIX.so:这个模块很复杂且重要,这个模块可以用于验证阶段的认证功能,可以用于授权阶段的账号许可管理,可以用于会议阶段的日志文件记录等;
pam_cracklib.so:用来验证密码强度,包括密码是否在字典中,密码输入错误多次就断掉连接等功能;
Linux主机上的用户信息传递
查询用户:w,who,last,lastlog
w,who:查询目前已登入在系统上面的用户;
last:查询过去登陆过的用户信息;
lastlog:每个账号最近的登入时间。
用户对话:write,mesg,wall
write可以直接将信息传给接受者:write 用户账号 [用户所在终端接口]。
如果不想接受任何信息,可以执行:mesg n。不过对root的信息无影响,解开:mesg y。
对所有系统上的用户传送信息:wall “....”。
用户邮件信箱:mail
基础信件:mail username@localhost -s “邮件标题”。一般来说,如果寄给本机上的用户,可以不加”@localhost“;
利用数据流重定向,可以将已经用vim编辑好的信件内容发出去,命令例子:mail george -s “nice to meet you!” < filename。
收信:直接利用mail,具体操作可以输入”?“来查看;
手动新增用户
一般不建议!
- 鸟哥私房菜 第十四章 Linux账号管理与ACL权限设置
- 鸟哥的Linux私房菜(基础篇)- 第十四章、Linux 账号管理与 ACL 权限配置
- 第十四章、Linux 账号管理与 ACL 权限配置
- 第十四章、Linux 账号管理与 ACL 权限配置
- 第十四章、Linux 账号管理与 ACL 权限配置
- 鸟哥的Linux私房菜10.20 账号管理与ACL权限设定
- 鸟哥的Linux私房菜7-------14章 Linux帐号管理与ACL权限设置
- Linux账号管理与ACL权限设置
- 第14章 Linux账号管理与ACL权限设置
- 鸟哥的 Linux 私房菜第14章-Linux账号关了与ACL权限设定 学习笔记
- 学习Linux 《鸟哥的Linux私房菜 基础学习篇(第三版)》--第14章 Linux账号管理和ACL权限设定1。 笔记
- Linux——Linux账号管理与ACL权限设置
- linux学习笔记:账号管理与ACL权限设置
- 20.Linux 账号管理与 ACL 权限设置
- Linux账号管理与ACL权限设定
- Linux 账号管理与 ACL 权限配置
- Linux账号管理与ACL权限
- 第14章 Linux账号管理与ACL权限设定
- 寂寞让我如此美丽
- Flume fan out(扇出)详解
- 编程实现多边形裁剪 vs2017
- linux中vim命令的细节
- SpringMvc的框架结构介绍
- 鸟哥私房菜 第十四章 Linux账号管理与ACL权限设置
- 每日区块链:万维网缔造者伯纳斯·李:谨防区块链被滥用;微软将为政府提供区块链应用,保障机密数据安全
- 百度加入超级帐本,BATJ全面进场,互联网巨头如何抢滩区块链?
- 一年可以改变很多事
- 列表标记
- cocos2d-android学习文档
- 数据结构——数组—稀疏矩阵及运算
- JVM_16_运行时栈帧结构
- linux中用户信息的管理