1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。
[root@localhost ~]# who | cut -d" " -f1 | uniq jobs root
2、取出最后登录到当前系统的用户的相关信息。
[root@localhost ~]# who | cut -d" " -f1 | uniq | tail -1 root
3、取出当前系统上被用户当作其默认shell的最多的那个shell。
[root@localhost ~]# cat /etc/passwd | cut -d: -f7 | uniq -c | sort -n | tail -1 21 /sbin/nologin
4、将/etc/passwd中的第三个字段数值最大的后10个用户的信息全部改为大写后保存至/tmp/maxusers.txt文件中。
[root@localhost ~]# cat /etc/passwd | sort -t: -k3 -n | tail -10 | tr 'a-z' 'A-Z' > /tmp/maxusers.txt [root@localhost ~]# cat /tmp/maxusers.txt ODS:X:999:998:SOFTHSM PRIVATE KEYS OWNER://VAR/LIB/SOFTHSM:/SBIN/NOLOGIN JOBS:X:1000:1000:JOBS:/HOME/JOBS:/BIN/BASH TOM:X:1001:1001::/HOME/TOM:/BIN/BASH BASH:X:1002:1003::/HOME/BASH:/BIN/BASH BASHER:X:1003:1004::/HOME/BASHER:/BIN/BASH TESTBASH:X:1004:1005::/HOME/TESTBASH:/BIN/BASH NOLOGIN:X:1005:1006::/HOME/NOLOGIN:/SBIN/NOLOGIN USER1:X:1006:1007::/HOME/USER1:/BIN/BASH JERRY:X:65533:1002::/HOME/JERRY:/BIN/BASH NFSNOBODY:X:65534:65534:ANONYMOUS NFS USER:/VAR/LIB/NFS:/SBIN/NOLOGIN [root@localhost ~]#
5、取出当前主机的IP地址,提示:对ifconfig命令的结果进行切分。
[root@localhost ~]# ifconfig | egrep '((\<[1-9]\.)|([1-9][0-9]\.)|(1[0-9][0-9]\.)|(2[0-4][0-9]\.)|(25[0-5]\.)\>)\1*' inet 192.168.2.99 netmask 255.255.255.0 broadcast 192.168.2.255 RX packets 72860 bytes 22883954 (21.8 MiB) TX packets 29823 bytes 4663870 (4.4 MiB) inet 127.0.0.1 netmask 255.0.0.0 RX packets 16 bytes 1224 (1.1 KiB) TX packets 16 bytes 1224 (1.1 KiB) inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
6、列出/etc目录下所有以.conf结尾的文件的文件名,并将其名字转换为大写后保存至/tmp/etc.conf文件中。
[root@localhost ~]# ls -R /etc/ | grep ".*.conf$" | tr 'a-z' 'A-Z' > /tmp/etc.conf
7、显示/var目录下一级子目录或文件的总个数。
[root@localhost ~]# echo $[$[$(ll /var | grep "^d.*" | wc -l)]+$[$(ll /var | grep "^-.*" | wc -l)]] 23
8、取出/etc/group文件中第三个字段数值最小的10个组的名字。
[root@localhost ~]# cat /etc/group | sort -t: -k3 -n | head -10 | cut -d: -f1 root bin daemon sys adm tty disk lp mem kmem
9、将/etc/fstab和/etc/issue文件的内容合并为同一个内容后保存至/tmp/etc.test文件中。
[root@localhost ~]# cat /etc/fstab /etc/issue > /tmp/etc.test [root@localhost ~]# cat /tmp/etc.test # # /etc/fstab # Created by anaconda on Fri Mar 11 22:14:07 2016 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # /dev/mapper/centos-root / xfs defaults 0 0 UUID=73822afe-bc00-431b-8851-0151d8054a67 /boot xfs defaults 0 0 /dev/mapper/centos-home /home xfs defaults 0 0 /dev/mapper/centos-swap swap swap defaults 0 0 Red Hat Linux 9 Kernel 1.2.3.4
10、请总结描述用户和组管理类命令的使用方法并完成以下练习:
用户管理命令总结:
useradd:添加用户
命令格式:
useradd [options] LOGIN
选项:
-u UID: [UID_MIN, UID_MAX], 定义在/etc/login.defs -g GID:指明用户所属基本组,可为组名,也可以GID; -c "COMMENT":用户的注释信息; -d /PATH/TO/HOME_DIR: 以指定的路径为家目录; -s SHELL: 指明用户的默认shell程序,可用列表在/etc/shells文件中; -G GROUP1[,GROUP2,...[,GROUPN]]]:为用户指明附加组;组必须事先存在; -r: 创建系统用户
usermod:修改用户属性
命令格式:
usermod [options] LOGIN
选项:
-u UID: 新UID -g GID: 新基本组 -G GROUP1[,GROUP2,...[,GROUPN]]]:新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使用-a选项,表示append; -s SHELL:新的默认SHELL; -c 'COMMENT':新的注释信息; -d HOME: 新的家目录;原有家目录中的文件不会同时移动至新的家目录;若要移动,则同时使用-m选项; -l login_name: 新的名字; -L: lock指定用户 -U: unlock指定用户 -e YYYY-MM-DD: 指明用户账号过期日期; -f INACTIVE: 设定非活动期限;
chsh:修改用户登录shell
命令格式:
chsh [-s shell] [-l] [-u] [-v] [username]
选项:
-s:指定登录shell -l:打印出/etc/shells下的shell列表并退出
chfn:改变指纹信息
命令格式:
chfn [-f full-name] [-o office] ,RB [ -p office-phone] [-h home-phone] -u] [-v] [username]
选项:
-f, 指定真实名称 -o, 指定办公室号码 -p, 指定办公电话 -h, 指定家庭电话
chage:修改用户密码过期信息
命令格式:
chage [options] LOGIN
选项:
-d, LAST_DAY:设置1970年1月1日起最后一次更改密码的时间,如果设置为0则下次登录必须修改密码 -E, --expiredate EXPIRE_DATE:设置自1970年1月1日起,经过多长时间后账号将不能使用 -I, --inactive INACTIVE:设置账号被锁定前,密码过期的天数 -m, --mindays MIN_DAYS:设置修改密码的最小天数 -M, --maxdays MAX_DAYS:设置密码修改的最大天数 -W, --warndays WARN_DAYS:设置密码修改前的告警天数
userdel:删除用户账户与相关文件
命令格式:
userdel [options] LOGIN
选项:
-f,强制 -r,删除用户家目录
组管理命令总结:
groupadd:添加用户组
命令格式:
groupadd [options] group
选项:
-g GID: 指明GID号;[GID_MIN, GID_MAX] -r: 创建系统组;
groupmod:修改组属性
命令格式:
groupmod [options] GROUP
选项:
-n group_name: 新名字 -g GID: 新的GID;
groupdel:删除用户组
命令格式:
groupdel [options] GROUP
选项:
-R:改变CHROOT_DIR的目录并使用CHROOT_DIR的配置文件
passwd:给用户添加密码
命令格式:
passwd [OPTIONS] UserName passwd
选项:
-l 锁定指定用户 -u 解锁指定用户 -n mindays: 指定最短使用期限 -x maxdays:最大使用期限 -w warndays:提前多少天开始警告 -i inactivedays:非活动期限; --stdin:从标准输入接收用户密码; echo "PASSWORD" | passwd --stdin USERNAME
gpasswd:组密码
命令格式:
gpasswd [OPTION] GROUP
选项:
-a user: 将user添加至指定组中; -d user: 删除用户user的以当前组为组名的附加组 -A user1,user2,...: 设置有管理权限的用户列表
pwck:验证密码文件的完整性
命令格式;
pwck [options] [passwd [ shadow ]]
选项:
-q,仅显示错误信息,来自用户任何操作的告警信息则不会显示 -r,在只读模式下运行pwck命令 -R:改变CHROOT_DIR的目录并使用CHROOT_DIR的配置文件 -s,在/etc/passwd,/etc/shadow文件中以UID为标准进行排序
退出值:
0 success 成功 1 invalid command syntax 参数错误 2 one or more bad password entries 输入了一个或多个错误密码 3 can't open password files 不能打开密码文件 4 can't lock password files 不能锁定密码文件 5 can't update password files 不能更新密码文件 6 can't sort password files 不能对密码文件排序
id:打印真实有效的用户和组ID
命令格式:
id [OPTION]... [USER]
选项:
-u: UID -g: GID -G: Groups -n: Name
who:显示谁登陆系统
命令格式:
who [OPTION]... [ FILE | ARG1 ARG2 ]
选项:
-b:系统最近一次启动的时间 -d:显示死亡的进程 -l:显示系统登陆进程 -m:只有主机名和用户相关的标准输入 -q:所有登录的用户名和登录的用户数 -r:显示当前运行等级 -t:显示最后一次系统时钟的变化 -u:列出登陆的用户
whoami:显示有效的用户ID
命令格式:
whoami [OPTION]...
w:显示谁登陆了系统并且在做什么
命令格式:
w [options] user [...]
选项:
-h:不显示头部信息 -u:忽略在当前进程和CPU时间指明的用户名 -s:使用短格式,不显示登录时间、JCPU时间和PCPU时间
su:使用替代用户和组ID运行一个命令
命令格式:
su [options...] [-] [user [args...]]
选项:
-c:使用-c选项传递一个命令到shell --session-command=command:与-c一样,但不会创建新的会话 -g:指定基本组,这个命令只允许root用户使用 -G:指定附加组,这个命令只允许root用户使
退出值:
1 Generic error before executing the requested command 126 The requested command could not be executed 127 The requested command could was not found
(1)、创建组distro,其GID为2016;
[root@localhost ~]# groupadd -g 2016 distro [root@localhost ~]# cat /etc/group | tail -1 distro:x:2016:
(2)、创建用户mandriva, 其ID号为1005;基本组为distro;
[root@localhost ~]# useradd -u 1005 -G distro mandriva
(3)、创建用户mageia,其ID号为1100,家目录为/home/linux;
[root@localhost ~]# useradd -u 1100 -d /home/linux/ mageia
(4)、给用户mageia添加密码,密码为mageedu;
[root@localhost ~]# echo "mageedu" | passwd --stdin mageia Changing password for user mageia. passwd: all authentication tokens updated successfully.
(5)、删除mandriva,但保留其家目录;
[root@localhost ~]# userdel mandriva [root@localhost ~]# ls /home/ | grep man mandriva
(6)、创建用户slackware,其ID号为2002,基本组为distro,附加组peguin;
[root@localhost ~]# groupadd peguin [root@localhost ~]# useradd -u 2002 -g distro -G peguin slackware [root@localhost ~]# id slackware uid=2002(slackware) gid=2016(distro) groups=2016(distro),2017(peguin)
(7)、修改slackware的默认shell为/bin/tcsh;
[root@localhost ~]# usermod -s tcsh slackware [root@localhost ~]# cat /etc/passwd | grep tcsh slackware:x:2002:2016::/home/slackware:tcsh
(8)、为用户slackware新增附加组admins;
[root@localhost ~]# groupadd admins [root@localhost ~]# usermod -G admins slackware [root@localhost ~]# id slackware uid=2002(slackware) gid=2016(distro) groups=2016(distro),2018(admins)
(9)、为slackware添加密码,且要求密码最短使用期限为3天,最长为180天,警告为3天;
[root@localhost ~]# echo "obama" | passwd -n 3 -x 180 -w 3 --stdin slackware Adjusting aging data for user slackware. passwd: Success [root@localhost ~]# cat /etc/shadow | grep slackware slackware:!!:16974:3:180:3:::
(10)、添加用户openstack,其ID号为3003, 基本组为clouds,附加组为peguin和nova;
[root@localhost ~]# useradd -u 3003 -G peguin,nova openstack [root@localhost ~]# id openstack uid=3003(openstack) gid=3003(openstack) groups=3003(openstack),2017(peguin),2020(nova)
(11)、添加系统用户mysql,要求其shell为/sbin/nologin;
[root@localhost ~]# useradd -r -s /sbin/nologin mysql [root@localhost ~]# cat /etc/passwd | grep mysql mysql:x:982:977::/home/mysql:/sbin/nologin
(12)、使用echo命令,非交互式为openstack添加密码。
[root@localhost ~]# echo "obama" | passwd --stdin openstack Changing password for user openstack. passwd: all authentication tokens updated successfully.
原创文章,作者:Anaconda,如若转载,请注明出处:http://www.178linux.com/19557
评论列表(1条)
写的很棒,排版也很好,也使用的一些案例,但是取ip地址好像没有取出来吧,在仔细想一下正则应该怎么写