linux用户管理命令 2
Posted 北京王老师
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux用户管理命令 2相关的知识,希望对你有一定的参考价值。
一、用户添加命令:useradd
useradd 命令的用法是:useradd 用户名,比如,useradd user1,这样就添加了一个用户名是 user1 的用户。
添加用户时,还有一些常用的选项:
选项名含义作用-uUID手动为用户设置组 ID-ddirectory,家目录手工指定用户的家目录-ccomment,用户说明手工指定用户的说明,如果有空格,需要将说明文字用双引号括起来-ggroup,组名手工指定用户的初始组-Ggroup,组名手工指定用户的附加组,如果有多个附加组,用空格隔开-sshell,命令解释器手工指定用户的登录 shell,默认是 /bin/bash
示例:
useradd -u 666 -d /superman -c "A good man" user2
#添加一个用户名是 user2 的用户,组 ID 是 666,家目录是 /superman,用户说明是“A good man”
二、密码设置命令:passwd
在上一节中我们讲了用户添加命令 useradd,光把用户添加上还不够,这时用户还不能登录,必须给用户设置一个密码用户才能正常登录。这时就要用到密码设置命令 passwd。
passwd 命令的语法格式是:passwd [选项] [用户名],敲完这个命令后按下回车,系统会提示你输入密码。
root 用户可以修改任何用户的密码,只要在 passwd 后面跟相应的用户名即可。普通用户只能修改自己的密码,这时只要输入 passwd,然后回车就可以,后面无需跟用户名。
一般情况下 passwd 命令不需要加选项,但也有一些特殊情况需要用到选项,我们来看看 passwd 命令有哪些常用选项。
2.1 -S 查询用户的密码状态
我们用这个选项看一下某个用户的密码状态:
这里显示的信息其实就是 /etc/shadow 文件中用户 supermouse 的密码信息。
2.2 -l 锁定用户,-u 解锁用户
不难猜到,-l 是 lock 的意思,而 -u 就是 unclock。使用方式:
passwd -l supermouse #锁定用户
passwd -u supermouse #解锁用户
锁定用户时,Linux 执行的操作其实就是在 shadow 文件中,该用户的密码前面加了两个感叹号。如图所示:
所以也可以通过手工修改 shadow 文件的方式来锁定和解锁用户。
2.3 --stdin 使用字符串作为用户的密码
例如:
echo "123" | passwd --stdin supermouse #将用户supermouse的密码设置为123
在 shell 编程的时候可能会用到这种方法,用于一次给多个用户设置初始密码。
三、修改用户信息:usermod
usermod 命令的语法格式是:usermod [选项] 用户名
usermod 和 useradd 的功能类似,区别在于 usermod 命令的操作对象是已存在的用户,useradd 命令的操作对象是将要添加的新用户。正因如此,usermod 和 useradd 命令的部分选项是一样的。来看看 usermod 有哪些选项:
选项含义功能-uUID,用户 ID修改用户 ID-ccomment用户说明-GGID,附加组 ID定义用户所属的附加组,若有多个,用逗号分隔开-g初始组 ID修改用户的初始组,一般不建议修改-LLock临时锁定用户-UUnlock解除临时锁定
比如:
uermod -c "General user" supermouse #修改用户supermouse的描述信息
四、修改用户密码状态:chage
chage 命令有两个常用的选项,-l 和 -d。-l 是查看用户密码信息,-d 是修改用户最后一修改密码的日期。
先看一下 -l 的执行效果:
-d 主要的用法是:
chage -d 0 supermouse #将该用户最后一次修改密码的日期改成1970年1月1日,也就是把shadow文件的第3字段归0
这有什么作用呢?有时候,我们需要批量创建用户,并给这些用户设置一个初始密码,但是我们希望用户登录的时候将初始密码改掉,一遍增强系统的安全性。所以,只要我们将每个用户的最后一次修改密码的日期改成 1970 年 1 月 1 日,在他们首次登录时,系统会强制要求他们更改密码。
此外,chage 命令还有其他选项,这些选项本质上都是修改 /etc/shadow 文件,如下表所示:
选项作用-m两次密码修改间隔(shadow 文件第 4 字段)-M密码有效期(5字段)-W密码过期前警告天数(6字段)-I密码过后宽限天数(7字段)-E账号失效时间(8字段)
五、删除用户:userdel
这个命令一般要加上 -r 选项,也就是这种格式:userdel -r 用户名。意思是,删除用户的同时删除该用户的家目录以及其他与该用户相关的文件。
六、查看用户 ID 和用户所在的组的 ID:id
语法格式:id 用户名
七、用户切换命令:su++
su 是 switch user 的简写,su 命令的一般用法是:su - 用户名,注意:中间的那个短线不能省略,而且短线两侧有空格。
其实如果不加中间的那个短线,该命令也能正常执行,只不过不是完全地切换用户,在执行某些命令的时候会报错,我们来看一下加短线与不加短线的区别。
这是不加短线的:
没有报错,似乎已经切换到 root 用户了,但是我们来看一下此时的环境变量:
看图中圈出来的跟当前用户相关的部分,包括当前登录的用户名、家目录、用户邮箱等,还都是原来的 supermouse,而不是 root。
再来看加上短线的效果:
看一下环境变量:
这时才真正切换到 root 用户了。
而且你可能发现了,加短线与不加短线,是有区别的:
从这里我们也可以分辨出到底有没有真正切换到 root 用户。
从普通用户切换到 root 用户或者从普通用户切换到另一个普通用户需要输入密码,但是从 root 用户切换到普通用户不需要输入密码。
以 root 用户的身份执行命令
还有一种场景,是我不需要切换到 root 用户,只需要用 root 权限执行一条命令,比如添加用户的命令 useradd。这时可以用 -c 选项。
su - root -c "useradd user1" #以root用户的身份添加一个用户
八、查看登录用户信息
8.1 who
使用 who 命令可以查看当前有多少用户正在登录。
tty 表示本地终端
pts 表示远程终端,pts 后面的数字用来区别不同的远程终端
8.2 w
使用 w 命令可以查看更详细的登录用户信息。
九、用户组管理命令
9.1 添加用户组
语法格式:groupadd [选项] 组名
选项:-g GID 作用:指定组 ID
例:
group flying #添加一个名为flying的组,组ID由系统默认生成
group -g 666 flying #添加一个名为flying的组,指定组ID是666
9.2 修改用户组
语法格式:groupmod [选项] 组名
选项:
-g GID 作用:修改组ID
-n 新组名 作用:修改组名
例:
groupmod -n fighting flying #将flying组改名为fighting
9.3 删除用户组
语法格式:groupdel 组名
例:
groupdel flying #删除flying组
需要注意的是,如果该组是某个用户的初始组,那么这个组无法被删除,因为如果把这个组删了,用户就没地方放了。如果没有用户将该组当做初始组,而只是把它当做附加组,那么这个组就可以被删除。
换句话说,如果某个组中有初始用户,则该组不能被删除,如果你执行删除组的命令,系统会报错;如果该组中只用附加用户,那么该组就可以被删除。
9.4 把用户加入组或从组中删除
语法格式:gpasswd [选项] 组名
选项:
-a 用户名 作用:把用户加入组
-d 用户名 作用:把用户从组中删除
gpasswd -a user1 root #把user1用户加入root组
gpasswd -d user3 root #把user3用户从root组中删除
这里执行的把用户加入组的操作,事实上是作为附加用户加入该组的,以上面那条命令为例,执行完该命令后,root 组其实是成为了 user1 用户的附加组。
把 user1 用户加入 root 组之后,我们查看一下 /etc/group 文件的内容:
事实上,把用户加入组其实就是修改了这个文件,所以我们也可以通过修改这个文件的方式把某个用户加入某个组,比如如果我把文件第一行的内容改成这样:
就表明我把 user2 用户(如果user2用户存在的话)也加入了 root组。同理,从组中删除用户也可以通过修改 /etc/group 文件的方式实现。
以上是关于linux用户管理命令 2的主要内容,如果未能解决你的问题,请参考以下文章