Linux用户和组管理命令
用户管理命令
- useradd
- 作用:创建新的Linux用户
- 格式:
useradd [OPTION]... USERNAME - 常见选项:
-u UID -o 配合-u 选项,不检查UID的唯一性 -g GID 指明用户所属基本组,可为组名,也可以GID -c "COMMENT" 用户的注释信息 -d HOME_DIR 以指定的路径(不存在)为家目录 -s SHELL 指明用户的默认shell程序,可用列表在/etc/shells文件中 -G GROUP1[,GROUP2,...] 为用户指明附加组,组须事先存在 -N 不创建私用组做主组,使用users组做主组 -r 创建系统用户 CentOS 6之前: ID<500,CentOS7 以后: ID<1000 -m 创建家目录,用于系统用户 -M 不创建家目录,用于非系统用户 -p 指定加密的密码 - 范例:
useradd -r -u 48 -g apache -s /sbin/nologin -d /var/www -c "Apache" apache - useradd命令的默认值由/etc/default/useradd定义
[root@centos8 ~]#cat /etc/default/useradd # useradd defaults file GROUP=100 HOME=/home INACTIVE=-1 #对应/etc/shadow文件第7列,即用户密码过期的宽限期 EXPIRE= #对应/etc/shadow文件第8列,即用户帐号的有效期 SHELL=/bin/bash SKEL=/etc/skel CREATE_MAIL_SPOOL=yes - 显示并更改默认设置
useradd -D useradd –D -s SHELL useradd –D –b BASE_DIR useradd –D –g GROUP - 新建用户的相关文件
/etc/default/useradd /etc/skel/* #系统会将该目录下的文件拷贝到新建用户的家目录 /etc/login.defs
- usermod
- 作用:修改用户属性
- 格式:
usermod [OPTION]... USERNAME - 常见选项:
-u UID: 新UID -g GID: 新主组 -G GROUP1[,GROUP2,...[,GROUPN]]]:新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使用-a选项 -s SHELL:新的默认SHELL -c 'COMMENT':新的注释信息 -d HOME: 新家目录不会自动创建;若要创建新家目录并移动原家数据,同时使用-m选项 -l login_name: 新的名字 -L: lock指定用户,在/etc/shadow 密码栏的增加 ! -U: unlock指定用户,将 /etc/shadow 密码栏的 ! 拿掉 -e YYYY-MM-DD: 指明用户账号过期日期 -f INACTIVE: 设定非活动期限,即宽限期
- userdel
- 作用:删除Linux用户
- 格式:
userdel [OPTION]... USERNAME - 常见选项:
-f, --force 强制删除用户 -r, --remove 删除用户家目录和邮箱 - 范例:强制删除用户和数据
[root@centos8 ~]#useradd test [root@centos8 ~]#id test uid=1001(test) gid=1001(test) groups=1001(test) #在另一终端用test登录 [root@centos8 ~]#su - test [test@centos8 ~]$ #删除正在登录的用户失败 [root@centos8 ~]#userdel -r test userdel: user test is currently used by process 29909 [root@centos8 ~]#id test uid=1001(test) gid=1001(test) groups=1001(test) #强制删除用户 [root@centos8 ~]#userdel -rf test userdel: user test is currently used by process 29909 [root@centos8 ~]#id test id: ‘test’: no such user
组账号管理命令
-
groupadd
- 作用:创建组
- 格式:
groupadd [OPTION]... group_name - 常见选项:
-g GID 指明GID号;[GID_MIN, GID_MAX] -r 创建系统组,CentOS 6之前: ID<500,CentOS 7以后: ID<1000 - 范例:
groupadd -g 48 -r apache
-
groupmod
- 作用:修改组属性
- 格式:
groupmod [OPTION]... GROUP - 常见选项
-n group_name: 新名字 -g GID: 新的GID
-
groupdel
- 作用:删除组
- 格式:
groupdel [options] GROUP - 常见选项:
-f, --force 强制删除,即使是用户的主组也强制删除组,但会导致无主组的用户不可用无法登录
示例
-
请总结描述用户和组管理类命令的使用方法并完成以下练习:
(1)、创建组distro,其GID为2019; [root@centos8 ~]# groupadd -g 2019 distro [root@centos8 ~]# getent group distro #查看修改结果 distro:x:2019: (2)、创建用户mandriva, 其ID号为1005;基本组为distro; [root@centos8 ~]# useradd -u 1005 -g distro mandriva [root@centos8 ~]# id mandriva #查看修改结果 uid=1005(mandriva) gid=2019(distro) groups=2019(distro) (3)、创建用户mageia,其ID号为1100,家目录为/home/linux; [root@centos8 ~]# useradd -u 1100 -d /home/linux mageia [root@centos8 ~]# id mageia #查看uid uid=1100(mageia) gid=1100(mageia) groups=1100(mageia) [root@centos8 ~]# getent passwd mageia #查看家目录 mageia:x:1100:1100::/home/linux:/bin/bash (4)、给用户mageia添加密码,密码为mageedu,并设置用户密码7天后过期 [root@centos8 ~]# echo 'mageedu' | passwd mageia --stdin #修改密码 Changing password for user mageia. passwd: all authentication tokens updated successfully. [root@centos8 ~]# chage -E `date +%F -d '7 days'` mageia #修改账户过期时间 [root@centos8 ~]# chage -l mageia #查看账户信息 Last password change : Apr 10, 2022 Password expires : never Password inactive : never Account expires : Apr 17, 2022 #账户过期时间 Minimum number of days between password change : 0 Maximum number of days between password change : 99999 Number of days of warning before password expires : 7 [root@centos8 ~]# [root@centos8 ~]# date +%F #当前系统时间 2022-04-10 (5)、删除mandriva,但保留其家目录; [root@centos8 ~]# userdel mandriva #删除用户(默认保留家目录) [root@centos8 ~]# ls /home/ | grep mandriva #家目录仍存在 mandriva (6)、创建用户slackware,其ID号为2002,基本组为distro,附加组peguin; [root@centos8 ~]# groupadd peguin #创建组 [root@centos8 ~]# useradd slackware -u 2002 -g distro -G peguin #创建用户并指定基本组和附加组 [root@centos8 ~]# id slackware #查看结果 uid=2002(slackware) gid=2019(distro) groups=2019(distro),2020(peguin) (7)、修改slackware的默认shell为/bin/tcsh; [root@centos8 ~]# usermod -s /bin/tcsh slackware [root@centos8 ~]# getent passwd slackware slackware:x:2002:2019::/home/slackware:/bin/tcsh (8)、为用户slackware新增附加组admins,并设置不可登陆。 [root@centos8 ~]# groupadd admins #创建组 [root@centos8 ~]# usermod -s /bin/nologin -G admins slackware [root@centos8 ~]# getent passwd slackware #查看账号信息 slackware:x:2002:2019::/home/slackware:/bin/nologin [root@centos8 ~]# su salckware #用户不可登录 su: user salckware does not exist -
创建用户user1、user2、user3。在/data/下创建目录test
[root@centos8 ~]# useradd user1; useradd user2; useradd user3 #添加用户 (1)、目录/data/test属主、属组为user1 [root@centos8 ~]# mkdir /data/test #创建目录 [root@centos8 ~]# chown user1.user1 /data/test/ #修改属主和属组 [root@centos8 ~]# ll -d /data/test/ #查看结果 drwxr-xr-x. 2 user1 user1 6 Apr 10 14:33 /data/test/ (2)、在目录属主、属组不变的情况下,user2对文件有读写权限 [root@centos8 ~]# ll -d /data/test/ #观察发现,/data/test目录其他人权限为r-x,因此user2默认可以查看并修改该目录下的文件 drwxr-xr-x. 2 user1 user1 6 Apr 10 14:33 /data/test (3)、user1在/data/test目录下创建文件a1.sh, a2.sh, a3.sh, a4.sh,设置所有用户都不可删除1.sh,2.sh文件、除了user1及root之外,所有用户都不可删除a3.sh, a4.sh [root@centos8 ~]# chattr +i /data/test/a{1,2}.sh #添加特殊权限i(非文件所有者,不可以删除对应的文件) [root@centos8 ~]# lsattr /data/test/a{1,2}.sh #查看修改结果 ----i--------------- /data/test/a1.sh ----i--------------- /data/test/a2.sh [root@centos8 ~]# ll /data/test/a{1,2}.sh 查看文件属性 -rw-r--r--. 1 root root 0 Apr 10 14:43 /data/test/a1.sh -rw-r--r--. 1 root root 0 Apr 10 14:43 /data/test/a2.sh [root@centos8 ~]# rm -rf /data/test/a{1,2}.sh #文件属主和数组均为root,但是root不可以删除目标文件 rm: cannot remove '/data/test/a1.sh': Operation not permitted rm: cannot remove '/data/test/a2.sh': Operation not permitted [root@centos8 ~]# ll -d /data/test/a{3,4}.sh #查看文件属性 -rw-r--r--. 1 root root 0 Apr 10 14:43 /data/test/a3.sh -rw-r--r--. 1 root root 0 Apr 10 14:43 /data/test/a4.sh [root@centos8 ~]# chmod o+t /data/test/a{3,4}.sh #添加特殊权限sticky [root@centos8 ~]# ll -d /data/test/a{3,4}.sh 查看文件特殊权限(显示为 T ) -rw-r--r-T. 1 root root 0 Apr 10 14:43 /data/test/a3.sh -rw-r--r-T. 1 root root 0 Apr 10 14:43 /data/test/a4.sh [user3@centos8 root]$ exit #切换为root用户 [root@centos8 ~]# chown user1 /data/test/a{3,4}.sh #更改文件所有者为user1 [root@centos8 ~]# ll -d /data/test/a{3,4}.sh #查看文件属性 -rw-r--r-T. 1 user1 root 0 Apr 10 14:43 /data/test/a3.sh -rw-r--r-T. 1 user1 root 0 Apr 10 14:43 /data/test/a4.sh [root@centos8 ~]# su user3 #切换任一用户(其他人) [user3@centos8 root]$ rm -rf /data/test/a3.sh #没有删除权限 rm: cannot remove '/data/test/a3.sh': Permission denied [root@centos8 ~]# su user1 #切换用户为user1(文件所有者) [user1@centos8 root]$ rm -rf /data/test/a3.sh #可以删除目标文件 [user1@centos8 root]$ exit #切换root用户 [root@centos8 ~]# rm -rf /data/test/a4.sh #可以删除目标文件 (4)、user3增加附加组user1,同时要求user1不能访问/data/test目录及其下所有文件 [root@centos8 ~]# usermod -G user1 user3 #添加附加组 [root@centos8 ~]# id user3 uid=2005(user3) gid=2005(user3) groups=2005(user3),2003(user1) [root@centos8 ~]# ll -d /data/test/ 查看目录属性 d---------+ 2 user1 user1 32 Apr 10 15:06 /data/test/ [root@centos8 ~]# chown root /data/test/ #更改目录所有者为root [root@centos8 ~]# ll -d /data/test/ #查看更改结果 d---------+ 2 root user1 32 Apr 10 15:06 /data/test/ [root@centos8 ~]# su user1 #切换用户为user1 [user1@centos8 root]$ ls /data/test/ #user1无查看权限 ls: cannot open directory '/data/test/': Permission denied [user1@centos8 root]$ vim /data/test/ #user1无编辑权限 bash: vim: command not found [user1@centos8 root]$ cd /data/test/ #user1无进入目录的权限 bash: cd: /data/test/: Permission denied [user1@centos8 root]$ [user1@centos8 root]$ (5)、清理/data/test目录及其下所有文件的acl权限 [user3@centos8 root]$ setfacl -R -b /data/test/ [user3@centos8 root]$ getfacl -R /data/test/ #查看结果 getfacl: Removing leading '/' from absolute path names # file: data/test/ # owner: user1 # group: user1 # flags: --t user::rwx group::r-x other::r-x ... -
统计出/etc/passwd文件中其默认shell为非/sbin/nologin的用户个数,并将用户都显示出来
[root@centos8 ~]# cat /etc/passwd | grep -v '/sbin/nologin' | cut -d ':' -f 1 root sync shutdown halt mageia slackware user1 user2 user3 [root@centos8 ~]# -
查出用户UID最大值的用户名、UID及shell类型
参考链接 https://www.jianshu.com/p/f010af661ba0[root@centos8 ~]# getent passwd | sort -t: -k3 -n | tail -1 | cut -d: -f1,3,7 nobody:65534:/sbin/nologin -
统计当前连接本机的每个远程主机IP的连接数,并按从大到小排序
[root@centos8 ~]# ss -nt|tail -n 2|tr -s ' ' :|cut -d: -f6|sort|uniq -c|sort -n 2 10.0.0.1 -
编写脚本disk.sh,显示当前硬盘分区中空间利用率最大的值
[root@centos8 ~]# cat disk.sh #脚本内容 #!/bin/bash # maxvalue=`df -h | tr -s ' ' | cut -d' ' -f5 | sort -rn | head -1` echo -e "The value of the maximum space utilization in the current hard disk partition is:\033[1;4;31m$maxvalue\033[0m" [root@centos8 ~]# ./disk.sh #脚本执行结果 The value of the maximum space utilization in the current hard disk partition is:17% -
编写脚本 systeminfo.sh,显示当前主机系统信息,包括:主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小
参考链接 https://www.cnblogs.com/Gao-Wen/p/15060029.html点击查看代码
[root@centos8 ~]# cat systeminfo.sh #!/bin/bash # HOSTNAME=`hostname` IP=`hostname -I` SYSTEM=`cat /etc/centos-release` CORE=`uname -r` CPU=`cat /proc/cpuinfo | grep 'model name' |uniq | cut -d: -f2` MEMORY=`free -mh | grep -i "mem" | awk '{print$2}'` DISKNUM=`fdisk -l | grep -i "/dev" | grep -i "disk" | wc -l` systemname=("HOSTNAME" "IP" "SYSTEM VERSION" "CORE VERSION" "CPU" "MEMORY SIZE") systeminfo=("$HOSTNAME" "$IP" "$SYSTEM" "$CORE" "$CPU" "$MEMORY") for s in `seq 1 $DISKNUM`;do eval DISK$s=`fdisk -l | grep -i "/dev" | grep -i "disk" | head -$s | tail -1| awk '{print $2$3$4}' | cut -d',' -f1` eval systeminfo[$(($s+5))]='$'DISK$s systemname[$(($s+5))]="DISK$s SIZE" done for i in ${!systeminfo[*]};do echo "---------------------------------------------------------------------" printf "|%-15s| %-50s|\n" "${systemname[$i]}" "${systeminfo[$i]}" done echo "---------------------------------------------------------------------" #执行结果 [root@centos8 ~]# ./systeminfo.sh --------------------------------------------------------------------- |HOSTNAME | centos8.3.magedu.com | --------------------------------------------------------------------- |IP | 10.0.0.153 3.3.3.3 | --------------------------------------------------------------------- |SYSTEM VERSION | CentOS Linux release 8.3.2011 | --------------------------------------------------------------------- |CORE VERSION | 4.18.0-240.el8.x86_64 | --------------------------------------------------------------------- |CPU | 11th Gen Intel(R) Core(TM) i5-11400H @ 2.70GHz | --------------------------------------------------------------------- |MEMORY SIZE | 1.9Gi | --------------------------------------------------------------------- |DISK1 SIZE | /dev/nvme0n1:200GiB | --------------------------------------------------------------------- -
20分钟内通关vimtutor(可参考https://yyqing.me/post/2017/2017-02-22-vimtutor-chinese-summary)li
#安装并启动中文版vimtutor [root@centos8 ~]# rpm -qi vim-enhanced || yum install -y vim-enhanced && vimtutor zh

浙公网安备 33010602011771号