文章目录

  • 在Linux系统中创建用户
  • 设置密码
  • 修改bash
  • 用户删除
  • 用户属性修改
  • 组group管理命令:
  • 查看用户相关的ID信息
  • 切换用户或以其他用户身份执行命令
  • 文件权限



在Linux系统中创建用户

在创建用户之前我们要先学习一下Linux系统上的用户:
用户user

令牌token,identity
Linux用户:Username/UID
管理员:root, 0
普通用户:1-65535
系统用户:1-499, 1-999(CentOS7)
对守护进程获取资源进行权限分配
登录用户:500+, 1000+(CentOS7)
交互式登录

passwd文件格式:

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

shadow文件格式:

登录用名
用户密码:一般用sha512加密
从1970年1月1日起到密码最近一次被更改的时间
密码再过几天可以被变更(0表示随时可被变更)
密码再过几天必须被变更(99999表示永不过期)
密码过期前几天系统提醒用户(默认为一周)
密码过期几天后帐号会被锁定
从1970年1月1日算起,多少天后帐号失效

python 修改Windows用户的密码_ssh


python 修改Windows用户的密码_ssh_02

设置密码

passwd[OPTIONS] UserName: 修改指定用户的密码,仅root用户权限
passwd: 修改自己的密码
常用选项:
  -l:锁定指定用户
  -u:解锁指定用户
  -e:强制用户下次登录修改密码
  -n mindays: 指定最短使用期限
  -x maxdays:最大使用期限
  -w warndays:提前多少天开始警告
  -i inactivedays:非活动期限
  --stdin:从标准输入接收用户密码
  echo "PASSWORD" | passwd--stdinUSERNAME

Linux 计算日期的时间是以 1970 年 1 月 1 日作为 1 不断累加得到的时间

密码期限:

python 修改Windows用户的密码_shell_03


修改用户密码策略:chage

用法:chage [选项] 登录

选项:
  -d, --lastday 最近日期        将最近一次密码设置时间设为“最近日期”
  -E, --expiredate 过期日期     将帐户过期时间设为“过期日期”
  -h, --help                    显示此帮助信息并推出
  -I, --inactive INACITVE       过期 INACTIVE 天数后,设定密码为失效状态
  -l, --list                    显示帐户年龄信息
  -m, --mindays 最小天数        将两次改变密码之间相距的最小天数设为“最小天数”
  -M, --maxdays 最大天数        将两次改变密码之间相距的最大天数设为“最大天数”
  -R, --root CHROOT_DIR         chroot 到的目录
  -W, --warndays 警告天数       将过期警告天数设为“警告天数”
示例:
	chage-d 0 tom 下一次登录强制重设密码
	chage-m 0 –M 42 –W 14 –I 7 tom
	chage-E 2016-09-10 tom

1、设置过期日期:

python 修改Windows用户的密码_ubuntu_04

python 修改Windows用户的密码_ssh_05


2、设置两次密码之间最大天数:

python 修改Windows用户的密码_linux_06

python 修改Windows用户的密码_shell_07

3、设置两次修改密码之间最小天数:

python 修改Windows用户的密码_linux_08

python 修改Windows用户的密码_ssh_09


4、设置过期前几天提示警告:

python 修改Windows用户的密码_shell_10


python 修改Windows用户的密码_ubuntu_11


group组

Linux组:Groupname/GID
管理员组:root, 0
普通组:
系统组:1-499, 1-999(CENTOS7)
普通组:500+, 1000+(CENTOS7)

组的类别:

Linux组的类别:
用户的主要组(primary group):
          用户必须属于一个且只有一个主组
组名同用户名,且仅包含一个用户:私有组
          用户的附加组(supplementary group):
          一个用户可以属于零个或多个辅助组

用户和组的配置文件:

Linux用户和组的主要配置文件:
/etc/passwd:用户及其属性信息(名称、UID、主组ID等)
/etc/group:组及其属性信息
/etc/shadow:用户密码及其相关属性
/etc/gshadow:组密码及其相关属性

用户管理:useradd userdel usermod —增,删,改

/etc/passwd:用户信息【用户】【密码x表示加密】【-u 用户id】【-g 用户组id】【-c 用户描述信息】【-d 用户家目录】【-s 用户shell解释器】

/etc/group:组信息 【组信息】【组密码】【-g 组id】【-G 所属附加组用户】

/etcadow:用户密码信息,用来记录密码策略,【用户名】【密码】【1970年到上一次修改密码时间】【/etc/login.defs 密码多少天内不能修改密码,0表示随时可修改】【/etc/login.defs 密码有效期是多少天,99999表示密码永不更改】【/etc/login.defs 密码到期前7天通知信息】【useradd/mod -f 参数,密码宽限期】【useradd/mod -e 参数 用户失效时间】【保留】

/etc/gshadow:组密码信息,【用户组信息】【用户组密码】【组管理员列表】【组员信息】

用户添加:
核心关注配置文件:

  1. /etc/default/useradd 此配置文件用来配置添加用户的默认配置如SHELLL、HOME等, SHELL可以指向python3解释器,可以通过python解释器与内核交互
  2. /etc/skel 此文件是用户在创建家目录时,给家目录默认继承的文件,内容存储的是环境变量的脚本,如果我们想每次创建家目录时给定我们所定义的文件可以放在此目录
  3. /etc/login.defs 此文件是定义登陆时环境变量,密码策略PASS_MAX_DAYS,PASS_MIM_DAYS,系统ID等

我们在创建用户时不知道怎么创建可以通过 useradd --help命令来查看

用法:useradd [选项] 登录
      useradd -D
      useradd -D [选项]

选项:
  -b, --base-dir BASE_DIR	    新账户的主目录的基目录
  -c, --comment COMMENT         新账户的 GECOS 字段
  -d, --home-dir HOME_DIR       新账户的主目录
  -D, --defaults		        显示或更改默认的 useradd 配置
  -e, --expiredate EXPIRE_DATE  新账户的过期日期
  -f, --inactive INACTIVE       新账户的密码不活动期
  -g, --gid GROUP		        新账户主组的名称或 ID
  -G, --groups GROUPS	        新账户的附加组列表
  -h, --help                    显示此帮助信息并推出
  -k, --skel SKEL_DIR       	使用此目录作为骨架目录
  -K, --key KEY=VALUE           不使用 /etc/login.defs 中的默认值
  -l, --no-log-init	            不要将此用户添加到最近登录和登录失败数据库
  -m, --create-home	            创建用户的主目录
  -M, --no-create-home		    不创建用户的主目录
  -N, --no-user-group	        不创建同名的组
  -o, --non-unique		        允许使用重复的 UID 创建用户
  -p, --password PASSWORD		加密后的新账户密码
  -r, --system                  创建一个系统账户
  -R, --root CHROOT_DIR         chroot 到的目录
  -s, --shell SHELL		        新账户的登录 shell
  -u, --uid UID			        新账户的用户 ID
  -U, --user-group		        创建与用户同名的组
  -Z, --selinux-user SEUSER		为 SELinux 用户映射使用指定 SEUSER
      --extrausers              Use the extra users database

使用不同的useradd命令会得到不同的用户,大致可以分为五种:
案例1. useradd 不指定shell时,家目录为/,变量PS1为$,SHELL为/bin/sh

python 修改Windows用户的密码_debian_12

python 修改Windows用户的密码_linux_13


python 修改Windows用户的密码_linux_14


案例2. useradd 指定shell为python3时,切换用户直接进入python解释器

python 修改Windows用户的密码_shell_15


python 修改Windows用户的密码_debian_16

python 修改Windows用户的密码_linux_17


案例3. useradd 指定shell为/bin/bash时,变量PS1ok,但是家目录依然为/

python 修改Windows用户的密码_linux_18


python 修改Windows用户的密码_ubuntu_19


案例4. useradd -m 创建用户时,指定创建价目,但没有指定shell为bash,默认为sh,所以家目录下有环境变量,但是家目录下的脚本

是由bash解释器才可以解释执行,sh解释器无法解释执行,所以环境变量依然有问题

python 修改Windows用户的密码_ubuntu_20


python 修改Windows用户的密码_ubuntu_21


案例5. useradd -m -s /bin/bash时,家目录,环境变量都ok

python 修改Windows用户的密码_shell_22


python 修改Windows用户的密码_debian_23

修改bash

若我们只是使用命令useradd 用户名来创建用户的话,创建出来的用户使用的shell均为/bin/sh,这样我们创建出来的用户就会有上述案例1的结果,所以我们要将shell进行修改:

python 修改Windows用户的密码_debian_24


这里显示为:SHELL =/bin/sh

python 修改Windows用户的密码_debian_25

修改为:SHELL =/bin/bash并保存退出

python 修改Windows用户的密码_ssh_26

这样我们创建用户之后的shell即为bash了

python 修改Windows用户的密码_linux_27

cat /etc/gshadow我们可以看到用户的组密码信息

python 修改Windows用户的密码_ubuntu_28


cat /etc/shadow:用户密码信息

python 修改Windows用户的密码_ubuntu_29


cat /etc/group:组信息

python 修改Windows用户的密码_ubuntu_30


cat /etc/passwd:用户信息

用户删除

用法:userdel [选项] 登录

选项:
  -f, --force                   即使不属于此用户,也强制删除文件
  -h, --help                    显示此帮助信息并推出
  -r, --remove                  删除主目录和邮件池
  -R, --root CHROOT_DIR         chroot 到的目录
  -Z, --selinux-user            为用户删除所有的 SELinux 用户映射

用户属性修改

用法:usermod [选项] 登录

选项:
  -c, --comment 注释            GECOS 字段的新值
  -d, --home HOME_DIR           用户的新主目录
  -e, --expiredate EXPIRE_DATE  设定帐户过期的日期为 EXPIRE_DATE
  -f, --inactive INACTIVE       过期 INACTIVE 天数后,设定密码为失效状态
  -g, --gid GROUP               强制使用 GROUP 为新主组
  -G, --groups GROUPS           新的附加组列表 GROUPS
  -a, --append GROUP            将用户追加至上边 -G 中提到的附加组中,
                                并不从其它组中删除此用户
  -h, --help                    显示此帮助信息并推出
  -l, --login LOGIN             新的登录名称
  -L, --lock                    锁定用户帐号
  -m, --move-home               将家目录内容移至新位置 (仅于 -d 一起使用)
  -o, --non-unique              允许使用重复的(非唯一的) UID
  -p, --password PASSWORD       将加密过的密码 (PASSWORD) 设为新密码
  -R, --root CHROOT_DIR         chroot 到的目录
  -s, --shell SHELL             该用户帐号的新登录 shell
  -u, --uid UID                 用户帐号的新 UID
  -U, --unlock                  解锁用户帐号
  -v, --add-subuids FIRST-LAST  add range of subordinate uids
  -V, --del-subuids FIRST-LAST  remove range of subordinate uids
  -w, --add-subgids FIRST-LAST  add range of subordinate gids
  -W, --del-subgids FIRST-LAST  remove range of subordinate gids
  -Z, --selinux-user  SEUSER    用户账户的新 SELinux 用户映射

小小的案例:修改用户的注释信息

python 修改Windows用户的密码_ssh_31

组group管理命令:

groupadd groupdel groupmod——增 删 改
创建组:

groupadd[OPTION]... group_name
-g GID: 指明GID号;[GID_MIN, GID_MAX]
-r: 创建系统组
CentOS 6: ID<500
CentOS 7: ID<1000

组删除:groupdel

groupdel  组名

组属性修改:groupmod

groupmod[OPTION]... group
-n group_name: 新名字
-g GID: 新的GID

案例(增、改、删):

python 修改Windows用户的密码_linux_32


更改组密码:gpasswd

组密码:gpasswd
	gpasswd[OPTION] GROUP
		-a user: 将user添加至指定组中
		-d user: 从指定组中移除用户user
		-A user1,user2,...: 设置有管理权限的用户列表
	newgrp命令:临时切换主组
		如果用户本不属于此组,则需要组密码

python 修改Windows用户的密码_ubuntu_33


更改和查看组成员:groupmems

groupmems[options] [action]
options:
	-g, --group groupname更改为指定组(只有root)
Actions:
	-a, --add username 指定用户加入组
	-d, --delete username 从组中删除用户
	-p, --purge 从组中清除所有成员
	-l, --list 显示组成员列表
groups [OPTION].[USERNAME]... 查看用户所属组列表

查看用户相关的ID信息

Usage: id [OPTION]... [USER]
Print user and group information for the specified USER,
or (when USER omitted) for the current user.

  -a             ignore, for compatibility with other versions
  -Z, --context  print only the security context of the process
  -g, --group    print only the effective group ID
  -G, --groups   print all group IDs
  -n, --name     print a name instead of a number, for -ugG
  -r, --real     print the real ID instead of the effective ID, with -ugG
  -u, --user     print only the effective user ID
  -z, --zero     delimit entries with NUL characters, not whitespace;
                   not permitted in default format
      --help		显示此帮助信息并退出
      --version		显示版本信息并退出

python 修改Windows用户的密码_ssh_34

切换用户或以其他用户身份执行命令

su[options...] [-] [user [args...]]
切换用户的方式:
su UserName:非登录式切换,即不会读取目标用户的配置文件,不改变当前工作目录
su - UserName:登录式切换,会读取目标用户的配置文件,切换至家目录,完全切换
root su至其他用户无须密码;非root用户切换时需要密码
换个身份执行命令:
   su[-] UserName-c 'COMMAND'
选项:-l --login
   su-l UserName相当于su-UserName

案例:

python 修改Windows用户的密码_ssh_35

文件权限

文件属性:

python 修改Windows用户的密码_linux_36

文件属性操作者
	chown 设置文件的所有者
	chgrp 设置文件的属组信息
	other 其他用户

修改文件的属性和属组:

修改文件的属主:chown
	chown[OPTION]... [OWNER][:[GROUP]] FILE...
	用法:
	OWNER
	OWNER:GROUP
	:GROUP
	命令中的冒号可用.替换
	-R: 递归
	chown[OPTION]... --reference=RFILE FILE...
修改文件的属组:chgrp
	chgrp[OPTION]... GROUP FILE...
	chgrp[OPTION]... --reference=RFILE FILE...
	-R 递归

两个小案例:

python 修改Windows用户的密码_shell_37

python 修改Windows用户的密码_shell_38


文件权限:

文件的权限主要针对三类对象进行定义:
	owner: 属主, u
	group: 属组, g
	other: 其他, o
每个文件针对每类访问者都定义了三种权限:
	r: Readable
	w: Writable
	x: eXcutable

文件和目录都包含有权限:

文件:
	r: 可使用文件查看类工具获取其内容
	w: 可修改其内容
	x: 可以把此文件提请内核启动为一个进程
目录:
	r: 可以使用ls查看此目录中文件列表
	w: 可在此目录中创建文件,也可删除此目录中的文件
	x: 可以使用ls -l查看此目录中文件列表,可以cd进入此目录
	X:只给目录x权限,不给文件x权限

python 修改Windows用户的密码_ssh_39

python 修改Windows用户的密码_shell_40