19 Star 185 Fork 90

baoke / Linux学完就忘系列

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
10.用户和组管理命令.md 8.18 KB
一键复制 编辑 原始数据 按行查看 历史
baoke 提交于 2019-07-02 22:37 . 更新 10.用户和组管理命令.md

用户和组管理

安装上下文:
进程以其发起者的身份运行
进程对文件的访问权限,取决于发起此进程的用户的权限
如果管理员使用命令cat /etc/shadow意味着访问以管理员身份来访问;管理员可以访问此文件
如果以zhangsan普通用户的身份来运行cat /etc/shadow意味着访问以zhangsan普通用户的身份来访问;普通用户是不能访问该文件的
系统用户:为了能够让后台进程或服务类进程以非管理员的身份运行,通常需要为此创建多个普通用户;这类用户从不用登陆系统称之为系统用户

groupadd命令:添加组

groupadd [OPTION] group_name
-g:GID,指定GID;默认是上一个组的GID+1;
-r:创建系统组;

groupadd -r testgroup
#可以看到系统组的ID是1-999之间
tail -n 2 /etc/group
#-g用于指定组ID
groupadd -g 2000 grp1
#指定系统组,并指定组ID为306
groupadd -r -g 306 mariadb

groupmod命令:修改组属性

groupmod [OPTION] GROUP
-g:GID,修改GID
-n:new_name,修改组名

#将mariadb的GID修改为702
groupmod -g 702 mariadb
#修改组名为perconserver 
groupmod -n perconserver mariadb

groupdel命令:删除组

#删除组
groupdel grp1
groupdel perconserver

useradd命令创建用户

-d:指定UID
-g:指定基本组ID,此组得实现存在
-G:指明用户所属的附加组,多个组之间用逗号分隔
-c:指明注释信息
-d,以指定的路径为用户的家目录;通过复制/etc/skel此目录并重命名实现;指定的家目录路径如果事先存在,则不会为用户复制环境配置文件
-s,指定用户的默认shell,可用的所有shell列表存储在/etc/shells文件
-r,创建系统用户

注意:创建用户时的诸多默认设定配置文件尾/etc/login.defs

创建用户

#创建用户docker
useradd docker
tail -1 /etc/passwd
tail -1 /etc/group
#指定UID为3000
useradd -u 3000 openstack
#使用-c添加用户时添加注释信息
useradd -c "我是只是" mogilefs  

指明用户所属的附加组,多个组之间用逗号分隔

#-G:指明用户所属的附加组,多个组之间用逗号分隔  
useradd -G docker arclinux
#使用此命令结果请看下图
tail /etc/group

指定用户的家目录/home/abc通过复制/etc/skel此目录并重命名实现

指定的家目录路径如果事先存在,则不会为用户复制环境配置文件(/etc/skel文件)

创建用户,并指定使用哪种shell的

useradd -s /bin/csh keystone
tail -1 /etc/passwd

useradd -D:用于显示创建用户的默认配置

useradd -D 选项:修改默认的选项值

修改的结果保存于/etc/default/useradd文件中

GROUP:创建用户时用户同名的私有组
HOME:家目录默认路径
INACTIVE:非活动期限为禁用
EXPIRE:过期期限为永不过期,(空为永不过期,一般为99999天,人一辈子也就3w多天)
SHELL:默认shell
SKEL:从哪去用户骨架信息
CREATE_MAIL_SPOOL:邮件缓冲队列为yes表示每创建一个用户在/var/spool/mail/会给用户创建用户自己专用的邮桶

useradd -D -s /bin/csh
#查看修改
useradd -D
cat /etc/default/useradd

还使用adduser也可以创建用户,它是useradd的软链接

usermod命令:修改用户属性

usermod [选项] 登录名
-u,--uid UID:修改用户ID;
-g,--gid GROUP:修改用户所处的基本组;
-G,--groups GROUP1[,GROUP2...[,GROUPN]]:修改用户所属的附加组;原来的附加组会被覆盖;
-a,--append:与-G一同使用,用于为用户追加新的附加组;
-c,--comment COMMENT:修改注释信息;
-d,--home HOME_DIR:修改用户的家目录;用户原有的文件不会被转移至新位置;
-m,--move-home:只能与-d选项一同使用,用于将原来的家目录移动为新的家目录;
-l,--login NEW_LOGIN:修改用户名;
-s,--shell SHELL:修改用户的默认shell;
-L,--lock:锁定用户密码:即在用户原来的密码字符串之前增加一个"!";
-U,--unlock:解锁用户的密码;

usermod -c "好了呵呵呵" jesse

userdel命令:删除用户

userdel [选项] 登录名
-r:删除用户时一并删除其家目录;

练习1:创建用户gentoo,UID为4001,基本组为gentoo, 附加组为distro(GID为5000)和peguin(GID为5001);

groupadd -g 5000 distro
groupadd -g 5001 peguin
useradd -u 4001 -G distro,peguin gentoo
tail /etc/group

练习2:创建用户fedora,其注释信息为"Fedora Core",默认shell为/bin/tcsh;

useradd -c "Fedora Core" -s /bin/tcsh fedora

练习3:修改gentoo用户的家目录为/var/tmp/gentoo;要求其原有文件仍然能被访问;

usermod -m -d /home/zzx gentoo

练习4:为gentoo新增附加组netadmin;

groupadd netadmin
usermod -G netadmin gentoo
tail /etc/group

passwd命令

passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]

(1) passwd:修改用户名自己的密码;

passwd

(2) passwd USERNAME:修改指定用户的密码,但仅root有此权限

passwd docker

-l,Lock 锁定用户;
-u,unlock 解锁用户;
-d:清除用户密码;
-e DATE:过期期限,日期;
-i DAYS:非活动期限;
-n DAYS:密码的最短使用期限;
-x DAYS:密码的最常使用期限;
-w DAYS:警告期限;
--stdin:把改变用户密码的数据流的获取定向至标准输入;
echo "PASSWD" | passwd -stdin USERNAME

#清除密码
passwd jesse -d
#查看清除后,jesse的密码字符串没有了
tail /etc/shadow
#设置密码
passwd jesse 
#查看密码串
tail /etc/shadow

使用--stdin,把改变用户密码的数据流的获取定向至标准输入,echo "123456"标准输出流作为管道passwd的标准输入流,从而直接将密码给修改了

echo "123456"| passwd --stdin jesse

如果不想看结果可以重定向至/dev/null

echo "123456"| passwd --stdin jesse &> /dev/null
查看是否更新成功
echo $?

gpasswd命令

组密码文件:/etc/gshadow

gpasswd [选项] group
-a USERNAME:向组中添加用户
-d USERNAME:从组中移除用户

newgrp命令:临时切换指定基本组

newgrp [-] [group] -:会摸你用户重新登录以实现重新初始化其工作环境;

change命令:更改用户密码过期信息

使用man change查看帮助文档用法

id命令:显示真实和有效的 UID 和 GID

id [OPTION]... [USERNAME]
-u:仅显示有效的UID;
-g:仅显示用户的基本组ID;
-G:仅显示用户所属的所有组的ID;
-n:显示名字而非ID;

#显示当前登录用户信息
id
#显示指定用户信息
id openstack
#仅显示用户的基本组ID
id -g openstack

su命令:switch suer

登录式切换:会通过读取目标用户的配置文件来重新初始化
su - USERNAME
us -l USERNAME
非登录式切换:不会读取目标用户的配置文件进行初始化
su USERNAME

注意:管理员可无密码切换至其他任何用户
[选项]
-c 'COMMAND':仅以指定用户的身份运行指定的命令;

其他几个命令,不常用

chsh:改变登录用户的shell
finger:显示关于系统用户的信息;需要yum -y install finger安装 finger docker
chfn:改变你的finger讯息
whoami:当前用户是谁
pwck:检查是否有用户异常
grpck:检查组是否有异常

Shell
1
https://gitee.com/abcd1234567_1/linux.git
git@gitee.com:abcd1234567_1/linux.git
abcd1234567_1
linux
Linux学完就忘系列
master

搜索帮助