参考文献

用户管理

useradd

  • 新建用户
1
2
3
4
5
6
7
8
9
10
11
12
13
-c<备注>: 加上备注文字.备注文字会保存在passwd的备注栏位中;
-d<登入目录>: 指定用户登入时的启始目录;
-D: 变更预设值;
-e<有效期限>: 指定帐号的有效期限;
-f<缓冲天数>: 指定在密码过期后多少天即关闭该帐号;
-g<群组>: 指定用户所属的群组;
-G<群组>: 指定用户所属的附加群组;
-m: 自动建立用户的登入目录;
-M: 不要自动建立用户的登入目录;
-n: 取消建立以用户名称为名的群组;
-r: 建立系统帐号;
-s<shell>: 指定用户登入后所使用的shell;
-u<uid>: 指定用户id.
1
2
3
4
5
6
7
8
9
10
11
12
13
#-g: 加入主要组、-G: 加入次要组
useradd –g sales jack –G company,employees
# 新建用户并创建同名用户组,创建home目录,使用/bin/bash作为初始bash
useradd -U -m -s /bin/bash <username>
passwd <username>


# 创建用户并设置加密密码
sudo useradd -U -m -s /bin/bash -p "$(openssl passwd -1 <password>)" <usernmae>

# 强制用户下次登录修改密码
passwd --exprie <username>
chage -d 0 <username>

userdel

  • 删除用户
1
2
-f: 强制删除用户,即使用户当前已登录;
-r: 删除用户的同时,删除与用户相关的所有文件.

passwd

  • 修改用户密码
1
2
3
4
5
6
7
passwd (选项) (参数)
-d: 删除密码,仅有系统管理者才能使用;
-f: 强制执行;
-k: 设置只有在密码过期失效后,方能更新;
-l: 锁住密码;
-s: 列出密码的相关信息,仅有系统管理者才能使用;
-u: 解开已上锁的帐号.

usermod

  • 修改用户属性
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
usermod (选项) (参数)
Usage: usermod [options] LOGIN

Options:
-c, --comment COMMENT new value of the GECOS field
-d, --home HOME_DIR new home directory for the user account
-e, --expiredate EXPIRE_DATE set account expiration date to EXPIRE_DATE
-f, --inactive INACTIVE set password inactive after expiration
to INACTIVE
-g, --gid GROUP force use GROUP as new primary group
-G, --groups GROUPS new list of supplementary GROUPS
-a, --append append the user to the supplemental GROUPS
mentioned by the -G option without removing
him/her from other groups
-h, --help display this help message and exit
-l, --login NEW_LOGIN new value of the login name
-L, --lock lock the user account
-m, --move-home move contents of the home directory to the
new location (use only with -d)
-o, --non-unique allow using duplicate (non-unique) UID
-p, --password PASSWORD use encrypted password for the new password
-R, --root CHROOT_DIR directory to chroot into
-s, --shell SHELL new login shell for the user account
-u, --uid UID new UID for the user account
-U, --unlock unlock the user account
-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 new SELinux user mapping for the user account
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 将 newuser2 添加到组 staff 中
usermod -G staff newuser2

# 修改newuser的用户名为newuser1
usermod -l newuser1 newuser

# 锁定账号newuser1:
usermod -L newuser1

# 解除对newuser1的锁定
usermod -U newuser1
# 将当前账号加入到docker组中
sudo usermod -aG docker $(whoami)
newgrp docker

chage

  • 修改用户属性
1
2
3
4
5
6
7
8
chage [选项] 用户名
-m: 密码可更改的最小天数.为零时代表任何时候都可以更改密码.
-M: 密码保持有效的最大天数.
-w: 用户密码到期前,提前收到警告信息的天数.
-E: 帐号到期的日期.过了这天,此帐号将不可用.
-d: 上一次更改的日期.
-i: 停滞时期.如果一个密码已过期这些天,那么此帐号将不可用.
-l: 例出当前的设置.由非特权用户来确定他们的密码或帐号何时过期.

id 用户名

  • 查看用户是否存在
  • 若不加参数,则显示当前登录用户
1
2
3
4
[root@holelin ~]# id root
uid=0(root) gid=0(root) groups=0(root)
[root@holelin ~]# id
uid=0(root) gid=0(root) groups=0(root)

whoami/who am i

  • 查看当前用户
1
2
3
4
[root@holelin ~]# who am i
root pts/0 2021-07-24 18:41 (192.168.12.114)
[root@holelin ~]# whoami
root

su 用户名

  • 用于切换当前用户身份到其他用户身份
1
su - user1
1
2
3
4
5
6
7
-c<指令>或--command=<指令>: 执行完指定的指令后,即恢复原来的身份;
-f或——fast: 适用于csh与tsch,使shell不用去读取启动文件;
-l或——login: 改变身份时,也同时变更工作目录,以及HOME,SHELL,USER,logname.此外,也会变更PATH变量;
-m,-p或--preserve-environment: 变更身份时,不要变更环境变量;
-s<shell>或--shell=<shell>: 指定要执行的shell;
--help: 显示帮助;
--version;显示版本信息.

sudo

  • 用来以其他身份来执行命令,预设的身份为root.在/etc/sudoers中设置了可执行sudo指令的用户.若其未经授权的用户企图使用sudo,则会发出警告的邮件给管理员.用户使用sudo时,必须先输入密码,之后有5分钟的有效期限,超过期限则必须重新输入密码.
1
2
3
4
5
6
7
8
9
10
-b: 在后台执行指令;
-h: 显示帮助;
-H: 将HOME环境变量设为新身份的HOME环境变量;
-k: 结束密码的有效期限,也就是下次再执行sudo时便需要输入密码;.
-l: 列出目前用户可执行与无法执行的指令;
-p: 改变询问密码的提示符号;
-s<shell>: 执行指定的shell;
-u<用户>: 以指定的用户作为新的身份.若不加上此参数,则预设以root作为新的身份;
-v: 延长密码有效期限5分钟;
-V : 显示版本信息.

groupadd

  • 新增用户组
1
2
3
4
-g: 指定新建工作组的id;
-r: 创建系统工作组,系统工作组的组ID小于500;
-K: 覆盖配置文件“/ect/login.defs”;
-o: 允许添加组ID号不唯一的工作组.

groupdel

  • 删除组

groupmod

  • 修改组
1
2
3
-g<群组识别码>: 设置欲使用的群组识别码;
-o: 重复使用群组识别码;
-n<新群组名称>: 设置欲使用的群组名称.

示例

只允许root登录的维护模式

  • 在Unix/Linux系统中,在/etc目录中执行touch nologin命令,会产生一个文件名位nologin的文件,当其他用户要登录时,系统只要发现此文件存在,就会禁止他们登录.

停用账号

  • 可在/etc/passwd文件中,要把停止使用的账号标注起来

    1
    2
    cassia:x:502:502::/home/cassia:/bin/bash
    #silent:x:600:100::/home/silent/bin/bash ←在账号最前面加上"#"

创建具有sudo权限的用户

1
2
3
sudo useradd -m newuser
sudo passwd newuser
sudo usermod -aG sudo newuser

配置sudo sulecture

  • lecture: 这个选项可以设置 sudo 在用户运行 sudo 命令时显示的提示信息.它有三种状态:
    • always: 每次执行 sudo 命令时都显示 lecture 信息.
    • once: 只在用户首次运行 sudo 时显示(即每个用户只显示一次).
    • never: 禁用此提示信息,永不显示.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
sudo visudo

# 若默认打开的是nano编辑器,不习惯的化可以修改为VIM来编辑
# 按Crtl+X,再按Y退出编辑器
# 1. 使用update-alternatives修改
sudo update-alternatives --config editor
# 2. 使用.bashrc 或 .zshrc修改
vim ~/.bashrc # 或者 ~/.zshrc
# 2.1 在文件末尾添加以下内容
export EDITOR=vim
# 2.2 保存文件后,执行以下命令使更改生效:
source ~/.bashrc # 或者 ~/.zshrc

# 修改完成后重新输出sudo visudo编辑.查找以下内容: Defaults lecture = always 若没有则添加,保证添加了以下内容,保存并退出
Defaults lecture = always
Defaults lecture_file = /etc/sudo_lecture
# 编辑/etc/sudo_lecture文件
vim /etc/sudo_lecture
# 添加如下内容
我们信任您已经从系统管理员那里了解了日常注意事项.
总结起来无外乎这三点:

#1) 尊重别人的隐私.
#2) 输入前要先考虑(后果和风险).
#3) 权力越大,责任越大.