ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

用户及权限管理

2022-07-12 18:04:45  阅读:136  来源: 互联网

标签:... password 管理 -- 用户 etc 权限 root


用户及权限管理

1. Linux的安全模型

1.1 资源分配

通过比对事先存储的,与登录提供的信息是否一致;

  • Authentication:认证,验证用户身份;
  • Authorization:授权,不同的用户设置不同的权限;
  • Accounting | Audition :审计;

1.2 加密算法

  1. 对称加密:加密的密钥和解密的密钥是一对;
  2. 公开密钥加密:用公钥加密,用私钥解密;
  3. 单向加密:只能加密,不能解密;提取数据特征码;
    1. 定长输出;
    2. 雪崩效应;
      1. 只要密码发生微小的改变,加密后的密文会完全不同;
  4. 算法:
    1. MD5:message digest,128bits
    2. sha:secure hash algorithm,168bits
    3. sha224
    4. sha256
    5. sha384
    6. sha512

1.3 用户

Linux中每个用户是通过UID来标识的。

让进程以用户的身份(权限)来获取资源

  • 管理员:root,0
  • 普通用户:1-60000自动分配
    • 系统用户:1-999(centos7以后)1-499(centos6以前)
    • 可登录用户:1000(centos7以后)500+(centos6以前)

1.4 用户组

Linux中每个组是通过GID来标识的。

让守护进程组的身份(权限)来获取资源

  • 管理员组:root,0
  • 普通组:1-60000自动分配
    • 系统组:1-999(centos7以后)1-499(centos6以前)
    • 登录用户组:1000(centos7以后)500+(centos6以前)

1.5 用户与组的关系

私有组:组名同用户名,且只包含一个用户;

公有组:组内包含了多个用户;

1.6 安全上下文

Linux的安全上下文(context):进程以进程发起者的身份运行,能够访问资源的权限取决于进程运行者的身份;

2. 用户和组的配置文件

2.1 用户和组的主要配置文件

  • /etc/passwd
  • /etc/shadow
  • /etc/group
  • /etc/gshadow

2.2 passwd文件格式

name:password:UID:GID:GECOS:directory:shell

2.3 shadow文件格式

login name:encrypted password:date of last password change:minimum password age:maxinum password age:password warning period:password inactivity period:account expiration date:reserve filed

2.4 group文件格式

group_name:password:GID:user_list

2.5 gshadow文件格式

group:encrypted password:administrators:members

2.7 关于文件操作命令

  • vipw和vigr
  • pwck和grpck

3. 用户和组的管理命令

3.31 useradd命令

useradd [options] LOGIN
useradd -D
useradd -D [options]

-d, --home-dir HOME_DIR 创建用户时改变指定的家目录
-c, --comment COMMENT 对用户说明
-D, --defaults 
-e, --expiredate EXPIRE_DATE
-f, --inactive INACTIVE
-g, --gid GROUP
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]
-M, --no-create-home
-r, --system 
范例:
注意:apache组,必须事先存在
~]# useradd -r -u 48 -g apache -s /sbin/nologin -d /var/www -c "Apache" apache

useradd命令默认值设定由/etc/default/useradd定义

~]# cat /etc/default/useradd 
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes

显示或更改默认值

useradd -D
useradd -D -s SHELL
useradd -D -b BASE_DIR
useradd -D -g GROUP

新建用户的相关文件

  • /etc/default/useradd
  • /etc/skel/*
  • /etc/login.defs

批量创建用户

newusers - update and create new users in batch

例:
newusers /etc/passwd内容格式式的文件
	pw_name:pw_passwd:pw_uid:pw_gid:pw_gecos:pw_dir:pw_shell

批量修改用户口令

chpasswd - update passwords in batch mode

the format:

       user_name:password
例:
echo username:passwd | chpasswd

3.2 usermod命令

usermod - modify a user account
SYNOPSIS
       usermod [options] LOGIN
-e, --expiredate EXPIRE_DATE format YYYY-MM-DD
-d, --home HOME_DIR 
	If the -m option is given, the contents of the current home directory will be
  moved to the new home directory
-f, --inactive INACTIVE /etc/shadow的第七列,设定非活动期限
-g, --gid GROUP
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]] 如果不加-a选项,原来的组将会被覆盖
-l, --login NEW_LOGIN 新的名字
-L, --lock
-m, --move-home 经常与-d一起组合使用
-u, --uid UID
-U, --unlock
-L, --lock

3.3 userdel命令

userdel - delete a user account and related files
SYNOPSIS
       userdel [options] LOGIN
-r --remove 删除用户时同时移除用户的家目录和邮件目录文件
-f --force 强制

3.4 查看用户的相关ID信息:id命令

id - print real and effective user and group IDs
SYNOPSIS
       id [OPTION]... [USER]
-g, --group 仅仅只显示有效组id号
-G, --groups  print all group IDs
-n, --name 打印名称,需配合ugG使用
-u, --user

3.5 su

即switch user

切换用户的方式:

  • su USERNAME:非登录式切换,不会读取目标用户的环境配置文件
  • su - USERNAME:登录式切换,读取目标用户的家目录,切换至家目录,完全切换
SYNOPSIS
       su [options...] [-] [user [args...]]
-c command, --command=command
-l --login su -l USERNAME相当于 su - USERNAME

3.6 设置密码

SYNOPSIS
       passwd [options] USERNAME
-e DATE, --expire 强制用户下次登录时修改密码
-d:删除指定用户密码
-l:锁定指定用户
-u:解锁指定用户
-n DAYS mindays 密码最短使用期限
-x DAYS maxdays 最大使用期限
-w DAYS warndays 提前多少天开始警告
-i DAYS inactivedays 非活动期限
--stdin 从标准输入接收用户密码
例:
~]# echo "PASSWORD" | passwd --stdin USERNAME

3.7 修改用户密码策略:chage

chage - change user password expiry information
SYNOPSIS
       chage [options] LOGIN
-d, --lastday LAST_DAY format YYYY-MM-DD,对应/etc/shadow的第三栏,如果为0的话,强制用户下次登陆时修改密码
-m --mindays MIN_DAYS 
-M --maxdays MAX_DAYS
-W --warndays WARN_DAYS
-E, --expiredate EXPIRE_DATE 用户的有效期
-I, --inactive INACTIVE 密码过期后的宽限期
-l, --list 显示密码策略

范例:

~]# tail -1 /etc/shadow
student:$6$nLWqd9gU$HPlrRyBlLExIeCznM448X9ZFdaslHsKkm80KD0eBA6vTwTYgfRqSqcti4uO9PdWNzFxAoiaDOJ7xXC/cSyjre/:19183:0:99999:7:::
~]# chage -l student
Last password change					: Jul 10, 2022
Password expires					: never
Password inactive					: never
Account expires						: never
Minimum number of days between password change		: 0
Maximum number of days between password change		: 99999
Number of days of warning before password expires	: 7
~]# chage -m 3 -M 42 -W 14 -I 7 -E 2020-10-10 student
~]# chage -l student
Last password change					: Jul 10, 2022
Password expires					: Aug 21, 2022
Password inactive					: Aug 28, 2022
Account expires						: Oct 10, 2020
Minimum number of days between password change		: 3
Maximum number of days between password change		: 42
Number of days of warning before password expires	: 14
~]# getent shadow student
student:$6$nLWqd9gU$HPlrRyBlLExIeCznM448X9ZFdaslHsKkm80KD0eBA6vTwTYgfRqSqcti4uO9PdWNzFxAoiaDOJ7xXC/cSyjre/:19183:3:42:14:7:18545:
~]# chage -d 0 student
~]# chage -l student
Last password change					: password must be changed
Password expires					: password must be changed
Password inactive					: password must be changed
Account expires						: Oct 10, 2020
Minimum number of days between password change		: 3
Maximum number of days between password change		: 42
Number of days of warning before password expires	: 14

3.8 用户相关其他命令

  • chsh 指定shell
  • chfn 指定个人信息
  • finger 可查看用户个人信息

范例:

~]# chfn student
Changing finger information for student.
Name []: zsl
Office []: szpt
Office Phone []: 1234XXX34
Home Phone []: 134579XXX

Finger information changed.
~]# finger student
Login: student        			Name: zsl
Directory: /home/student            	Shell: /bin/bash
Office: szpt, 1234XXX34			Home Phone: 134579XXX
Last login Sun Jul 10 20:20 (CST) on pts/1
No mail.
No Plan.
~]# getent passwd student
student:x:4003:4003:zsl,szpt,1234XXX34,134579XXX:/home/student:/bin/bash

3.9 有关于组的相关命令

3.9.1 groupadd

groupadd [OPTION]... group_name

常见选项:
-g GID 指明GID号;[GID_MIN, GID_MAX]
-r 创建系统组,CentOS 6之前: ID<500,CentOS 7以后: ID<1000

范例:

groupadd -g 48 -r apache

3.9.2 groupmod 修改组

格式:

groupmod [OPTION]... group

常见选项:
-n group_name: 新名字
-g GID: 新的GID

3.9.3 groupdel 删除组

格式:

groupdel [OPTIONS] GROUP

常见选项: -f, --force 强制删除,即使是用户的主组也强制删除组

3.9.4 gpasswd

设定组密码,可以有效防止其他未加入该组的用户使用该组的身份创建文件或目录;

gpasswd [OPTION] GROUP

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

范例:

~]# groupadd admins
[root@client ~]# gpasswd -a zhao admins
Adding user zhao to group admins
[root@client ~]# id zhao
uid=4004(zhao) gid=4004(zhao) groups=4004(zhao),5002(admins)
**注意:**groups - print the groups a user is in
~]# groups admins
groups: admins: no such user
[root@client ~]# groups zhao
zhao : zhao admins
~]# getent group admins
admins:x:5002:zhao
~]# gpasswd -d zhao admins
Removing user zhao from group admins
~]# groups zhao
zhao : zhao
[root@client ~]# id zhao
uid=4004(zhao) gid=4004(zhao) groups=4004(zhao)
~]# getent group admins
admins:x:5002:

3.9.5 临时切换主组:newgrp

主组视为有效组,切换其他组时,如果其他组设定了密码,则需要输入密码才能完成切换。

格式:

newgrp [-] [group]

如果使用 - 选项,可以初始化用户环境

3.9.6 更改和查看组成员:groupmems

格式:

groupmems [options] [action]

常见选项:
-g, --group groupname 更改为指定组 (只有root) actions:
-a, --add username 指定用户加入组
-d, --delete username 从组中删除用户
-p, --purge 从组中清除所有成员
-l, --list 显示组成员列

例:

~]# groupmems -l -g admins
~]# groupmems -a zhao -g admins
~]# groupmems -l -g admins
zhao 
~]# groupmems -d zhao -g admins
~]# groupmems -l -g admins

3.10 习题

创建用户gentoo,附加组为bin和root,默认shell为/bin/csh,注释信息为"Gentoo Distribution" ;
创建下面的用户、组和组成员关系: 名字为webs 的组 用户nginx,使用webs 作为附加组 用户varnish,使用webs 作为附加组 用户mysql,不可交互登录系统,且不是webs 的成员,nginx,varnish,mysql密码都是magedu;

4 权限管理

4.1 chmod命令

chmod - change file mode bits
SYNOPSIS
1.MODE表示:
	chmod [OPTION]... MODE[,MODE]... FILE...
			赋权表示法:直接操作一类用户的所有权限位
					u= ,g= ,o= ,a= ;
			授权表示法:	直接操作一类用户的一个权限位
					u+ ,u- ;
					g+ ,g- ;
					...
2.八进制表示法:
	chmod [OPTION]... OCTAL-MODE FILE...
			chmod 555 FILE(DIRCTORY)...
3.获取某文件或目录相同的权限:
	chmod [OPTION]... --reference=RFILE FILE...

--reference=RFILE
              use RFILE's mode instead of MODE values
**-R, --recursive**
              change files and directories recursiv

范例:

[root@client data]# ll dir
total 0
-rw-r--r--. 1 root root 0 Jul 10 21:57 f1.txt
-rw-r--r--. 1 root root 0 Jul 10 21:57 f2.txt
drwxr-xr-x. 2 root root 6 Jul 10 21:57 subdir
[root@client data]# ll -d dir
drwxr-xr-x. 3 root root 48 Jul 10 21:57 dir
[root@client data]# chmod -R  a+x dir
[root@client data]# ll -d dir
drwxr-xr-x. 3 root root 48 Jul 10 21:57 dir
[root@client data]# ll dir
total 0
-rwxr-xr-x. 1 root root 0 Jul 10 21:57 f1.txt
-rwxr-xr-x. 1 root root 0 Jul 10 21:57 f2.txt
drwxr-xr-x. 2 root root 6 Jul 10 21:57 subdir

面试题:

执行 cp /etc/issue /data/dir 所需要的最小权限?
/bin/cp 需要x权限
/etc/ 需要x权限 /etc目录数量没有变化,不需要w权限
/etc/issue 需要r 权限 复制文件,至少需要能够看到文件的内容
/data 需要x权限 要进到dir目录
/data/dir 需要w,x 权限 dir目录下的文件或子目录的数量增多或减少了

4.2 chown命令

chown - change file owner and group
SYNOPSIS
       chown [OPTION]... [OWNER][:[GROUP]] FILE...
       chown [OPTION]... --reference=RFILE FILE...
-R, --recursive
              operate on files and directories recursively

4.3 新建文件或目录的默认权限

umask:文件权限的反向掩码,遮罩码;

Display or set file mode mask.
umask 查看当前的umask
umask MASK:设置umask

范例:

umask 002
umask u=rw,g=r,o=

练习:

当用户docker对/testdir 目录无执行权限时,意味着无法做哪些操作?
不能复制、移动文件或目录至此目录下,不能cd进入此目录;
当用户mongodb对/testdir 目录无读权限时,意味着无法做哪些操作?
不能查看此目录下的内容;
当用户redis 对/testdir 目录无写权限时,该目录下的只读文件file1是否可修改和删除?
不可以;
当用户zabbix对/testdir 目录有写和执行权限时,该目录下的只读文件file1是否可修改和删除?
不可以修改,但可以删除;
复制/etc/fstab文件到/var/tmp下,设置文件所有者为tomcat读写权限,所属组为apps组有读写权限,其他人无权限
~]# cp /etc/fstab /var/tmp
~]# chown tomcat:apps /var/tmp/fstab
~]# chmod u=rw,g=rx,o= /var/tmp/fatab
误删除了用户git的家目录,请重建并恢复该用户家目录及相应的权限属性
~]# cp -r /etc/skel /home/
~]# mv /home/skel /home/git
~]# chown git:git /home/git ~]# chmod 700 /home/git

4.4 install命令

install - copy files and set attributes
SYNOPSIS
单源复制:
	install [OPTION]... [-T] SOURCE DEST
多源复制:  
	install [OPTION]... SOURCE... DIRECTORY
  install [OPTION]... -t DIRECTORY SOURCE...
创建目录:  
	install [OPTION]... -d DIRECTORY...

-m, --mode=MODE 创建目标文件的权限,默认为755;
-d, --directory 创建目录;
-o, --owner=OWNER 设定目标文件属主 ;
-g, --group=GROUP 设定目标文件属组;

范例:

~]# install /etc/inittab /root
~]# ls
all.txt          bc.log  EOF      mail2.txt  motd      stderr.log
anaconda-ks.cfg  df.log  **inittab**  mail.txt   root.log  stdout.log
~]# ls -l inittab 
**-rwxr-xr-x.** 1 root root 511 Jul 10 22:38 inittab
~]# ls -l /etc/inittab 
**-rw-r--r--.** 1 root root 511 Oct 13  2020 /etc/inittab
 ~]# rm inittab -f
~]# install **-m 640** /etc/inittab  /root
~]# ls -l inittab 
**-rw-r-----.** 1 root root 511 Jul 10 22:39 inittab
~]# ls
all.txt          bc.log  EOF      mail2.txt  motd      stderr.log
anaconda-ks.cfg  df.log  inittab  mail.txt   root.log  stdout.log
~]# install **-d** hello
~]# ls
all.txt          bc.log  EOF    inittab    mail.txt  root.log    stdout.log
anaconda-ks.cfg  df.log  hello  mail2.txt  motd      stderr.log
~]# ls -ld hello/
**d**rwxr-xr-x. 2 root root 6 Jul 10 22:40 hello/

4.5 mktemp命令

mktemp - create a temporary file or directory
SYNOPSIS
       mktemp [OPTION]... [TEMPLATE]
-d, --directory 创建临时目录
注意:mktemp会创建临时文件名直接返回,可直接通过命令引用保存起来;
如:
	~]# variable=$(mktemp /PATH/TO/SOMEFILEXXXX)

范例:

~]# mktemp /tmp/mytmp.XXXX
/tmp/mytmp.RAhC
~]# mktemp /tmp/mytmp.XXXXX
/tmp/mytmp.z8kjL

标签:...,password,管理,--,用户,etc,权限,root
来源: https://www.cnblogs.com/kownt/p/16471025.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有