—————————用户管理—————–
useradd
添加一个新用户
参数:
# -g 指定用户的主要组
# -G 指定用户的附加组 格式为 G1,G2,G3 (多个组有逗号分割)
-u 指定用户的UID (不推荐)
# -d 指定用户默认的登录目录(家目录)
-e 设置用户的过期日期,MM/DD/YY 120512 2012.12.05
-f 设置密码到期后,多少天后禁用用户
# -s 指定登录后执行的指令 /bin/bash
举例:
#新建用户zhang3,并指定登陆运行的shell
useradd zhang3 -s /bin/sh (优先)
#为新添加的用户指定home目录
useradd -d /home/myd tt
#将teacher1加入teachers组
useradd -g teachers teacher1
#增加一个用户zhang3,主要组为 G1 组,附加组为 G2,G3,G4(前提,组必须存在)
useradd zhang3 -g G1 -G G2,G3,G4
#为新添加的用户指定home目录
useradd -d /home/myd tt
usermod
修改用户的信息
usermod -[选项] username
选项:
# -g 修改用户的主要组
# -G 修改用户的附加组 格式为 G1,G2,G3
-u 修改用户的UID (不推荐)
# -d 修改用户默认的登录目录
-s 修改用户登录后执行的指令 /bin/bash
举例:
#修改newuser2所属组为staff
usermod -g staff newuser2
#将newuser2添加到组staff中
usermod -G staff newuser2
#修改newuser的用户名为newuser1
usermod -l newuser1 newuser
passwd
修改用户密码
格式: passwd 用户名
举例:
#修改zhang3密码,提示你输入两次
passwd zhang3
注意:
普通用户只能修改自己的密码,必须严格按照Unix密码的安全性来设置,复杂密码
管理员修改任何人的密码 passwd username ,"密码安全性" 不受限制
su 切换用户
在 linux 中 root 就是最高管理员 UID=0
普通用户 su 普通用户 需要密码
root su 普通用户 不需要密码
#两种切换的方法区别:
su zhang3 临时切换身份,不会重新读取变量配置文件
su - zhang3 前换当前身份到zhang3, 并且重新读取 zhang3 的配置文件 /home/zhang3/.bash_profile
参照 newgrp 一样会派生子进程,来运行新的身份环境
id
查询用户的 ID和组信息
格式:
id username
#查看baitu的id信息
id baitu
uid=1705(baitu) gid=1004(a1) groups=1004(a1),1006(a3) #uid 为用户id(1705) ,gid为所属组id(1004) ,groups为附加组id(1006)
#通过id命令测试用户是否存在,
id username 1>/dev/null 2>&1 =====> $? 用户是否存在。
#输出上一个命令的返回值,为0表示执行成功(这里表示有该用户信息),1表示执行失败(表示没有该用户信息)
echo $?
userdel
删除用户
格式:userdel 【参数】username
参数:
-r 将用户的 “家目录” 和 “邮件文件” 一并删除
注意:
#用户在线的情况下,不能直接删除用户。
#该用户在其他目录创建的文件,将不会被删除,并且这些文件的所有者将会变成,该用户原先的UID,要想删除那些文件
#将zhang3彻底删除包(含家目录、邮箱文件)
userdel -r zhang3
密文的在两个文件之间导入(一般没用到)
pwconv: passwd ---> shadow #passwd密文导入到shadow里
pwunconv: shadow ---> passwd #shadow密文导入到passwd里
用户相关配置文件
详细信息请见:
/etc/passwd #存放用户密码uid gid 、家目录位置、登录运行的shell
/etc/shadow #该文件权限000,可设置用户密码修改时间,密码到期到期时间等
/etc/login.defs #定义默认用户邮箱位置,默认密码可用时间等
/etc/default /useradd #用户没指定组,设置默认添加的组以及默认家目录位置,环境变量文件来源
/etc/skel #该目录存放环境变量文件 存放.bash_logout、.bash_profile、.bashrc
/etc/issue #可设置登录之前的提示信息,在输入账号之前!
/etc/motd #可设置登录成功之后的提示信息
用户日志信息
由于日志文件不是纯文本格式,所以不能用cat 查看
/var/log/wtmp #用户登录成功的记录 使用命令last查看
/var/log/btmp #用户登录失败的记录 使用命令lastb查看
/var/log/message #操作系统通用日志记录 使用last -f +日志文件路径 查看
——————-用户组管理—————————-
groupadd 组名
用户组的创建
-g 指定新组的 GID
例如:
#创建G1设置gid为506
groupadd -g 506 G1 (不推荐自己设定GID)
#创建新组G1
groupadd G1
groups、id
用户查看自己当前所属的组
=== groups
[baitu@server3 ~]$ groups
a3 a1 a4 a5 #第一个就是当前所处的组,其余为附加组
=== id + username 可以查看自己或者某个用户的 “基本组和用户信息”
groupdel
用户组的删除
例如:
groupdel G1
必须G1组中没有任何成员。(附加组是G1的用户,主要组指向G1的用户)
groupmod -选项 组名
修改组属性:修改GID 修改组名
参数:
-g 修改gid
-n 修改组名
举例:
#将用户组G1 501 改成 G1new 600
groupmod -n G1new -g 600 G1
#修改G1名为G1new
groupmod -n G1new G1
newgrp
用户切换组
newgrp 组名
newgrp 组名
**重点内容**
==用户在自己所属的组之间,相互切换,不需要密码。(即使这个组设置了密码)
==在用户使用 newgrp 命令切换组的时候,会在当前 进程下,产生另外一个子进程,用于运行新的组身份。
使用两次 exit 才能退出该用户的登录
==ps -ef | grep tty1 当前终端号 能看出来
==组密码文件 gshadow 中的密码位为 “空” 的含义 和 shadow 文件中不同。
gpasswd
用户组设置密码(很少做)
添加成员到组中,从组中删除某一个成员
gpasswd 组名
gpasswd -d user1 G1 将user1 从G1组中清除。
gpasswd -a user1 G1 将user1 加入到从G1组中,G1为user1的附加组
和 /etc/gshadow 中的,组管理员相关,可以授权组管理员添加和删除组成员
grpconv — /etc/gshadow
grpunconv — /etc/group
参见: pwconv pwunconv 的机制(密码在两个文件之间导入)
用户组相关配置文件
配置文件详细参数请见:
/etc/group #类似用户的配置文件passwd
/etc/gshadow #类似用户配置文件shadow