单纯提供一个相对的解答,并不是标准答案!
单纯就是个解答的参考,写完之后再来这边查查看答案跟你想的一样不一样!?
# A. 创建教材说到的,最大的 UID 号码的帐号 [root@station5-237 ~]# useradd -u 4294967294 maxuser1 [root@station5-237 ~]# id maxuser1 uid=4294967294(maxuser1) gid=1010(maxuser1) groups=1010(maxuser1) # B. 测试更大的 ID 号码 [root@station5-237 ~]# useradd -u 4294967295 maxuser2 useradd: invalid user ID '4294967295' # C. 赶紧删除这个帐号 [root@station5-237 ~]# userdel -r maxuser1所以,最大的帐号其实是 4294967294 才对!教材写的可能是指引~
# a. 创建一个新的帐号 [root@station5-237 ~]# useradd check [root@station5-237 ~]# echo check123 | passwd --stdin check 更改用户 check 的密码。 passwd:所有核对代符都已成功更新。 [root@station5-237 ~]# grep check /etc/shadow check:$6$PgqI4tYyBNaoTt......k5s6OVYQ1rWj2rfYNrsM1zp.:18393:0:99999:7::: [root@station5-237 ~]# date +%s 1589176493 [root@station5-237 ~]# echo $(( $(date +%s) /(60*60*24) )) 18393 <==果然就是今天的日期啊! # b. 修改一下目前 check 这个帐号的密码修订时间,变成 1970-01-01 之前的日子! [root@station5-237 ~]# chage -d 0 check [root@station5-237 ~]# grep check /etc/shadow check:$6$PgqI4tYyBNaoTt......k5s6OVYQ1rWj2rfYNrsM1zp.:0:0:99999:7::: # c. 尝试从 student 变成 check,看看需要输入密码的情况变怎样? [student@station5-237 13:59 1 ~]$ su - check 密码: <==这里输入 check123 喔! You are required to change your password immediately (administrator enforced) <==提示 root 要求的! Current password: <==旧的密码 新 密码: <==新的密码 再次输入新的 密码:<==新的密码 [check@station5-237 ~]$ exit通过这个练习,你就知道怎么强迫用户变更他自己的密码的方式了!
# a. 用比较『保守』,不会删除用户家目录的方法删除 check 这个用户: [root@station5-237 ~]# userdel check [root@station5-237 ~]# ll -d /home/check /var/spool/mail/check drwx------. 3 1008 1010 99 5月 11 14:03 /home/check -rw-rw----. 1 1008 mail 0 5月 11 13:53 /var/spool/mail/check # 果然有无归属的文件文件名存在! # b. 用 find 找出来无归属的文件名与属性 [root@station5-237 ~]# man find ...... -nouser No user corresponds to file's numeric user ID. [root@station5-237 ~]# find /var /home -nouser [root@station5-237 ~]# ll -d $(find /var /home -nouser) drwx------. 3 1008 1010 99 5月 11 14:03 /home/check -rw-------. 1 1008 1010 5 5月 11 14:03 /home/check/.bash_history -rw-r--r--. 1 1008 1010 18 11月 9 2019 /home/check/.bash_logout -rw-r--r--. 1 1008 1010 141 11月 9 2019 /home/check/.bash_profile -rw-r--r--. 1 1008 1010 312 11月 9 2019 /home/check/.bashrc drwxr-xr-x. 4 1008 1010 39 2月 26 09:02 /home/check/.mozilla drwxr-xr-x. 2 1008 1010 6 5月 14 2019 /home/check/.mozilla/extensions drwxr-xr-x. 2 1008 1010 6 5月 14 2019 /home/check/.mozilla/plugins -rw-rw----. 1 1008 mail 0 5月 11 13:53 /var/spool/mail/check # c. 请删除这几个无归属文件: [root@station5-237 ~]# rm -r $(find /var /home -nouser)
student:$6$3iq4VYrt$Hg62ID...RVbE/:16849:5:180:7:::
# student:$6$3iq4VYrt$Hg62ID...RVbE/:16849:5:180:7::: [root@station5-237 ~]# echo $((16849*60*60*24)) 1455753600 [root@station5-237 ~]# date --date="@$(echo $((16849*60*60*24)))" 四 2月 18 08:00:00 CST 2016所以,差不多是 2016 年 2 月 18 日前后!
# student:$6$3iq4VYrt$Hg62ID...RVbE/:16849:5:180:7:::
所以是 2/18 之后的 5 日内不能修改,应该是 2016/02/22 (含)之前无法修改喔!# student:$6$3iq4VYrt$Hg62ID...RVbE/:16849:5:180:7::: [root@station5-237 ~]# date --date="2016/02/18 + 180days" 二 8月 16 00:00:00 CST 2016所以,『大概』是在 2016/08/16 前后需要修改比较好!不要等到最后一天啊!
# A. 使用 passwd 检查 testuser1 的密码状态 [root@station5-237 ~]# passwd --help 用法: passwd [OPTION...]锁定密码还挺有趣的!因为密码字段的『长度』是固定的,所以,只要密码字段长度改变,该密码就完全无用!因此, 暂时在密码前面加上两个 !! 就可以让该帐号失效了!-k, --keep-tokens 保留未过期的验证代符 -d, --delete 删除已有命名帐号的密码(仅限 root 运行);若有的话也移除密码锁定 -l, --lock 锁住已命名帐号的密码 (仅限 root 运行) -u, --unlock 解开已命名帐号的密码锁定 (仅限 root 运行) -e, --expire 让已命名帐号的密码过期 (仅限 root 运行) -f, --force 强制作业 -x, --maximum=DAYS 最大密码有效期限 (仅限 root 运行) -n, --minimum=DAYS 最小密码有效期限 (仅限 root 运行) -w, --warning=DAYS 用户在密码过期前收到警告的天数 (仅限 root 运行) -i, --inactive=DAYS 帐号在密码过期后即将被禁用前的天数 (仅限 root 运行) -S, --status 回报已命名帐号上的密码状态 (仅限 root 运行) --stdin 由 stdin 读取新的代符(仅限 root 运行) Help options: -?, --help 显示本说明消息 --usage 显示简短的使用说明 [root@station5-237 ~]# passwd -S testuser1 testuser1 PS 2020-05-11 0 99999 7 -1 (密码已设置,SHA512 加密法。) # B. 调整最大密码存活时间从 99999 变成 180 天 [root@station5-237 ~]# passwd -x 180 testuser1 调整用户 testuser1 的期限数据。 passwd: 成功 [root@station5-237 ~]# passwd -S testuser1 testuser1 PS 2020-05-11 0 180 7 -1 (密码已设置,SHA512 加密法。) # C. 警告期限从 7 天变成 14 天 [root@station5-237 ~]# passwd -w 14 testuser1 调整用户 testuser1 的期限数据。 passwd: 成功 [root@station5-237 ~]# passwd -S testuser1 testuser1 PS 2020-05-11 0 180 14 -1 (密码已设置,SHA512 加密法。) # D. 锁定这个帐号的密码使用权限 [root@station5-237 ~]# passwd -l testuser1 锁定用户 testuser1 的密码。 passwd: 成功 [root@station5-237 ~]# passwd -S testuser1 testuser1 LK 2020-05-11 0 180 14 -1 (密码已锁定。) [root@station5-237 ~]# grep testuser1 /etc/shadow testuser1:!!$6$80dXJbaTImyTNKKd$pSELDyrLl......f8dYmw3oknrTlIZOQSStgJsFdU1:18393:0:180:14:::
# A. 使用 chage 观察用户密码 [root@station5-237 ~]# chage --help Usage: chage [options] LOGIN Options: -d, --lastday LAST_DAY set date of last password change to LAST_DAY -E, --expiredate EXPIRE_DATE set account expiration date to EXPIRE_DATE -h, --help display this help message and exit -I, --inactive INACTIVE set password inactive after expiration to INACTIVE -l, --list show account aging information -m, --mindays MIN_DAYS set minimum number of days before password change to MIN_DAYS -M, --maxdays MAX_DAYS set maximum number of days before password change to MAX_DAYS -R, --root CHROOT_DIR directory to chroot into -W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS [root@station5-237 ~]# LANG=C chage -l testuser1 Last password change : May 11, 2020 Password expires : Nov 07, 2020 Password inactive : never Account expires : never Minimum number of days between password change : 0 Maximum number of days between password change : 180 Number of days of warning before password expires : 14 # B. 尝试修改密码最大存活时间 [root@station5-237 ~]# chage -M 365 testuser1 [root@station5-237 ~]# LANG=C chage -l testuser1 Last password change : May 11, 2020 Password expires : May 11, 2021 Password inactive : never Account expires : never Minimum number of days between password change : 0 Maximum number of days between password change : 365 Number of days of warning before password expires : 14 # C. 警告时限则改为 30 天 [root@station5-237 ~]# chage -W 30 testuser1 [root@station5-237 ~]# LANG=C chage -l testuser1 Last password change : May 11, 2020 Password expires : May 11, 2021 Password inactive : never Account expires : never Minimum number of days between password change : 0 Maximum number of days between password change : 365 Number of days of warning before password expires : 30 # D. 使用 usermod 解开密码锁定的问题 [root@station5-237 ~]# usermod --help Usage: usermod [options] LOGIN Options: -L, --lock lock the user account -U, --unlock unlock the user account ...... [root@station5-237 ~]# usermod -U testuser1 [root@station5-237 ~]# grep testuser1 /etc/shadow testuser1:$6$80dXJbaTImyTNKKd$pSELDyrLl.......f8dYmw3oknrTlIZOQSStgJsFdU1:18393:0:365:30::: [root@station5-237 ~]# passwd -S testuser1 testuser1 PS 2020-05-11 0 365 30 -1 (密码已设置,SHA512 加密法。)
[root@station5-237 ~]# cd ~/bin [root@station5-237 bin]# cat > users.txt << eof > linuxuser1 > linuxuser2 > linuxuser3 > eof [root@station5-237 bin]# cat users.txt linuxuser1 linuxuser2 linuxuser3 [root@station5-237 bin]# vim account.sh #!/bin/bash users=$( cat users.txt ) for username in ${users} do useradd ${username} echo ${username} | passwd --stdin ${username} chage -d 0 ${username} done [root@station5-237 bin]# chmod a+x account.sh [root@station5-237 bin]# account.sh 更改用户 linuxuser1 的密码。 passwd:所有核对代符都已成功更新。 更改用户 linuxuser2 的密码。 passwd:所有核对代符都已成功更新。 更改用户 linuxuser3 的密码。 passwd:所有核对代符都已成功更新。
[root@station5-237 ~]# mkdir /dev/shm/mydir [root@station5-237 ~]# touch /dev/shm/myfile [root@station5-237 ~]# ll -d /dev/shm/my* drwxr-xr-x. 2 root root 40 5月 11 15:54 /dev/shm/mydir -rw-r--r--. 1 root root 0 5月 11 15:54 /dev/shm/myfile # 原因是这样的! umask 代表移除的权限,所以 022 代表减去 ----w--w- 由于目录的 x 很重要,因此目录的缺省权限应该是 rwxrwxrwx ,文件则应该是 rw-rw-rw-,因此: 目录: (rwxrwxrwx) - (----w--w-) ==> rwxr-xr-x 文件: (rw-rw-rw-) - (----w--w-) ==> rw-r--r--
[root@station5-237 bin]# visudo ## Allow root to run any commands anywhere root ALL=(ALL) ALL student ALL=(ALL) ALL # 增加上面这行就可以了!
# a. 初次使用 sudo 时,才会有提示功能。 # 而且在第一次输入密码后的 5 分钟内,都可以不用再次输入密码 [student@station5-237 16:55 2 ~]$ sudo grep student /etc/shadow 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 student: <==这里输入 student 自己的密码!不是 root 的! student:$6$unA/8Xw1.tQQaGh6$QfDjurdasF.......bVynh5IOEzVSeo/hEqs/:18343:0:99999:7::: [student@station5-237 16:55 3 ~]$ # b. 输入自己的密码,而且一直用 root 身份操作系统喔! [student@station5-237 16:55 3 ~]$ sudo su - [root@station5-237 ~]#只要在最近运行 sudo 的 5 分钟内再次使用 sudo 时,就无须重新输入密码!系统会假设你还是你!如果超过 5 分钟以上才又操作 sudo, 那就得要重新输入一次『用户自己的密码』了!
[linuxuser1@station5-237 ~]$ id linuxuser1 uid=1008(linuxuser1) gid=1010(linuxuser1) groups=1010(linuxuser1) # 确定没有加入 wheel 群组喔! [linuxuser1@station5-237 ~]$ sudo tail /etc/shadow [sudo] password for linuxuser1: <==输入 linuxuser1 自己的密码 linuxuser1 is not in the sudoers file. This incident will be reported. # 肯定的说, linuxuser1 并不在 sudoers 的支持文件内!
[root@station5-237 ~]# usermod -a -G wheel linuxuser1 [root@station5-237 ~]# id linuxuser1 uid=1008(linuxuser1) gid=1010(linuxuser1) groups=1010(linuxuser1),10(wheel) # 有喔!是有支持的喔!
[linuxuser1@station5-237 ~]$ id uid=1008(linuxuser1) gid=1010(linuxuser1) groups=1010(linuxuser1),10(wheel) # 务必确定自己能看到!否则请注销后再次登录才会生效! [linuxuser1@station5-237 ~]$ sudo tail /etc/shadow [sudo] password for linuxuser1: linuxuser3:$6$3pTauo0YPDkSKXl6$o79.xaYl......gQBdQRkAxFzAgxhgsYrODwtgV31:0:0:99999:7::: mailuser1:$6$AwPP4xUtWrY/ADC3$Fes4vW/SV......Isp6m/W3Hyz70QqoEu5OjIBaJ1:18393:0:99999:7::: # 是的!确定有支持了!
# A. 找出系统支持 EXT4 文件系统的磁盘 [root@station5-237 ~]# df -T | grep -v tmpfs Filesystem Type 1K-blocks Used Available Use% Mounted on /dev/mapper/centos-root xfs 10475520 4730196 5745324 46% / /dev/vda2 ext4 1998672 149448 1727984 8% /boot /dev/mapper/centos-home xfs 3135488 71160 3064328 3% /home [root@station5-237 ~]# mount | grep /boot /dev/vda2 on /boot type ext4 (rw,relatime,seclabel) # B. 查找一下挂载参数为何 [root@station5-237 ~]# dumpe2fs /dev/vda2 | less Filesystem volume name:Last mounted on: /boot Filesystem UUID: 73f13e7b-43c4-43c5-93b4-9e65b962752d Filesystem magic number: 0xEF53 Filesystem revision #: 1 (dynamic) Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent 64bit flex_bg sparse_super large_file huge_file dir_nlink extra_isize metadata_csum Filesystem flags: signed_directory_hash Default mount options: user_xattr acl ..... # 果然挂载缺省就支持 ACL 了!基本上,无须观察 mount 的结果!
# a. 设计群组,题目要求要使用系统群组而非一般群组 [root@station5-237 ~]# groupadd -r myteacher [root@station5-237 ~]# groupadd -r mystudent [root@station5-237 ~]# egrep 'myteacher|mystudent' /etc/group myteacher:x:976: mystudent:x:975: <==会发现, GID 都小于 1000 以下! # b. 开始创建帐号与密码 [root@station5-237 ~]# useradd -G myteacher myteacher1 [root@station5-237 ~]# useradd -G myteacher myteacher2 [root@station5-237 ~]# useradd -G myteacher myteacher3 [root@station5-237 ~]# useradd -G mystudent mystudent1 [root@station5-237 ~]# useradd -G mystudent mystudent2 [root@station5-237 ~]# useradd -G mystudent mystudent3 # c. 创建密码 [root@station5-237 ~]# echo password | passwd --stdin myteacher1 Changing password for user myteacher1. passwd: all authentication tokens updated successfully. ....
# a. 先创建 mystudent 群组的共享目录在 /srv/myshare 目录下 [root@station5-237 ~]# cd /srv/ [root@station5-237 srv]# mkdir myshare [root@station5-237 srv]# chgrp mystudent myshare [root@station5-237 srv]# chmod 2770 myshare/ [root@station5-237 srv]# ll -d myshare/ drwxrws---. 2 root mystudent 6 May 11 21:22 myshare/ # b.c. 让老师拥有查找权,但是不能修改 (不用给 w 喔!) [root@station5-237 srv]# setfacl -m g:myteacher:rx myshare/ [root@station5-237 srv]# setfacl -m d:g:myteacher:rx myshare/ [root@station5-237 srv]# setfacl -m u:myteacher3:- myshare/ [root@station5-237 srv]# getfacl myshare/ # file: myshare/ # owner: root # group: mystudent # flags: -s- user::rwx user:myteacher3:--- group::rwx group:myteacher:r-x mask::rwx other::--- default:user::rwx default:group::rwx default:group:myteacher:r-x default:mask::rwx default:other::---
# a. 创建系统群组 [root@station5-237 ~]# groupadd -r sysgroup [root@station5-237 ~]# grep sysgroup /etc/group sysgroup:x:974: # b. 创建系统帐号 [root@station5-237 ~]# useradd -r -M -G sysgroup mysysuser1 [root@station5-237 ~]# useradd -r -M -G sysgroup mysysuser2 [root@station5-237 ~]# useradd -r -M -G sysgroup mysysuser3 [root@station5-237 ~]# echo mysystem | passwd --stdin mysysuser1 [root@station5-237 ~]# echo mysystem | passwd --stdin mysysuser2 [root@station5-237 ~]# echo mysystem | passwd --stdin mysysuser3 [root@station5-237 ~]# id mysysuser1 uid=398(mysysuser1) gid=398(mysysuser1) groups=398(mysysuser1),974(sysgroup) # UID/GID 都小于 1000,且支持 sysgroup 这样! # c. 创建特定用户 [root@station5-237 ~]# mkdir /remote [root@station5-237 ~]# useradd -d /remote/mysysuser4 mysysuser4 [root@station5-237 ~]# ll -d /remote/mysysuser4 drwx------. 4 mysysuser4 mysysuser4 89 May 11 21:45 /remote/mysysuser4 [root@station5-237 ~]# echo mysysuser4 | passwd --stdin mysysuser4 # d. 删除一般用户,但保留家目录: [root@station5-237 ~]# ll -d /home/linuxuser3 drwx------. 3 1010 1012 78 May 11 15:50 /home/linuxuser3 # e. 依据上述数据,完成用户的重建。其中,密码给予之前默认值 [root@station5-237 ~]# groupadd -g 1012 linuxuser3 [root@station5-237 ~]# ll -d /home/linuxuser3 drwx------. 3 1010 linuxuser3 78 May 11 15:50 /home/linuxuser3 # 因为 UID/GID 并没有相同,所以系统无法自动给予正确的 gid,所以要先设置原本的 GID [root@station5-237 ~]# useradd -u 1010 -g linuxuser3 linuxuser3 useradd: warning: the home directory already exists. Not copying any file from skel directory into it. Creating mailbox file: File exists [root@station5-237 ~]# ll -d /home/linuxuser3 drwx------. 3 linuxuser3 linuxuser3 78 May 11 15:50 /home/linuxuser3 [root@station5-237 ~]# id linuxuser3 uid=1010(linuxuser3) gid=1012(linuxuser3) groups=1012(linuxuser3) # 接下来,指定正确的 UID 号码与 gid 群组名称,就可以顺利建置这个帐号了! [root@station5-237 ~]# echo linuxuser3 | passwd --stdin linuxuser3
# a. 创建共享目录 [root@station5-237 ~]# cd /opt [root@station5-237 opt]# mkdir sysdir [root@station5-237 opt]# chgrp sysgroup sysdir [root@station5-237 opt]# chmod 2770 sysdir/ [root@station5-237 opt]# ll drwxrws---. 2 root sysgroup 6 May 11 21:52 sysdir # b. 设置 mysysuser4 的可查阅权限 [root@station5-237 opt]# setfacl -m u:mysysuser4:rx sysdir/ [root@station5-237 opt]# setfacl -m d:u:mysysuser4:rx sysdir/ [root@station5-237 opt]# getfacl sysdir/ # file: sysdir/ # owner: root # group: sysgroup # flags: -s- user::rwx user:mysysuser4:r-x group::rwx mask::rwx other::--- default:user::rwx default:user:mysysuser4:r-x default:group::rwx default:mask::rwx default:other::--- # c. 拒绝 mysysuser3 的使用 [root@station5-237 opt]# setfacl -m u:mysysuser3:- sysdir [root@station5-237 opt]# getfacl sysdir/ # file: sysdir/ # owner: root # group: sysgroup # flags: -s- user::rwx user:mysysuser3:--- user:mysysuser4:r-x group::rwx mask::rwx other::--- default:user::rwx default:user:mysysuser4:r-x default:group::rwx default:mask::rwx default:other::---