1.Linux常用命令(四)
1.用户管理命令
useradd 用户名 为系统创建普通用户
系统在创建一个用户时,系统会操作/etc/passwd文件和/etc/shadow文件,变更文件中的相关内容; |
- -u 数字 指定用户UID(系统内唯一,不允许冲突。)
- -g 组名 指定用户的默认用户组(若使用-g指定基本组,那么基本组必须先存在于系统)
若不指定基本组,则系统默认会创建一个与用户名相同的用户组作为该用户的基本组; |
- -G 组名 指定用户的附加用户组(可以添加多个组,组名间用 , 隔开)
- -d 家目录 指定创建用户家目录
- -c "注释内容" 指定创建用户的注释信息
- -r 创建系统用户,默认无家目录
- -s 命令解释器 指定用户所使用的命令解释器
- -M 不为用户创建家目录
-Ms 一般一起使用,用于创建虚拟用户 |
[root@aspen ~]# useradd -u 666 -Ms /sbin/nologin VitualWeb
[root@aspen ~]# tail -3 /etc/passwd
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
VitualWeb:x:666:1000::/home/VitualWeb:/sbin/nologin
[root@aspen ~]# ls /home/
[root@aspen ~]# su - VitualWeb
su: warning: cannot change directory to /home/VitualWeb: No such file or directory
This account is currently not available.
userdel 用户名 删除指定用户(默认不删除用户的家目录和邮箱)
- -r 删除用户的家目录及邮箱
在实际生产环境中删除用户,一般将该用户在/etc/passwd文件中注释,而不是真正的删除该用户 |
[root@aspen ~]# userdel stu05
[root@aspen ~]# userdel -r stu04
[root@aspen ~]# ls /home/
aspen stu01 stu02 stu03 stu05
[root@aspen ~]# tail -7 /etc/passwd
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
VitualWeb:x:666:1000::/home/VitualWeb:/sbin/nologin
aspen:x:1000:1001::/home/aspen:/bin/bash
stu01:x:1001:1002::/home/stu01:/bin/bash
stu02:x:1002:1003::/home/stu02:/bin/bash
stu03:x:1003:1004::/home/stu03:/bin/bash
usermod 用户名 修改指定定用户信息
- -u 数字 指定修改的用户UID(系统内唯一,不允许冲突。)
- -g 组名 指定修改用户的默认用户组
- -G 组名 指定修改用户的附加用户组(覆盖之前的附加组)
- -aG 组名 指定修改用户的附加用户组(追加至之前的附加组)
- -m 迁移家目录
- -d 家目录 指定修改用户家目录
-md 常一起使用,用于迁移用户家目录; |
- -c "注释内容" 指定修改用户的注释信息
- -l "登录名" 指定修改用户登录名称
- -L 指定锁定的用户
- -U 指定解锁的用户
[root@aspen ~]# tail -1 /etc/passwd
stu03:x:1003:1004::/home/stu03:/bin/bash
[root@aspen ~]# usermod -u 2019 -s /sbin/nologin stu03
[root@aspen ~]# tail -1 /etc/passwd
stu03:x:2019:1004::/home/stu03:/sbin/nologin
id 用户名 查看指定用户UID,GID以及归属用户组(默认显示当前用户的相关ID信息)
[root@aspen ~]# id stu02
uid=1002(stu02) gid=1003(stu02) groups=1003(stu02)
[root@aspen ~]# tail -2 /etc/passwd | head -1
#stu02:x:1002:1003::/home/stu02:/bin/bash
[root@aspen ~]# id stu02
id: stu02: no such user
groupadd 组名 为系统创建用户组
组账户信息保存在/etc/gshadow文件和/etc/group文件中;
基本组:用户只能有1个基本组,创建时可通过-g选项指定;若未指定则默认创建一个与用户同名的组。
附加组:用户可以有多个附加组,创建时可通过-G选项指定;当用户基本组无法满足授权要求时,可以将用户加入有权限的附加组,用户顺势继承附加组的权限。
|
- -r 创建系统用户组
- -g 数字 指定用户组GID(系统内唯一,不允许冲突。)
[root@aspen ~]# groupadd -g 2000 www
[root@aspen ~]# grep www /etc/group
www:x:2000:
[root@aspen ~]# useradd -Ms /sbin/nologin -g www -u 2000 www
[root@aspen ~]# grep www /etc/passwd
www:x:2000:2000::/home/www:/sbin/nologin
groupdel 组名 删除用户组
默认删除私有组(即创建用户时,系统自动创建的与用户同名的用户组)
一般情况下,使用userdel指令删除用户时,私有组就会被一起删除。
若要删除基本组,需要先删除基本组中的用户,才可以删除基本组
|
[root@Tech ~]# id www
id: ‘www’: no such user
[root@Tech ~]# grep www /etc/group
www:x:2000:
[root@Tech ~]# groupdel www
[root@Tech ~]# grep www /etc/group
[root@Tech ~]# useradd test
[root@Tech ~]# grep test /etc/group
test:x:1003:
[root@Tech ~]# groupdel test
groupdel: cannot remove the primary group of user 'test'
[root@Tech ~]# userdel test
[root@Tech ~]# grep test /etc/group
groupmod 组名 修改用户组
- -g 数字 修改组ID
- -n 名称 修改组名称
[root@Tech ~]# grep Young /etc/group
Young:x:1000:
[root@Tech ~]# grep Young /etc/group
Young:x:3000:
[root@Tech ~]# groupmod -n ASPEN Young
[root@Tech ~]# grep 3000 /etc/group
ASPEN:x:3000:
passwd 用户名 为指定用户设定/更改密码(默认修改当前用户密码)
- --stdin 从标准输入获取密码(非交互式设置密码)
--stdin参数仅root用户可用 |
普通用户仅能更改自身密码;并且对密码的长度(8位以上)复杂性有一定要求; |
[root@aspen ~]# passwd aspen
Changing password for user aspen.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
[root@aspen ~]# echo 123456 | passwd aspen --stdin
Changing password for user aspen.
passwd: all authentication tokens updated successfully.
[aspen@aspen ~]$ passwd --stdin
Only root can do that.
[root@aspen ~]# echo stu{01..5}| xargs -n1 | sed 's#.*#useradd & \&\& p=`tr -cd 'a-zA-Z0-9' </dev/urandom|head -c 8` \&\& echo $p|passwd & --stdin \&\& echo $p & >>/root/password.txt #g' | bash
Changing password for user stu01.
passwd: all authentication tokens updated successfully.
Changing password for user stu02.
passwd: all authentication tokens updated successfully.
Changing password for user stu03.
passwd: all authentication tokens updated successfully.
Changing password for user stu04.
passwd: all authentication tokens updated successfully.
Changing password for user stu05.
passwd: all authentication tokens updated successfully.
[root@aspen ~]# cat ./password.txt
nqZCzqi0 stu01
zsqpDoZB stu02
XK1SMRDk stu03
H3KL1uW0 stu04
Re5PpHW1 stu05
mkpasswd 生产随机字符串
mkpasswd指令,不是系统自带指令,需要使用YUM安装
yum intall -y expect
|
- -l N 设定密码长度为N个字符
- -d N 设定密码包含N位数字
- -c N 设定密码包含N位小写字母
- -C N 设定密码包含N位大写字母
- -s N 设定密码包含N位特殊字符
默认生成9位随机字符串; |
[root@Tech ~]# mkpasswd
2R&0dpzgH
[root@Tech ~]# mkpasswd -l 12 -c 3 -C 3 -d 3 -s 2
kk3|1MLN-gs1
[root@Tech ~]# mkpasswd -l 12 -c 3 -C 3 -d 3 -s 3
U]pxHC&b509'
[root@Tech ~]# mkpasswd -l 12 -c 3 -C 3 -d 3 -s 1
1jaz8)WqvGO4
chage 属性 用户名 更改用户密码属性信息
- -d "yy-mm-dd" 上一次更改的日期。
-d对应修改的是/etc/shadow文件中第3列的属性
0 表示下次登录系统强制修改密码; |
- -m "n" 密码可更改的最小天数。
-m对应修改的是/etc/shadow文件中第4列的属性
0 表示任何时候都可以更改密码; |
- -M "n" 密码保持有效的最大天数。
-M对应修改的是/etc/shadow文件中第5列的属性 - -W "n" 用户密码到期前,提前收到警告信息的天数。
-W对应修改的是/etc/shadow文件中第6列的属性 - -I "n" 设置密码过期时间(单位:天);过期后,密码为失效状态。
-I对应修改的是/etc/shadow文件中第7列的属性 - -E "yy-mm-dd" 设置账户过期时间。账户失效后,无法登录。
-E对应修改的是/etc/shadow文件中第8列的属性 - -l 显示用户信息。
[root@Tech ~]# useradd aspen
[root@Tech ~]# tail -1 /etc/shadow
aspen:!!:19006:0:99999:7:::
[root@Tech ~]# chage -d "2022-01-14" -m "4" -M "5" -W "6" -I "7" -E "2022-12-31" aspen
[root@Tech ~]# tail -1 /etc/shadow
aspen:!!:19006:4:5:6:7:19357:
su - 用户名 切换至指定用户
su指令的详细说明,请参照用户提权章节
- 表示切换用户时,更换指定用户的环境变量 |
[root@aspen ~]# su - stu01 #root用户切换至普通用户,不需要输入密码
[stu01@aspen ~]$ su - stu03 #普通用户之间相互切换或切换至root用户,需要输入密码
Password:
sudo 命令 临时以另外一个用户身份(默认root用户)执行事先在/etc/sudoers文件允许的命令
sudo指令的详细说明,请参照用户提权章节
- -l 查看当前用户特权命令
visudo编辑/etc/sudoers文件的专属命令 visudo== vi /etc/sudoers 不要在文件中针对同一个用户授予多次权限 |
sudoers文件书写格式
用户 | 可登陆主机=(sudo身份) | 可执行的命令 |
---|---|---|
aspen | ALL=(ALL) | ALL |
[root@aspen ~]# visudo
......
root ALL=(ALL) ALL
aspen ALL=(ALL) NOPASSWD:ALL
stu01 ALL=(ALL) /sbin/* !/sbin/rm !/sbin/vim !/sbin/su
......
[stu01@aspen ~]$ sudo -l #首次查看用户特权命令
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
[sudo] password for stu01:
Matching Defaults entries for stu01 on aspen:
!visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY
HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE",
env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC
LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
User stu01 may run the following commands on aspen:
(ALL) /sbin/* !/sbin/rm !/sbin/vim !/sbin/su
[aspen@aspen ~]$ sudo -l
Matching Defaults entries for aspen on aspen:
!visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY
HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE",
env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC
LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
User aspen may run the following commands on aspen:
(ALL) NOPASSWD: ALL
[aspen@aspen ~]$ sudo su - root
Last login: Mon May 13 19:21:09 CST 2019 from 10.0.0.1 on pts/2
[root@aspen ~]#
2.查看系统用户及登录信息的命令
w 显示已经登陆系统的用户列表,并显示用户正在执行的指令
系统平均负载:
1分钟 > 5分钟 > 15分钟,表示系统负载正在提升
1分钟 < 5分钟 < 15分钟,表示系统负载正在降低 |
w命令对显示区域宽度有要求,如果显示区域宽度不够,执行命令或进行报错 |
[root@aspen ~]# w
w: 52 column window is too narrow
[root@aspen ~]# w
19:10:52 up 1 day, 8:05, 1 user, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 10.0.0.1 14:09 4.00s 0.58s 0.02s w
who 显示当前系统登录的用户
[root@Tech ~]# who
root pts/0 2022-01-16 12:39 (10.0.0.1)
whoami 显示当前用户名
[root@aspen ~]# whoami
root
[root@aspen ~]# su - aspen
Last login: Mon May 13 19:16:07 CST 2019 on pts/0
[aspen@aspen ~]$ whoami
aspen
last 显示所有用户的系统登录信息
[root@aspen ~]# last | head -5
root pts/0 10.0.0.1 Mon May 13 19:46 still logged in
root pts/0 10.0.0.1 Mon May 13 19:34 - 19:46 (00:11)
root pts/2 10.0.0.1 Mon May 13 19:21 - 19:33 (00:12)
root pts/2 10.0.0.1 Mon May 13 19:20 - 19:21 (00:00)
root pts/1 10.0.0.1 Mon May 13 19:13 - 19:33 (00:19)
lastlog 显示系统中所有用户最近一次登录信息
[root@aspen ~]# lastlog | head -2 ; lastlog |tail -4
Username Port From Latest
root pts/0 10.0.0.1 Mon May 13 19:46:21 +0800 2019
VitualWeb pts/0 Mon May 13 18:46:51 +0800 2019
aspen pts/0 Mon May 13 19:45:02 +0800 2019
stu01 pts/2 Mon May 13 19:21:31 +0800 2019
stu03 pts/0 Mon May 13 19:11:34 +0800 2019
chfn 用户名 交互式修改用户注释信息
[root@Tech ~]# tail -1 /etc/passwd
aspen:x:1002:1002::/home/aspen:/bin/bash
[root@Tech ~]# chfn aspen
Changing finger information for aspen.
Name []: Aspen
Office []: Avigilon
Office Phone []: 010-82****00
Home Phone []: 17******24
Finger information changed.
[root@Tech ~]# tail -1 /etc/passwd
aspen:x:1002:1002:Aspen,Avigilon,010-82****00,17******24:/home/aspen:/bin/bash
chsh 用户名 交互式修改用户登录的Bash Shell信息
[root@Tech ~]# chsh aspen
Changing shell for aspen.
New shell [/bin/bash]
/sbin/nologin
chsh: Warning: "/sbin/nologin" is not listed in /etc/shells.
Shell changed.
[root@Tech ~]# tail -1 /etc/passwd
aspen:x:1002:1002:Aspen,Avigilon,010-82****00,17******24:/home/aspen:/sbin/nologin
chfn和chsh指令,默认没有在系统中安装,需要使用YUM安装; yum install -y util-linux-user-2.32.1-28.el8.x86_64 |
finger 用户名 查看用户信息以及登录信息
CentOS 8中无法直接使用YUM安装finger指令,需借助CentOS 7中的RPM包安装该指令。 |
[root@Tech ~]# finger aspen
Login: aspen Name: Aspen
Directory: /home/aspen Shell: /sbin/nologin
Office: Avigilon, 010-82****00 Home Phone: 17******24
Last login Sun Jan 16 13:23 (CST) on pts/0
No mail.
No Plan.
3.系统权限及用户授权相关命令
chmod 权限 文件名 修改文件的权限
- -R 递归修改文件权限
chmod命令支持的权限:r(可读) w(可写) x(可执行) s(set uid) t(粘滞位) |
[root@aspen ~]# chmod 644 ./Power.txt
[root@aspen ~]# ll ./Power.txt
-rw-r--r-- 1 root root 0 May 13 20:27 ./Power.txt
[root@aspen ~]# chmod a-r ./Power.txt
[root@aspen ~]# ll ./Power.txt
--w------- 1 root root 0 May 13 20:27 ./Power.txt
[root@aspen ~]# chmod +x ./Power.txt
[root@aspen ~]# ll ./Power.txt
--wx--x--x 1 root root 0 May 13 20:27 ./Power.txt
[root@aspen ~]# chmod ugo+r ./Power.txt
[root@aspen ~]# ll ./Power.txt
-rwxr-xr-x 1 root root 0 May 13 20:27 ./Power.txt
[root@aspen ~]# ll -d /tmp/ /bin/passwd
-rwsr-xr-x. 1 root root 27832 Jun 10 2014 /bin/passwd
drwxrwxrwt. 10 root root 259 May 13 20:33 /tmp/
[root@aspen ~]# chmod +s ./Power.txt
[root@aspen ~]# ll Power.txt
-rwsr-sr-x 1 stu01 stu01 0 May 13 20:27 Power.txt #数字权限:6755
[root@aspen ~]# chmod +t ./Power.txt
[root@aspen ~]# ll ./Power.txt
-rwxr-xr-t 1 stu01 stu01 0 May 13 20:27 ./Power.txt #数字权限:1755
[root@aspen ~]# chmod o-x ./Power.txt
[root@aspen ~]# ll ./Power.txt
-rwxr-xr-T 1 stu01 stu01 0 May 13 20:27 ./Power.txt #数字权限:1754
chown 用户名.用户组 文件名 修改文件的所有者以及属组
- -R 递归修改文件属主以及属组权限
[root@aspen ~]# chown aspen ./Power.txt
[root@aspen ~]# ll ./Power.txt
-rwxr-xr-x 1 aspen root 0 May 13 20:27 ./Power.txt
[root@aspen ~]# chown stu01.stu01 ./Power.txt
[root@aspen ~]# ll ./Power.txt
-rwxr-xr-x 1 stu01 stu01 0 May 13 20:27 ./Power.txt
chgrp 用户组 文件名 修改文件的属组
- -R 递归修改文件属组
[root@Tech ~]# mkdir test_dir
[root@Tech ~]# touch test_dir/test_file
[root@Tech ~]# ll test_dir/
total 0
-rw-r--r--. 1 root root 0 Jan 19 14:38 test_file
[root@Tech ~]# ll test_dir/ -d
drwxr-xr-x. 2 root root 23 Jan 19 14:38 test_dir/
[root@Tech ~]# chgrp Young test_dir/ -R
[root@Tech ~]# ll -d test_dir/
drwxr-xr-x. 2 root Young 23 Jan 19 14:38 test_dir/
[root@Tech ~]# ll test_dir/
total 0
-rw-r--r--. 1 root Young 0 Jan 19 14:38 test_file
chattr +/- 隐藏权限 文件名 设置指定文件的隐藏属性
chattr命令支持的权限:a(仅追加文件内容权限) i(仅查看文件权限) |
[root@aspen ~]# echo 123456 >Power.txt
[root@aspen ~]# chattr +a Power.txt
[root@aspen ~]# echo 67890 >Power.txt
-bash: Power.txt: Operation not permitted
[root@aspen ~]# cat ./Power.txt
123456
[root@aspen ~]# echo 67890 >>Power.txt
[root@aspen ~]# cat ./Power.txt
123456
67890
[root@aspen ~]# chattr +i ./Power.txt
[root@aspen ~]# cat ./Power.txt
123456
67890
[root@aspen ~]# echo 13579>> ./Power.txt
-bash: ./Power.txt: Permission denied
[root@aspen ~]# cat ./Power.txt
123456
67890
lsattr 查看文件隐藏属性
- -d 只显示目录本身信息
[root@aspen ~]# ll ./Power.txt
-rw-r--r-- 1 stu01 stu01 7 May 13 20:40 ./Power.txt
[root@aspen ~]# lsattr ./Power.txt
-----a---------- ./Power.txt
[root@aspen ~]# lsattr ./Power.txt
----i----------- ./Power.txt
[root@aspen ~]# rm -f ./Power.txt
rm: cannot remove ‘./Power.txt’: Operation not permitted
Linux命令要养成操作前备份,操作后检查的好习惯
未完待续...