Linux用户操作命令
1.新建用户
1.1 useradd 添加用户
useradd 用户名
#添加一个用户名是 oracle 的用户,组 ID 是 666,家目录是 /oracle,用户说明是"oracle测试用户"
useradd -u 666 -d /oracle -c "oracle测试用户" oracle
-u | UID,手动为用户设置组 ID |
-d | directory,家目录,手工指定用户的家目录 |
-c | comment,用户说明,手工指定用户的说明,如果有空格,需要将说明文字用双引号括起来 |
-g | group,组名,手工指定用户的初始组 |
-G | group,组名,手工指定用户的附加组,如果有多个附加组,用空格隔开 |
-s | shell,命令解释器手工指定用户的登录 shell,默认是 /bin/bash |
1.2 passwd 密码设置
新添加的用户需设置密码才能登录
passwd [选项] [用户名]
passwd oracle
root 用户可以修改任何用户的密码,只要在 passwd 后面跟相应的用户名即可。普通用户只能修改自己的密码,这时只要输入 passwd,然后回车就可以,后面无需跟用户名。
1.2.1 -S 查询用户的密码状态
passwd -S oracle
这里显示的信息其实就是 /etc/shadow 文件中用户 oracle 的密码信息。
1.2.2 -l 锁定用户 -u 解锁用户
-l 是 lock 的意思,而 -u 就是 unclock。
#锁定用户
passwd -l oracle
#解锁用户
passwd -u oracle
锁定用户时,Linux 执行的操作其实就是在 shadow 文件中,该用户的密码前面加了两个感叹号。
所以也可以通过手工修改 shadow 文件的方式来锁定和解锁用户。
1.2.3 --stdin 使用字符串作为用户的密码
#将用户 oracle 的密码设置为123
echo "123" | passwd --stdin oracle
在 shell 编程的时候可能会用到这种方法,用于一次给多个用户设置初始密码。
2. 授权
更改文件的 所属组 和 所有者
# 更改所有者
chown -R 用户名 文件路径
# 更改所属组
chgrp -R 组名 文件路径
# 即更改所有者,又更改所属组
chown -R 用户名.组名 文件路径
3. usermod 修改用户信息
usermod [选项] 用户名
#修改用户 oracle 的描述信息
uermod -c "General user" oracle
usermod 和 useradd 的功能类似,区别在于 usermod 命令的操作对象是已存在的用户,useradd 命令的操作对象是将要添加的新用户。正因如此,usermod 和 useradd 命令的部分选项是一样的
-u | UID,手动为用户设置组 ID |
-c | comment,用户说明 |
-g | 初始组 ID修改,用户的初始组,一般不建议修改 |
-G | 附加组 ID定义用户所属的附加组,若有多个,用逗号分隔开 |
-L | sLock临时锁定用户 |
-U | Unlock解除临时锁定 |
4. chage 修改用户密码状态
chage -l oracle
#将该用户最后一次修改密码的日期改成1970年1月1日,也就是把shadow文件的第3字段归0
chage -d 0 oracle
有时候,我们需要批量创建用户,并给这些用户设置一个初始密码,但是我们希望用户登录的时候将初始密码改掉,一遍增强系统的安全性。所以,只要我们将每个用户的最后一次修改密码的日期改成 1970 年 1 月 1 日,在他们首次登录时,系统会强制要求他们更改密码。
这些选项本质上都是修改 /etc/shadow
文件
-l | 查看用户密码信息 |
-d | 修改用户最后一修改密码的日期 |
-m | 两次密码修改间隔(shadow 文件第 4 字段) |
-M | 密码有效期(5字段) |
-W | 密码过期前警告天数(6字段) |
-I | 密码过后宽限天数(7字段) |
-E | 账号失效时间(8字段) |
5. userdel 删除用户
这个命令一般要加上 -r 选项,也就是这种格式:userdel -r 用户名
。意思是,删除用户的同时删除该用户的家目录以及其他与该用户相关的文件。
6. id 查看用户ID和用户所在的组的ID
id 用户名
7. su 用户切换命令
su 是 switch user 的简写,su 命令的一般用法是:su - 用户名
注意:中间的那个短线不能省略,而且短线两侧有空格。
su - oracle
su root
#查看环境变量
env
从普通用户切换到 root 用户或者从普通用户切换到另一个普通用户需要输入密码,但是从 root 用户切换到普通用户不需要输入密码。
不加-
切换到root用户时 包括当前登录的用户名、家目录、用户邮箱等,还都是原来的 oracle,而不是 root。
从这里了也可以看出区别
- 以 root 用户的身份执行命令
还有一种场景,是我不需要切换到 root 用户,只需要用 root 权限执行一条命令,比如添加用户的命令 useradd。这时可以用 -c 选项。
#以root用户的身份添加一个用户
su - root -c "useradd user1"
8. 查看登录用户信息
8.1 who
使用 who 命令可以查看当前有多少用户正在登录。
-
tty 表示本地终端
-
pts 表示远程终端,pts 后面的数字用来区别不同的远程终端
8.2 w
使用 w 命令可以查看更详细的登录用户信息。
9. 用户组管理命令
组管理命令实际就是操作 /etc/group
文件内容,直接编辑此文件内容也可以达到同样效果。
9.1 添加用户组
groupadd [选项] 组名
#添加一个名为orcle的组,组ID由系统默认生成
groupadd orcle
#添加一个名为orcle的组,指定组ID是666
groupadd -g 666 orcle
-g | GID 作用:指定组 ID |
9.2 修改用户组
groupmod [选项] 组名
#将orcle组改名为oracle2
groupmod -n oracle2 orcle
-g | GID 作用:修改组ID |
-n | 新组名 作用:修改组名 |
9.3 删除用户组
groupdel 组名
#删除oracle2组
groupdel oracle2
注意:如果该组是某个用户的初始组,那么这个组无法被删除,因为如果把这个组删了,用户就没地方放了。如果没有用户将该组当做初始组,而只是把它当做附加组,那么这个组就可以被删除。
9.4 把用户加入组或从组中删除
gpasswd [选项] 组名
#把oracle用户加入root组
gpasswd -a oracle root
#把user3用户从root组中删除
gpasswd -d oracle root
-a | 把用户加入组 |
-d | 把用户从组中删除 |
这里执行的把用户加入组的操作,事实上是作为附加用户加入该组的,以上面那条命令为例,执行完该命令后,root 组其实是成为了 oracle 用户的附加组。
Linux