3、用户和用户组

1、一些概念
1.安全3A算法

  • Authentication :认证 (密码、指纹等)
  • Authorization : 受权
  • Accouting|Audition :审计 (时候审计,监控)

2.用户usershell

  • 令牌 token, identity

用户登陆系统,成功后,系统会分配给用户一个令牌token,在该用户访问系统中的文件时,文件会审核这个令牌来决定是否给予权限访问该文件。要想得到最新的token,从新登陆。vim

  • Linux用户:username、UID (Linux中用户权限看UID)
  管理员:root,0
  普通用户:1-65535
      系统用户:1-4991-999(centos7)通常指各个进程
      登陆用户:500+,1000+(centos7)

3.组groupcentos

Linxu组:Groupname、GID
管理员组:root,0
  普通组
    系统用户:1-4991-999(centos7)通常指各个进程
    登陆用户:500+,1000+(centos7)

4.Linux安全上下文(context)
进程所可以访问资源的权限取决于进程的运行者的身份(用户身份,用户组身份)。即程序可否访问某个文件是由用户身份决定的而非程序自己。安全

5.group组的类别bash

  • 用户的主要组(primary group)
    • 用户必须属于一个且只有一个主要组
    • 组名同用户名,且仅包含一个用户,又称私有组
  •   用户的附加组(supplementary group)
    •   一个用户能够属于0个或多个附加组

即,一个用户能够加入多个组,该用户的权限是组权限的累加;一个组也能够拥有多个用户less

2、用户和组的配置文件
1./etc/passwd 用户及其属性信息(名称、UID/主组id等)
  cat /etc/passwdssh

以最后一行songtai为例:ide

login name:登陆用名(songtai)
passwd:密码(x)
UID:用户身份编号(500)
GID:登陆默认所在组编号(501)
GECOS:用户全名或注释
home directory:用户主目录(/home/wang)
shell:用户默认使用shell (/bin/bash)

说明:ui

1.帮助文档: man 5 passwd
2.可用chfn命令添加修改第5行的信息
3.uid为1-499的为系统程序进程,最后的shell类型为/sbin/nologin,给程序服务使用的shell,用于建立给服务用的帐号,其能够限制某些用户经过ssh登录到shell上。
4.chsh -s /bin/csh songtai songtai帐号更改shell为csh
5.第二列x为密码,其信息记录在/etc/shadow文件下

2./etc/group 组及其属性信息
  cat /etc/group

man 5 group 帮助文档
group_name:the name of the group
password: the (encrypted) group password. If this field is empty, no password is needed.
GID:the numerical group ID.
附加组名单user_list:a list of the usernames that are members of this group, separated by commas.附加组的用户列表,用“,”隔开

注意:对一个正在登录中的用户,对其修改组等相关信息并不会实时更改,须要从新登录(背后原理:token令牌原理,只有从新登录系统才会分配其一个最新的令牌,其拿着新的令牌才有访问一些配置文件的权限)

3./etc/shadow 用户密码及其相关属性
  cat /etc/shadow

从左至右:

  用户名:加密了的密码:最近一次更改密码的日期:密码的最小使用期限:最大密码使用期限:密码警告时间段:密码禁用期:用户过时日期:保留字段

一、登录用名
二、用户密码:通常用sha512加密
  !!:表示帐号锁定(useradd sst命令新增的sst用户的密码就是这种状况)
  解锁方法:
  ①nano /etc/shadow 将sst用户第二列的两个!!删除掉,这样便可登陆;
  ②usermod -U sst 表示sst这个用户解锁一个!,连续操做两次。(centos6和7 已不支持此类操做)
  ③passwd -e username 表示将第三列的数值变为默认0,意味着下次登陆时必须更改密码(也即让当前口令失效)或chage -d 0 username 效果同passwd -e username
三、从1970年1月1日起到密码最近一次被更改的时间
   echo `date +%s`/3600/24 | bc #表示目前距1970年1月1日的天数

当第三列数值为0时表示用户再下一次登录时须修改密码 四、密码再过几天能够被变动(0表示随时可被变动)
五、密码再过几天必须被变动(99999表示永不过时)
六、密码过时前几天系统提醒用户(默认为一周) 七、密码过时几天后账号会被锁定
八、从1970年1月1日算起,多少天后账号失效

        

4./etc/gshadow 组密码及其相关属性
cat /etc/gshadow

共四列:
群组名称:就是群组名称
群组密码:
组管理员列表:组管理员的列表,更改组密码和成员
以当前组为附加组的用户列表:(分隔符为逗号)

 

相关文件操做处理命令
vipw (与nano /etc/passwd 相同,但具有语法检查功能,vi=vim)

pwck 检查passwd文件语法

vigr (与nano /etc/passwd 相同,但具有语法检查功能,vi=vim)

grpck 检查group文件语法

 

5. /etc/default/useradd 新建用户时默认的一些默认属性配置文件夹

1 GROUP=100 #默认的user组的 GID 
2 HOME=/home #默认的家目录
3 INACTIVE=-1
4 EXPIRE= #默认帐户有效期
5 SHELL=/bin/bash #默认使用的shell
6 SKEL=/etc/skel #默认的一些模板文件夹 (新建帐号的模板文件夹)
7 CREATE_MAIL_SPOOL=yes #默认容许建立邮箱文件夹

注意:可用useradd -D命令可显示或更改默认设置
useradd -D -s SHELL 修改shell类型6
useradd -D -g GROUP 修改默认组

6./etc/skel 默认文件夹相关
每次新建用户时,都会将此文件夹复制到新建用户的家目录下。默认只有3个环境配置文件,能够修改这里面的内容,或者添加几个文件在该文件目录中,之后新建用户时就会自动获取到这些环境和文件。

ll -a /etc/skel/
-rw-r--r--. 1 root root 18 Apr 11 2018 .bash_logout
-rw-r--r--. 1 root root 193 Apr 11 2018 .bash_profile
-rw-r--r--. 1 root root 231 Apr 11 2018 .bashrc

注意:由于删除/etc/skel目录下的文件出现的问题,咱们从新复制一个完整的文件进去便可解决。

 

7.cat /etc/login.defs 密码的默认配置文件
设置用户账号限制的文件。该文件里的配置对root用户无效。
若是/etc/shadow文件里有相同的选项,则以/etc/shadow里的设置为准,也就是说/etc/shadow的配置优先级高于/etc/login.defs。
该文件有不少配置项,文件的默认内容只给出了一小部分,若想知道所有的配置项以及配个配置项的详细说明,能够"man 5 login.defs"查看。

 1 less /etc/login.defs
 2 #QMAIL_DIR Maildir # QMAIL_DIR是Qmail邮件的目录,因此能够不设置它
 3 MAIL_DIR /var/spool/mail # 默认邮件根目录,即信箱
 4 #MAIL_FILE .mail # mail文件的格式是.mail
 5 
 6 # Password aging controls:
 7 PASS_MAX_DAYS 99999 # 密码最大有效期(天)
 8 PASS_MIN_DAYS 0 # 两次密码修改之间最小时间间隔
 9 PASS_MIN_LEN 5 # 密码最短长度
10 PASS_WARN_AGE 7 # 密码过时前给警告信息的时间
11 
12 # 控制useradd建立用户时自动选择的uid范围
13 # Min/max values for automatic uid selection in useradd
14 UID_MIN 1000
15 UID_MAX 60000
16 # System accounts
17 SYS_UID_MIN 201
18 SYS_UID_MAX 999
19 
20 # 控制groupadd建立组时自动选择的gid范围
21 # Min/max values for automatic gid selection in groupadd
22 GID_MIN 1000
23 GID_MAX 60000
24 # System accounts
25 SYS_GID_MIN 201
26 SYS_GID_MAX 999
27 
28 # 设置此项后,在删除用户时,将自动删除用户拥有的at/cron/print等job
29 #USERDEL_CMD /usr/sbin/userdel_local
30 
31 # 控制useradd添加用户时是否默认建立家目录,useradd -m选项会覆盖此处设置
32 CREATE_HOME yes
33 
34 # 设置建立家目录时的umask值,若不指定则默认为022
35 UMASK 077
36 
37 # 设置此项表示当组中没有成员时自动删除该组
38 # 且useradd是否同时建立同用户名的主组。(该文件中并无此项说明,来自于man useradd中-g选项的说明)
39 USERGROUPS_ENAB yes
40 
41 # 设置用户和组密码的加密算法
42 ENCRYPT_METHOD SHA512

3、用户及用户组的相关命令

 

开始建立
shell> echo "userX:x:666" >> /etc/group
shell> echo "userX:x:666:666::/home/userX:/bin/bash" >> /etc/passwd
shell> echo 'userX:!!:17121:0:99999::::' >> /etc/shadow
shell> cp -r /etc/skel /home/userX
shell> chown -R userX:userX /home/userX
shell> chmod -R go= /home/userX
shell> passwd --stdin userX <<< '123456'

 

 用户管理命令:
  useradd
  usermod
  userdel
 组帐号管理命令:
   groupadd
   groupmod
   groupdel

一、useradd 添加用户

 1 useradd -u 66666 songtai   # 表示新建用户songtai,并指定其uid为66666
 2 useradd -o  # 与u一块儿用,id不惟一,用于建立同id用户
 3 useradd -g GID # 指明用户所属基本组(主要组),可为组名,也能够GID  4     useradd -g  songtai  sst   # 建立sst这个用户,并将songtai做为其主组
 5 useradd -c  hello  sst3  # 建立sst3这个用户,并添加hello这个信息在帐户里
 6 useradd -d HOME_DIR   # 以指定的路径(不存在)为家目录
 7 useradd -s SHELL # 指明用户的默认shell程序  8     useradd -s /bin/csh sst4
 9 useradd -G GROUP1[,GROUP2,...] #为用户指明附加组,组须事先存在 10 useradd -N    # 不建立私用组作主组,使用users组作主组
11 useradd -r    # 建立系统用户CentOS 6: ID<500,CentOS 7: ID<1000   用于安装系统应用
12 useradd -m    # 建立家目录,用于系统用户
13 useradd -M    # 不建立家目录,用于非系统用户

 

二、usermod

usermod [options] LOGIN
# option
    -u UID: 新UID
    -g GID: 新主组
    -G GROUP1[,GROUP2,...[,GROUPN]]]:新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使用-a选项
    -s SHELL:新的默认SHELL
    -c 'COMMENT':新的注释信息
    -d HOME: 新家目录不会自动建立;若要建立新家目录并移动原家数据,同时使用-m选项
    -l login_name: 新的名字;
    -L: lock指定用户,在/etc/shadow 密码栏的增长!
    -U: unlock指定用户,将/etc/shadow 密码栏的! 拿掉
    -e YYYY-MM-DD: 指明用户帐号过时日期
    -f INACTIVE: 设定非活动期限

3.userdel
  userdel -r USERNAME: 删除用户家目录

4.grooupadd、groupmod、groupdel
5.chpasswd 批量修改用户口令
第一步:
  建立passwd文件(名字任意、目录任意)
第二步:
  nanopasswd 添加统一格式
  名户名:口令,例如:
  sst1:woshisst1
  sst2:woshisst2
  sst3:woshisst3
第三步:
  cat passwd | chpasswd 批量修改用户口令

6.newusers 批量建立用户
newusers passwd格式文件
实验场景:假如想在要在centos7上建立已经在centos6上存在的批量帐号,怎么作?

1.第一步:cat /etc/passwd 将chentos6上要建立的帐号都复制
2.建立一个list.txt 的文件,将上面的文件复制进这个文件,并保存

3.scp list.txt ip: /data 远程复制附件。
例如:scp list.txt 192.168.199.134: /data 表示将list.txt这个文件复制进192这个ip地址里data这个文件目录下
4.newusers /data/list.txt 批量建立list.txt中的用户

7. id 查看用户相关的ID信息

-u: 显示UID
-g: 显示GID
-G: 显示用户所属的组的ID
-n: 显示名称,需配合ugG使用

 

8. su 切换用户或以其余用户身份执行命令
su [options...] [-] [user [args...]]
su UserName:非登陆式切换,即不会读取目标用户的配置文件,不改变当前工做目录
su - UserName:登陆式切换,会读取目标用户的配置文件,切换至家目录,彻底切换(等价于从新登录一个帐号)
su [-] UserName -c 'COMMAND' 换个身份执行命令

9.passwd 设置密码
passwd: 修改本身的密码
passwd [OPTIONS] UserName: 修改指定用户的密码,仅root用户权限

passwd -l:锁定指定用户
passwd -u:解锁指定用户
passwd -e:强制用户下次登陆修改密码
passwd -n mindays: 指定最短使用期限
passwd -x maxdays:最大使用期限
passwd -w warndays:提早多少天开始警告
passwd -iinactivedays:非活动期限
passwd --stdin:从标准输入接收用户密码 echo "PASSWORD" | passwd--stdin USERNAME

 

10.修改用户密码策略
chage [OPTION]... LOGIN

-d LAST_DAY
-E --expiredateEXPIRE_DATE
-I --inactive INACTIVE
-m --mindaysMIN_DAYS
-M --maxdaysMAX_DAYS
-W --warndaysWARN_DAYS
–l 显示密码策略

示例:
chage-d 0 tom 下一次登陆强制重设密码
chage-m 0 –M 42 –W 14 –I 7 tom
chage-E 2016-09-10 tom

11.gpasswd 更改组密码
gpasswd [OPTION] GROUP

-a user 将user添加至指定组中
-d user 从指定组中移除用户user
-A user1,user2,… 设置有管理权限的用户列表

12.newgrp 临时切换主组
若是用户本不属于此组,则须要此组密码

13.groups、groupmems 更改和查看组成员
groupmems [options] [action]

-g, --group groupname更改成指定组(只有root)

Actions:
-a, --add username 指定用户加入组 -d, --delete username 从组中删除用户 -p, --purge 从组中清除全部成员 -l, --list 显示组成员列表

 

groups [OPTION] [USERNAME]...查看用户所属组列表

14.getent passwd/shadow/group/gshadow
查看passwd/shadow/group/gshadow这几个文件夹

4、练习
一、建立用户gentoo,附加组为bin和root,默认shell为/bin/csh,注释信息为"Gentoo Distribution"
useradd -G root,bin -s /bin/csh -c "Gentoo Distribution" gentoo
注意:
-G 后边跟的附加组之间用,隔开;
注释信息用""
要建立的用户放在最后

二、建立下面的用户、组和组成员关系
名字为admins 的组
用户natasha,使用admins 做为附属组
用户harry,也使用admins 做为附属组
用户sarah,不可交互登陆系统,且不是admins 的成员,natasha,harry,sarah密码都是centos

1 groupadd admins 先建立组admins
2 useradd -G admins natasha
3 useradd -G admins harry
4 useradd -s /sbin/nologin sarah
5 echo centos |passwd --stdin ntatsha 
6 echo centos |passwd --stdin natasha
7 echo centos |passwd --stdin sarah

3.分析安装一个应用时的相关组信息


5、实验
实验:centos6,7上修改/etc/passwd root的UID非0,没法启动,修复之

1. centos6:
第一步,启动时,此界面按a进入

第二步,按a进入下面这个界面,最后敲入init=/bin/bash

第三步,进入到/bin/sh界面,
mount –o rw,remount / 从新挂载/目录
nano /etc/passwd 修改root的UID

第四步,重启便可正常进入centos6

2. centos7:
第一步,启动界面按e进入

第二步,在Linux16那一行的最后敲入 init=/bin/bash,再按ctrl+x

第三步,

mount -orw,remount /
nano /etc/passwd

第四部,将root的uid改成0,重启便可

转自:https://blog.csdn.net/tai20031229/article/details/83824983

相关文章
相关标签/搜索