1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。


[root@localhost ~]# who

root     tty1         2016-12-10 06:24

root     pts/1        2016-12-10 10:47 (192.168.1.100)

root     pts/2        2016-12-10 10:54 (192.168.1.100)

py2      pts/3        2016-12-10 12:04 (192.168.1.100)

py3      pts/4        2016-12-10 12:04 (192.168.1.100)

py2      pts/5        2016-12-10 12:05 (192.168.1.100)

[root@localhost ~]# who | cut -d' ' -f1 | sort | uniq

py2

py3

root

[root@localhost ~]# who | cut -d' ' -f1 | sort -u

py2

py3

root


2、取出当前系统上被用户当作其默认shell的最多的那个shell。


[root@localhost ~]# cat /etc/passwd | cut -d: -f7 | uniq -c | sort -n | tail -n 1 错误

  cat /etc/passwd | cut -d: -f7 | sort -n | uniq -c | tail -n 1 正确

     25 /sbin/nologin


3、将/etc/passwd中的第三个字段数值最大的后10个用户的信息全部改为大写后保存至/tmp/maxusers.txt文件中。


[root@localhost ~]# sort -t: -k3 -n /etc/passwd | tail | tr 'a-z' 'A-Z' > /tmp/maxusers.txt

[root@localhost ~]# cat /tmp/maxusers.txt 

NOBODY:X:99:99:NOBODY:/:/SBIN/NOLOGIN

USBMUXD:X:113:113:USBMUXD USER:/:/SBIN/NOLOGIN

AVAHI-AUTOIPD:X:170:170:AVAHI IPV4LL STACK:/VAR/LIB/AVAHI-AUTOIPD:/SBIN/NOLOGIN

ABRT:X:173:173::/ETC/ABRT:/SBIN/NOLOGIN

PULSE:X:497:495:PULSEAUDIO SYSTEM DAEMON:/VAR/RUN/PULSE:/SBIN/NOLOGIN

SASLAUTH:X:498:76:SASLAUTHD USER:/VAR/EMPTY/SASLAUTH:/SBIN/NOLOGIN

RTKIT:X:499:497:REALTIMEKIT:/PROC:/SBIN/NOLOGIN

PY2:X:500:500::/HOME/PY2:/BIN/BASH

PY3:X:501:501::/HOME/PY3:/BIN/BASH

NFSNOBODY:X:65534:65534:ANONYMOUS NFS USER:/VAR/LIB/NFS:/SBIN/NOLOGIN


4、取出当前主机的IP地址,提示:对ifconfig命令的结果进行切分。


[root@localhost ~]# ifconfig eth0 | cut -d: -f2 | head -n 2 | tail -n 1 | cut -d' ' -f1

192.168.1.200

[root@localhost ~]# ifconfig eth1 | cut -d: -f2 | head -n 2 | tail -n 1 | cut -d' ' -f1

192.168.11.200

[root@localhost ~]# ifconfig lo | cut -d: -f2 | head -n 2 | tail -n 1 | cut -d' ' -f1

127.0.0.1


5、显示/var目录下一级子目录或文件的总个数


[root@localhost ~]# ls /var | wc -l

21


6、取出/etc/group文件中第三个字段数值最小的10个组的名字。


[root@localhost ~]# sort -t: -k3 -nr /etc/group | cut -d: -f1,3 | tail 

kmem:9

mem:8

lp:7

disk:6

tty:5

adm:4

sys:3

daemon:2

bin:1

root:0


[root@localhost ~]# sort -t: -k3 -nr /etc/group | cut -d: -f1 | tail 

kmem

mem

lp

disk

tty

adm

sys

daemon

bin

root


7、将/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 Sat Aug 20 06:16:38 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

#

UUID=fd9212f3-af4b-47d1-a310-448275a7018b /                       ext4    defaults        1 1

UUID=d9d47039-9a27-4a67-b91a-a75385f30f0b /boot                   ext4    defaults        1 2

tmpfs                   /dev/shm                tmpfs   defaults,size=2048M        0 0

devpts                  /dev/pts                devpts  gid=5,mode=620  0 0

sysfs                   /sys                    sysfs   defaults        0 0

proc                    /proc                   proc    defaults        0 0

CentOS release 6.6 (Final)

Kernel \r on an \m


8、请总结描述用户和组管理类命令的使用方法并完成以下练习:

(1)、创建组distro,其GID为2016;

[root@localhost ~]# groupadd -g 2016 distro

[root@localhost ~]# cat /etc/group | tail -n 1

distro:x:2016:


(2)、创建用户mandriva, 其ID号为1005;基本组为distro;


[root@localhost ~]# useradd -u 1005 -g 2016 mandriva

[root@localhost ~]# cat /etc/passwd | tail -n 1

mandriva:x:1005:2016::/home/mandriva:/bin/bash


(3)、创建用户mageia,其ID号为1100,家目录为/home/linux;


[root@localhost ~]# useradd -u 1100 -d /home/linux mageia

[root@localhost ~]# cat /etc/passwd | tail -n 1

mageia:x:1100:1100::/home/linux:/bin/bash


(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/

gentoo  linux  mandriva  py2  py3  user1  user2.2


(6)、创建用户slackware,其ID号为2002,基本组为distro,附加组peguin;


[root@localhost ~]# groupadd peguin

[root@localhost ~]# useradd -u 2002 -g 2016 -G 2019 slackware

[root@localhost ~]# cat /etc/passwd | tail -n 1

slackware:x:2002:2016::/home/slackware:/bin/bash

[root@localhost ~]# id slackware

uid=2002(slackware) gid=2016(distro) groups=2016(distro),2019(peguin)


(7)、修改slackware的默认shell为/bin/tcsh;


[root@localhost ~]# usermod -s /bin/tcsh slackware

[root@localhost ~]# tail -n 1 /etc/passwd

slackware:x:2002:2016::/home/slackware:/bin/tcsh


(8)、为用户slackware新增附加组admins;


[root@localhost ~]# groupadd admins

[root@localhost ~]# usermod -a -G admins slackware

[root@localhost ~]# id slackware

uid=2002(slackware) gid=2016(distro) groups=2016(distro),2019(peguin),2020(admins)


(9)、为slackware添加密码,且要求密码最短使用期限为3天,最长为180天,警告为3天;


[root@localhost ~]# passwd -n 3 -x 180 -w 3 slackware

Adjusting aging data for user slackware.

passwd: Success

[root@localhost ~]# tail -n 1 /etc/shadow

slackware:!!:17147:3:180:3:::

[root@localhost ~]# passwd -S slackware

slackware LK 2016-12-12 3 180 3 -1 (Password locked.)


(10)、添加用户openstack,其ID号为3003, 基本组为clouds,附加组为peguin和nova;


[root@localhost ~]# useradd -u 3003 -g 2022 -G peguin,nova openstack

[root@localhost ~]# id openstack

uid=3003(openstack) gid=2022(clouds) groups=2022(clouds),2019(peguin),2021(nova)


(11)、添加系统用户mysql,要求其shell为/sbin/nologin;


[root@localhost ~]# useradd -r mysql -s /sbin/nologin 

[root@localhost ~]# id mysql

uid=496(mysql) gid=491(mysql) groups=491(mysql)

[root@localhost ~]# cat /etc/passwd | tail -n 1

mysql:x:496:491::/home/mysql:/sbin/nologin


(12)、使用echo命令,非交互式为openstack添加密码。


[root@localhost ~]# echo "openstack" | passwd --stdin openstack

Changing password for user openstack.

passwd: all authentication tokens updated successfully.


9、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。

[root@localhost ~]# useradd tuser1

[root@localhost ~]# echo "tuser1" | passwd --stdin tuser1

Changing password for user tuser1.

passwd: all authentication tokens updated successfully.

[root@localhost ~]# cp -rv /etc/skel/ /home/tuser1/

`/etc/skel/' -> `/home/tuser1/skel'

`/etc/skel/.bash_logout' -> `/home/tuser1/skel/.bash_logout'

`/etc/skel/.gnome2' -> `/home/tuser1/skel/.gnome2'

`/etc/skel/.bash_profile' -> `/home/tuser1/skel/.bash_profile'

`/etc/skel/.mozilla' -> `/home/tuser1/skel/.mozilla'

`/etc/skel/.mozilla/plugins' -> `/home/tuser1/skel/.mozilla/plugins'

`/etc/skel/.mozilla/extensions' -> `/home/tuser1/skel/.mozilla/extensions'

`/etc/skel/.bashrc' -> `/home/tuser1/skel/.bashrc'

[root@localhost ~]# chmod -R g=,o= /home/tuser1/

[root@localhost ~]# ls -ld /home/tuser1/

drwx------. 5 tuser1 tuser1 4096 Dec 12 12:44 /home/tuser1/

[root@localhost ~]# ls -lRd /home/tuser1/skel/

drwx------. 4 root root 4096 Dec 12 12:44 /home/tuser1/skel/

[root@localhost ~]# ls -lRa /home/tuser1/skel/


10、显示/proc/meminfo文件中以大写或小写S开头的行;用两种方式;

[tom@localhost ~]$ grep -i '^s' /proc/meminfo 

SwapCached:            0 kB

SwapTotal:             0 kB

SwapFree:              0 kB

Shmem:               172 kB

Slab:             125688 kB

SReclaimable:      65316 kB

SUnreclaim:        60372 kB

[tom@localhost ~]$ grep -i '^[sS]' /proc/meminfo

SwapCached:            0 kB

SwapTotal:             0 kB

SwapFree:              0 kB

Shmem:               172 kB

Slab:             125688 kB

SReclaimable:      65316 kB

SUnreclaim:        60372 kB


11、显示/etc/passwd文件中其默认shell为非/sbin/nologin的用户;


[tom@localhost ~]$ grep -v '/sbin/nologin$' /etc/passwd


12、显示/etc/passwd文件中其默认shell为/bin/bash的用户;


[tom@localhost ~]$ grep '/bin/bash' /etc/passwd


13、找出/etc/passwd文件中的一位数或两位数;


[tom@localhost ~]$ grep -o '\<[0-9]\{1,2\}\>' /etc/passwd


14、显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行;


[tom@localhost ~]$ grep '^#[[:space:]]\+[^[:space:]]\+' /etc/rc.d/rc.sysinit

[tom@localhost ~]$ grep '^#[[:space:]]\+[^[:space:]]' /etc/rc.d/rc.sysinit


15、打出netstat -tan命令执行结果中以‘LISTEN’后或跟空白字符结尾的行;


[tom@localhost ~]$ netstat -tan | grep 'LISTEN[[:space:]]*'


16、添加用户bash, testbash, basher, nologin (此一个用户的shell为/sbin/nologin),而后找出当前系统上其用户名和默认shell相同的用户的信息;


[root@localhost ~]# useradd bash

[root@localhost ~]# useradd basher

[root@localhost ~]# useradd testbash

[root@localhost ~]# useradd -s /sbin/nogloin nologin

[tom@localhost ~]$ grep --color '^\([[:alnum:]]\+\>\).*\1$' /etc/passwd

sync:x:5:0:sync:/sbin:/bin/sync

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

halt:x:7:0:halt:/sbin:/sbin/halt

bash:x:3007:3007::/home/bash:/bin/bash