用户标识符UID、GID

用户的账号信息,主要是指UID对应。组和GID对应

检查系统中是否存在用户bin:id bin

登录shell验证账号密码的步骤:找到/etc/passwd核对是否存在账号,存在则核对UID(/etc/passwd)、GID(/etc/group)。该账号的家目录和shell读出。核对密码。

系统账号如bin、daemon、adm、nobody做系统运行功能,等不应该删除。

/etc/passwd下的显示格式:账号名,密码,UID、GID、说明、家目录、使用的shell。

密码存在于/etc/shadow替代,UID为0表示系统管理员,为1-200为系统设置的系统账号,201-999为用户建立的系统账号,

系统账号通常不可登陆,用户自行设立的可登陆账号,在1000-60000等

GID和/etc/group有关,规范组名与GID的对应

/etc/shadow下的显示格式:账号名称、密码、最近的修改日期天数、密码不可修改的天数、密码需要重新修改的天数、

密码需要修改期限的警告天数、密码过期后账号的宽限时间、账号的失效日期(天)、保留

最近修改日期天数转换为实际日期:chage

最近修改日期与1970年1月1日相差的天数:echo $(( $(date --date="2019/4/20" +%s)/86400 ))

密码过期后账号的宽限时间天数内,登录系统提示修改密码才可使用,超过过期特性后,账号失效

账号失效期后,无法使用此账号

密码忘记的修改:root使用passwd命令修改一般用户的密码

root的密码忘记可以使用单人维护模式下给予root的bash接口通过passwd修改,也可使用Live CD修改/etc/shadow下的root密码设置为空。

查询shadow的加密机制:authconfig --test | grep hashing,例如SHA512。是SHA512,$6,盐c2uvwgf,但是怎么生成的结果不对啊啊啊啊

/etc/group文件结构:组名、用户组密码、GID、该用户组支持的账号

其中的密码在/etc/gshadow中。

新版的Linux已经不会将初始的用户组群(不一定和用户名相同)加入第四个字段了。

http://cn.linux.vbird.org/linux_basic/0410accountmanager_1.php

有效用户组

用户拥有有效用户组的总权限。有效用户组为用户在建立文件或目录的首选用户组。

初始用户组

用户登录后立即拥有的组和权限。通过/etc/passwd找到GID,就是初始化的用户组ID。

之后找到/etc/group下的组ID,对应的组ID名称,之后在/etc/gshadow中找到每个用户组下,拥有的用户。

输出用户组:groups。groups下输出的第一个用户组为有效用户组

 newgrp 有效用户组的切换,登录一个新组,以另一个shell提供的功能(用户的环境设置不会有影响)。

如:newgrp users ,之后建立的文件默认组为users。使用完后退出该新的shell。

用户想要加入用户组的方式可以用root的usermod加入

也可以使用用户组管理员的gpasswd加入用户到用户组

 /etc/gshadow文件结构:组名、密码栏、用户组管理员账号、加入该用户组支持的所属账号(与/etc/group相同)。

密码栏上的!表示该用户组不具有用户组管理员

 useradd新增用户

-u后接UID,指定UID       -g指定初始用户组         -G该账号还可以加入的用户组     -M强制,不要建立使用者的家目录

-c用户的说明信息       -r建立系统账号        -s指定使用的shell -D默认值

如建立账户bai1:useradd bai1

建立指定UID1500的指定用户组users的用户bai2:useradd -u 1500 -g users bai2

通过grep bai2 /etc/passwd /ect/shadow /etc/group 查看建立情况

建立系统账号:useradd -r bai3#不会主动建立家目录

查看useradd的默认值:useradd -D。

显示的分别为:默认用户组、默认家目录、密码失效日、账号失效日、默认shell、参考目录、是否主动建立邮箱。

CentOS使用私有的用户组机制,不会参考默认的用户组。公共用户组机制的发行版使用共享的用户组users(100)。

用户家目录参考基准目录一般为/etc/skel。该用户环境变量为其下的~/.bashrc。

为用户建立的mail在路径/var/spool/mail/username下

UID、GID密码参数参考在:/etc/login.defs

显示参数:cat /etc/login.defs | sed 's/#.*$//g' | sed '/^$/d'

文件内容为:mailbox所在目录、shadow(456字段 。密码不可修改的天数、密码需要重新修改的天数、密码需要修改期限的警告天数、

UID、GID指定的数值范围。每次新增查找存在的最大值,加1.

用户家目录的设置开关、建立家目录时的权限UMASK值

删除用户时的如果没有其他人隶属该用户组,是否删除该用户组的开关、使用的密码加密算法

使用useradd添加用户时,至少会参考/etc/default/useradd  /etc/login.defs  /etc/skel/*

 设置密码passwd

--stdin 前一个管道的数据作为输入,密码前加!锁定 -u解锁 -S列出密码相关参数

-n多少天不可修改密码 -x 天数内必须修改密码,-w过期前的警告天数 -i密码失效日期

密码检验使用PAM模块。管理机制写在/etc/pam.d/passwd中,

其中的pam.cracklib.so测试密码信息并替换掉./etc/login.defs内的PASS_MIN_LEN

例如:passwd bai1设置密码  passwd修改自己的密码

如:echo "2" | passwd --stdin bai2修改密码并不用再次输入,适合批量设置。

passwd -S bai2; passwd -x 60 -i 10 bai2设置参数日期

passwd -l 失效 passwd -u生效

 chage显示密码参数并修改

-l列出详细参数

-d修改最近修改日期,-E等自行man

如:显示密码详细参数bai2  chage -l bai2

设置用户第一次登陆强制修改密码:

useradd bai3 ;echo "bai3" | passwd --stdin bai3; chage -d 0 bai3; chage -l bai3

usermod账号数据的相关微调,在创建账号useradd之后。

-c设置账号的说明,-d设置家目录 -e设置失效日期

例如:添加说明栏:usermod -c "it's my test" bai4

设置账号失效日期:usermod -e "2019-5-1" bai4

 userdel删除用户的相关数据

-r连同家目录一起删除

例如:userdel -r bai4

非必要情况可以将失效日期设置为0而不是删除。

删除为了完整删除(包括邮箱等),应查明系统中的相关文件:如find / -user bai4,之后再执行userdel -r bai4

id查看用户的UID、GID等,如id root

finger查看用户相关信息

例如:finger bai#显示登录情况,家目录,全名,邮箱,计划等数据。

建立计划文件,再次查询会显示计划:echo "tired"  > ~/.plan

找出目前的使用者和登录信息:finger

chfn修改用户的一些信息

如:chfn自己的相关信息,住址,电话等。

相关信息更新到/etc/passwd中

chsh修改自己的Shell

-l列出可使用的shell -s设置自己的shell

如:chsh -l;chsh -s /bin/csh ; grep bai /etc/passwd

设置自己的shell为csh

groupadd 新增用户组

-g用于指定GID  -r建立系统用户组

如:新建用户组:groupadd group1

groupmod 修改已经建立好的组参数

-g修改GID  -n修改组名称

如:groupmod -g 201 -n mygroup group1

groupdel删除用户组

如:groupdel mygroup #作为初始化的用户组无法删除,

可以通过删除相应的初始化账户或者修改初始化账户的GID

gpasswd用户组管理员功能

-A将组交给某用户管理 没有参数表示设立密码

例如:groupadd testgroup ; gpasswd testgroup;#设立密码

gpasswd -A bai testgroup 设立用户bai为testgroup的管理者

在bai用户下:gpasswd -a bai2 testgroup#添加bai2到用户组下。

一个示例:http://cn.linux.vbird.org/linux_basic/0410accountmanager_2.php

Windows中有活动目录,Linux为了使不同主机使用同一组账户密码,使用如LDAP,NIS等验证。

CentOS提供了一个为authconfig-tui命令,进行身份验证系统配置。

ACL访问控制列表

控制 用户 用户组 默认属性的权限。完成针对单人的权限

检查是否支持ACL : dmesg | grep -i acl

setfacl设置某个文件或目录的ACL选项

-m设置参数给文件使用 -x删除参数  -b删除所有ACL设置 -d设置ACL默认参数,只对目录有效

touch acltest;ll acltest

如:setfacl -m u:bai:rx acltest;ll acltest;#利用 u 用户 权限 的方式完成设置

setfacl -m u:bai:- acltest;ll acltest;#设置权限为空

如:setfacl -m u::rwx acltest#使用者一栏为空为拥有者的权限设置

如:setfacl -m g:mygroup1:rx acltest#利用 g 用户组 权限的方式完成设置

如:setfacl -m m:r#设置此文件默认的有效权限,用户和用户组在默认有效权限内生效。

让ACL权限能够被子目录继承示例:setfacl -m d:u:bai:rx /srv/test#d:[u|g]:[user|group]:权限

删除全部ACL信息-b,删除某一个ACL信息示例:setfacl -x u:bai dirc;setfacl d:u:bai dirc

getfacl获取某个文件或目录的ACL选项

查看文件的ACL信息:getfacl acltest

切换用户身份

su 切换用户身份,-切换root或加上用户切换  -m使用目前的环境设置的切换  -c仅执行一次命令

单纯使用su命令切换到管理员使用非登录的shell方式,环境变量为非登录方式下的。

使用su - 则切换了管理员。

使用su - -c "head -n 3 /etc/shadow" 切换一次

切换用户bai1 su - bai1

 sudo 仅有规范到/etc/sudoers内的用户能够执行sudo

-u加欲切换的使用者

如切换一个不能登录shell的账户执行建立文件的命令:sudo -u sshd touch /tmp/mysshd

执行sudo首先查找/etc/sudoers,之后输入用户自己的密码确认,成功即可执行命令了

visudo编辑/etc/sudoers(设置过语法)

添加sudo用户时,使用visudo,在98行所有找到root相关,然后复制并写入新值。如下:

内容为:用户账号,来源主机名,可切换的身份,执行的命令(使用绝对路径)。

修改/etc/sudoers中的第111行,并去掉#,其中的%代表后接用户组。

usermod -a -G wheel bai2#将bai2用户增加了wheel的次要用户组支持(而不是设置为次要用户组)

使用id查看一下吧,这样可以在bai2下用sudo了

sudo的免除密码方式:%wheel ALL=(ALL)  NOPASSWD:ALL通过NOPASSWD方式免除密码

sudo中的用户切换时的执行命令进行限制

myuser1 ALL=(root) !/usr/bin/passwd, /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root

其中的!表示不可执行,这样可以执行不修改root密码的命令了

 通过别名创建visudo

User_Alias ADMPW = pro1, pro2, pro3, myuser1, myuser2
Cmnd_Alias ADMPWCOM = !/usr/bin/passwd, /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root
ADMPW ALL=(root) ADMPWCOM

User_Alias 用户别名,Cmnd_Alias 命令别名, Host_Alias主机别名。都使用大写字母作为别名。

sudo两次的命令间隔大于5分钟需要重新输入密码

sudo su -

用户的特殊shell:、nologin

位于/sbin/nologin可以建立/etc/nologin.txt文档,说明不能登录的原因。

PAM(插入式验证模块)是一套应用程序的编程接口,只需要将PAM输入参数,然后返回验证结果

如执行passwd命令,调用PAM模块,PAM找到/etc/pam.d/passwd内的设置,引用相关模块并验证,将验证结果返回传递passwd。

passwd文件中的参数说明为:验证类别、控制标准、PAM模块与该模块的参数

验证模块的类型有:按照顺序:auth(认证)、account(账号授权)、password(密码)、session(会话)、

控制标识:required(验证成功或失败都继续,记录标志)requisite(失败终止,成功继续,都带取标记)

sufficient(成功终止,失败继续,都带取标记)optional(显示信息)

模块简介

/etc/pam/d/*存放每个程序PAM配置文件,对应程序名

/lib64/security/*PAM模块文件实际放置目录

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

/usr/share/doc/pam-*/,详细的PAM说明文件

root无法以telnet登录系统是因为PAM模块中的一些限制?

在/etc/security下有相关文件:

limits.conf系统管理员可以通过统一的PAM来管理:

在文件后有关于账号、限制根据(soft为警告)、限制选项、限制值(单位KB)

如:限制账户90M警告,100M大小:vi /etc/security/limits.conf

bai1 soft fsize 90000
bai1 hard fsize 100000

ulimit -a查看

如:

限制 pro1 群组,每次仅能有一个用户登陆系统
@pro1 hard maxlogins 1

这些配置在下一次登录系统生效。

 /var/log/sercure、/var/log/messages是PAM模块的数据记录和问题发生情况的记录点。

查询目前登录系统的人员:w,who

查询用户登录时间:last、lastlog。

用户对谈:wirte、mesg、wall

如,先用who查询,然后:write bai tty2 \n 之后输入内容,发送。ctrl+d结束

mesg n 拒绝其他人发来的信息(除root)mesg y重新接受

wall广播发送消息,如:wall “hel”

用户邮箱:mail

mail -s "邮件标题" username@localhost 即可如:

mail -s “test” bai1 之后输入内容(本机上的用户不需要全规范。)

mail可以利用管道命令和 < ,先写好文件,然后再发送。如 xxxxx   < filename

输入mail查询邮件,为N表示未阅读。输入?进行帮助。

CentOS下创建大量账号:

pwck  检查 /etc/passwd 账号配置文件信息。比对 /etc/passwd /etc/shadow 的信息是否一致等

pwconv  比对 /etc/passwd 及 /etc/shadow ,将 /etc/passwd 账号没有对应的 /etc/shadow,创建该账号的 /etc/shadow 数据;

若 /etc/passwd 内存在加密后的口令数据时,则 pwconv 会将该口令栏移动到 /etc/shadow 内,并将原本的 /etc/passwd 内相对应的口令栏变成 x

pwunonv  将 /etc/shadow 内的口令栏数据写回 /etc/passwd 当中, 并且删除 /etc/shadow 文件。

chpasswd  读入未加密前的口令,并且经过加密后, 将加密后的口令写入 /etc/shadow 当中(echo “bai:1” |chpasswd)

使用大量账号模板创建账号:

http://cn.linux.vbird.org/linux_basic/0410accountmanager_7.php

  1. #!/bin/bash
  2. #
  3. # 这支程序主要在帮您创建大量的账号之用,更多的使用方法请参考:
  4. # http://cn.linux.vbird.org/linux_basic/0410accountmanager.php#manual_amount
  5. #
  6. # 本程序为鸟哥自行开发,在 CentOS .x 上使用没有问题,
  7. # 但不保证绝不会发生错误!使用时,请自行负担风险~
  8. #
  9. # History:
  10. # // VBird 刚刚才写完,使用看看先~
  11. # // VBird 加入一些语系的修改与说明,修改口令产生方式 (用 openssl)
  12. export LANG=zh_TW.big5
  13. export PATH=/sbin:/usr/sbin:/bin:/usr/bin
  14. accountfile="user.passwd"
  15.  
  16. # . 进行账号相关的输入先!
  17. echo ""
  18. echo "例如我们昆山四技的学号为: 4960c001 到 4960c060 ,那么:"
  19. echo "账号开头代码为 :4"
  20. echo "账号层级或年级为 :960c"
  21. echo "号码数字位数为(001~060):3"
  22. echo "账号开始号码为 :1"
  23. echo "账号数量为 :60"
  24. echo ""
  25. read -p "账号开头代码 ( Input title name, ex> std )======> " username_start
  26. read -p "账号层级或年级 ( Input degree, ex> 1 or enter )=> " username_degree
  27. read -p "号码部分的数字位数 ( Input \# of digital )======> " nu_nu
  28. read -p "起始号码 ( Input start number, ex> 520 )========> " nu_start
  29. read -p "账号数量 ( Input amount of users, ex> 100 )=====> " nu_amount
  30. read -p "口令标准 1) 与账号相同 2)随机数自定义 ==============> " pwm
  31. if [ "$username_start" == "" ]; then
  32. echo "没有输入开头的代码,不给你运行哩!" ; exit
  33. fi
  34. # 判断数字系统
  35. testing0=$(echo $nu_nu | grep '[^0-9]' )
  36. testing1=$(echo $nu_amount | grep '[^0-9]' )
  37. testing2=$(echo $nu_start | grep '[^0-9]' )
  38. if [ "$testing0" != "" -o "$testing1" != "" -o "$testing2" != "" ]; then
  39. echo "输入的号码不对啦!有非为数字的内容!" ; exit
  40. fi
  41. if [ "$pwm" != "" ]; then
  42. pwm=""
  43. fi
  44.  
  45. # . 开始输出账号与口令文件!
  46. [ -f "$accountfile" ] && mv $accountfile "$accountfile"$(date +%Y%m%d)
  47. nu_end=$(($nu_start+$nu_amount-))
  48. for (( i=$nu_start; i<=$nu_end; i++ ))
  49. do
  50. nu_len=${#i}
  51. if [ $nu_nu -lt $nu_len ]; then
  52. echo "数值的位数($i->$nu_len)已经比你配置的位数($nu_nu)还大!"
  53. echo "程序无法继续"
  54. exit
  55. fi
  56. nu_diff=$(( $nu_nu - $nu_len ))
  57. if [ "$nu_diff" != "" ]; then
  58. nu_nn=
  59. nu_nn=${nu_nn::$nu_diff}
  60. fi
  61. account=${username_start}${username_degree}${nu_nn}${i}
  62. if [ "$pwm" == "" ]; then
  63. password="$account"
  64. else
  65. password=$(openssl rand -base64 )
  66. fi
  67. echo "$account":"$password" | tee -a "$accountfile"
  68. done
  69.  
  70. # . 开始创建账号与口令!
  71. cat "$accountfile" | cut -d':' -f1 | xargs -n useradd -m
  72. chpasswd < "$accountfile"
  73. pwconv
  74. echo "OK!创建完成!"

哎呦真多,终于完了!

别人的Linux私房菜(14)Linux账号管理和ACL权限设置的更多相关文章

  1. 《鸟哥的linux私房菜》 - linux命令温故而知新

    在公司的某角落里,看到了<鸟哥的linux私房菜>,顿时想看看是什么鬼. 其他时候还要自己去买才有,现在正好,比图书馆方便.看完了,写点啥! 编辑器很重要,一个vim就主要是我的使用方向: ...

  2. 第14章 Linux账号管理与ACL权限设置

    Linux的账号与用户组 用户标识符:UID与GID 每一个文件都有一个所有者ID和用户组ID,当我们需要查看文件属性时,系统会根据/etc/passwd和/etc/group的内容,找到对应UID和 ...

  3. 《鸟哥的Linux私房菜》学习笔记(5)——权限管理

    一.权限的基本概念                                                   权限:访问计算机资源或服务的访问能力. Linux中,每一个资源或者服务的权限, ...

  4. Linux 账号管理及ACL权限设置,PAM模块简介

    有效群组与初始群组: groups:有效与支持群组的观察 newgrp:有效群组的切换,后面接群组名称 在passwd文件中记录的GID就是默认的GID,就是初始群组 /etc/passwd文件结构 ...

  5. 鸟哥的Linux私房菜-----13、账号管理

  6. 鸟哥的Linux私房菜笔记第五章,文件权限与目录配置(二)

    Linux目录配置的依据--FHS 因为利用Linux来开发产品的公司太多,例如,CentOS.Ubuntu.ReHat...,导致了配置文件存放的目录没有统一的标准.后来就有了FHS(Filesys ...

  7. linux 私房菜 CH7 Linux 档案与目录管理

    路径 ``` . 此层目录 .. 上一级目录 前一个工作目录 ~ 当前用户的家的目录 ``` 变换目录 cd 显示目录 pwd [-P] -P 显示出确实的路径,而非使用链接 (link) 路径. 创 ...

  8. linux 私房菜 CH6 Linux 的档案权限与目录配置

    查看文件属性 ls -al 第一栏:类型与权限 d:目录: -:档案: l:链接档: b:可随机存取装置: c:一次性存取装置: 第二栏:有多少档名连结到此节点 第三栏:拥有者 第四栏:所属群组 第五 ...

  9. linux 私房菜 CH8 linux 磁盘与文件系统管理

    索引式文件系统 superblock 记录此系统的整体信息,包括 inode/block 的总量.使用量.剩余量,以及文件系统的格式与相关信息等: inode 记录档案的属性,一个档案占用一个 ino ...

随机推荐

  1. Linux命令:let

    语法 let  expr [expr ...] 说明 计算c的算术表达式.详细说明请参考<Bash参考指南-6.5 shell算术运算>

  2. 超详细的遗传算法(Genetic Algorithm)解析

    https://blog.csdn.net/u010451580/article/details/51178225 https://www.jianshu.com/p/c82f09adee8f 00 ...

  3. 2018-2019-2 20175213实验一 《Java开发环境的熟悉》实验报告

    第一部分实验要求:1 建立“自己学号exp1”的目录2 在“自己学号exp1”目录下建立src,bin等目录3 javac,java的执行在“自己学号exp1”目录4 提交 Linux或Window或 ...

  4. day49 定位布局和过渡动画

    复习 1.盒子在父级水平居中 margin: 0 auto; 2.文本样式操作 color: red; text-align: center; font: 900 30px/200px "S ...

  5. 安装IDEA的历程

    安装IDEA的历程 写这篇博客的主要目的就是记录自己安装IDEA的"复杂"过程,顺便给一些需要帮助的人提供一些帮助,以及让他们可以少走一些弯路.之所以说"复杂" ...

  6. Floyd-Warshall算法计算有向图的传递闭包

    Floyd-Warshall算法是用来求解所有结点对最短路径的知名算法,其还有一个重要的用途就是求解有向图的传递闭包,下面就让我来介绍算法导论中关于有向图闭包计算的有关记载吧. 有向图的传递闭包:我们 ...

  7. 大数据学习笔记4 - Hadoop的优化与发展(Hadoop 2.0)

    前面介绍了Hadoop核心组件HDFS和MapReduce,Hadoop发展之初在架构设计和应用性能方面仍然存在不足,Hadoop的优化与发展一方面体现在两个核心组件的架构设计改进,一方面体现在Had ...

  8. jquery 中dataTable显示加载中,图片或文字

    引入js文件 <script type="text/javascript" src="${basePath}/lib/datatables/1.10.0/jquer ...

  9. 矢量水听器 近场 远场 --------------------常规波束形成,MVDR的比较

    摘自<水平线阵的反卷积常规波束形成>,IRONMAN--------------------------------------------------- 在常规的波束形成中,是将阵列上的 ...

  10. 一篇教你看懂spring bean工厂和aop

    这篇文章为spring回顾总结的第二篇,本篇主要分为两个部分,分别是spring的bean工厂的实现.spring的aop实现原理,这两部分也是面试当中问的比较多的. spring的bean工厂的实现 ...