单纯提供一个相对的解答,并不是标准答案!
单纯就是个解答的参考,写完之后再来这边查查看答案跟你想的一样不一样!?
[student@station10-101 shm]$ su - 密码: [root@station10-101 ~]# cd /dev/shm [root@station10-101 shm]# pwd /dev/shm
[root@station10-101 shm]# cp /etc/fstab . [root@station10-101 shm]# ll fstab -rw-r--r--. 1 root root 655 Mar 15 01:01 fstab
[root@station10-101 shm]# mv fstab newfs [root@station10-101 shm]# ll newfs -rw-r--r--. 1 root root 655 Mar 15 01:01 newfs # 如上所示,要注意的是,文件名改变了,其他则不变!
[root@station10-101 shm]# man chown CHOWN(1) User Commands CHOWN(1) NAME chown - change file owner and group SYNOPSIS chown [OPTION]... [OWNER][:[GROUP]] FILE... chown [OPTION]... --reference=RFILE FILE... DESCRIPTION ......事实上,常用的就有两种语法,一种是通过『 owner:group 』来处理,一种则是通过参考其他文件的数据来处理, 相当有趣!因此,如果想要直接一口气就修改,也能这样做:
[root@station10-101 shm]# id sshd uid=74(sshd) gid=74(sshd) groups=74(sshd) # 确认有此帐号 [root@station10-101 shm]# grep wheel /etc/group wheel:x:10: # 确认有此群组 [root@station10-101 shm]# chown sshd:wheel newfs [root@station10-101 shm]# ll newfs -rw-r--r--. 1 sshd wheel 655 Mar 15 01:01 newfs
[root@station10-101 shm]# chmod 640 newfs [root@station10-101 shm]# ll newfs -rw-r-----. 1 sshd wheel 655 Mar 15 01:01 newfs
[root@station10-101 shm]# date -d "yesterday 13:30" +%m%d%H%M 03141330 # 显示出昨天时间的方式,所以上面的时间就是 3/14 13:30 的意思! [root@station10-101 shm]# ll newfs -rw-r-----. 1 sshd wheel 655 Mar 15 01:01 newfs <==修改前的时间 [root@station10-101 shm]# touch -t 03141330 newfs [root@station10-101 shm]# ll newfs -rw-r-----. 1 sshd wheel 655 Mar 14 13:30 newfs <==修改后的时间
[root@station10-101 shm]# ll newfs -rw-r-----. 1 sshd wheel 655 Mar 14 13:30 newfs [root@station10-101 shm]# chmod a+x newfs [root@station10-101 shm]# ll newfs -rwxr-x--x. 1 sshd wheel 655 Mar 14 13:30 newfs这样就搞定了!同理,如果药让这个文件变成唯读?则可以是『 chmod a-w filename 』这样最快又方便!
[student@station10-101 ~]$ passwd student passwd:只有 root 可指定用户名。 # 这种指令下达方式只有 root 可以使用,因此 student 下达这种指令方式,就会失败! # 也就是说,这个指令根本没有被运行啦! [student@station10-101 ~]$ passwd 更改用户 student 的密码。 Current password: <==这里则是按下 [ctrl]+c 结束! [student@station10-101 ~]$所以,只有 root 才能使用『 passwd 帐号 』的格式,其他用户只能修改自己的密码!直接输入 passwd 即可!
[student@station10-101 ~]$ passwd 更改用户 student 的密码。 Current password: <==这里输入原本的 mystdgo 密码 新 密码: <==这里输入 123456 这个烂密码 不良的密码:密码短于 8 个字符 <==还好,结果密码不被接受! passwd: 验证记号处理错误 [student@station10-101 ~]$ passwd 更改用户 student 的密码。 Current password: <==这里输入原本的 mystdgo 密码 新 密码: <==这里输入 password 这个烂密码 不良的密码:密码无法通过字典比对检查 - 根据辞典单字 passwd: 验证记号处理错误 <==因为密码是在字典单字内,所以不被接受也就是说,如果你的密码设置的太烂,就不会被系统所接受,那就不能改密码!所以,鸟哥一般的作法, 会让用户自己设置能接受的密码,这样密码强度比较强,管理员自己也不用去帮用户伤脑筋! 上面都是错误的!都没有能够修改密码!
[student@station10-101 ~]$ passwd 更改用户 student 的密码。 Current password: <==这里输入原本的 mystdgo 密码 新 密码: <==这里猜一个强密码! 再次输入新的 密码: <==终于被接受!再次输入刚刚的密码 passwd:所有核对代符都已成功更新。
[student@station10-101 ~]$ passwd 更改用户 student 的密码。 Current password: <==这里输入刚刚设置的强密码 新 密码: <==这里输入 mystdgo 不良的密码:密码短于 8 个字符 passwd: 验证记号处理错误因为 mystdgo 也并不是强密码,至少密码长度没有超过 8 个字符,因此不被接受...所以,请用 root 的身份帮 student 修改回来才行!
[root@station10-101 ~]# passwd student Changing password for user student. New password: <==直接输入 mystdgo 即可! BAD PASSWORD: The password is shorter than 8 characters Retype new password: <==再次输入 mystdgo passwd: all authentication tokens updated successfully.看吧! root 很万能,所以,如果耳根子太软,帮人家设计比较不良的密码,很容易出状况!
[root@station10-101 ~]# useradd myuser2 [root@station10-101 ~]# passwd myuser2 Changing password for user myuser2. New password: BAD PASSWORD: The password fails the dictionary check - it is based on a dictionary word Retype new password: passwd: all authentication tokens updated successfully.
[root@station10-101 ~]# useradd myuser3 [root@station10-101 ~]# passwd myuser3 Changing password for user myuser3. New password: BAD PASSWORD: The password fails the dictionary check - it is based on a dictionary word Retype new password: passwd: all authentication tokens updated successfully.
[root@station10-101 ~]# id myuser2 uid=1001(myuser2) gid=1001(myuser2) groups=1001(myuser2) [root@station10-101 ~]# id myuser3 uid=1002(myuser3) gid=1002(myuser3) groups=1002(myuser3)可以看到 UID 数字从 1001 到 1002,都会增加一个号码,同时 gid 也是一样的情况。看起来的趋势就是, 系统会自动的帮新的用户的 uid 增加一个号码的样子。
[root@station10-101 ~]# ll -d /home/myuser* /var/spool/mail/myuser*
drwx------. 3 myuser2 myuser2 78 Mar 15 20:53 /home/myuser2
drwx------. 3 myuser3 myuser3 78 Mar 15 20:53 /home/myuser3
-rw-rw----. 1 myuser2 mail 0 Mar 15 20:53 /var/spool/mail/myuser2
-rw-rw----. 1 myuser3 mail 0 Mar 15 20:53 /var/spool/mail/myuser3
意思是,当创建新的用户时:『系统会主动帮用户在 /home 底下创建一个相同名称的家目录』,同时『在 /var/spool/mail/
底下,创建一个同名的新邮件文件』的意思。同时注意权限喔!家目录仅有用户自己可以完整操作,其他人完全没有权限。
新邮件文件则是除了用户自己与 mail 相关群组用户之号,其他人也是不能乱看的!
[root@station10-101 ~]# userdel myuser2
[root@station10-101 ~]# ll -d /home/myuser* /var/spool/mail/myuser* drwx------. 3 1001 1001 78 Mar 15 20:53 /home/myuser2 drwx------. 3 myuser3 myuser3 78 Mar 15 20:53 /home/myuser3 -rw-rw----. 1 1001 mail 0 Mar 15 20:53 /var/spool/mail/myuser2 -rw-rw----. 1 myuser3 mail 0 Mar 15 20:53 /var/spool/mail/myuser3很明显的可以发现,没有加上 -r 的选项,会导致新建的文件不会被删除!此现象会让旧的文件存下来之后, 对照不到原本的帐号名称,因此拥有者与拥有群组的字段,就会显示出之前该拥有帐号的 UID 与 GID 了!
[root@station10-101 ~]# useradd myuser2 useradd: warning: the home directory already exists. Not copying any file from skel directory into it. Creating mailbox file: File exists [root@station10-101 ~]# passwd myuser2 Changing password for user myuser2. New password: BAD PASSWORD: The password fails the dictionary check - it is based on a dictionary word Retype new password: passwd: all authentication tokens updated successfully. [root@station10-101 ~]# ll -d /home/myuser* /var/spool/mail/myuser* drwx------. 3 1001 1001 78 Mar 15 20:53 /home/myuser2 drwx------. 3 myuser3 myuser3 78 Mar 15 20:53 /home/myuser3 -rw-rw----. 1 1001 mail 0 Mar 15 20:53 /var/spool/mail/myuser2 -rw-rw----. 1 myuser3 mail 0 Mar 15 20:53 /var/spool/mail/myuser3 # 文件并没有正常的恢复!看起来 UID/GID 的部份有问题!来查看看: [root@station10-101 ~]# id myuser2 uid=1003(myuser2) gid=1003(myuser2) groups=1003(myuser2)
[root@station10-101 ~]# userdel -r myuser3 <==确实可以删除 myuser3 [root@station10-101 ~]# userdel -r myuser2 userdel: user myuser2 is currently used by process 20486 # 因为刚刚在 tty4 登录 myuser2,尚未注销!赶紧去注销! [root@station10-101 ~]# userdel -r myuser2 userdel: /var/spool/mail/myuser2 not owned by myuser2, not removing userdel: /home/myuser2 not owned by myuser2, not removing # 意思是说,上面的两个文件名并不属于 myuser2,所以自然不能随意删除! [root@station10-101 ~]# ll -d /home/myuser* /var/spool/mail/myuser* drwx------. 3 1001 1001 78 Mar 15 20:53 /home/myuser2 -rw-rw----. 1 1001 mail 0 Mar 15 20:53 /var/spool/mail/myuser2 # 确实存在不同的 UID 之故! [root@station10-101 ~]# id myuser3 id: ‘myuser3’: no such user [root@station10-101 ~]# id myuser2 id: ‘myuser2’: no such user # 但是,事实上,这两个帐号确实删除了!
[root@station10-101 ~]# rm -rf /home/myuser2 /var/spool/mail/myuser2 [root@station10-101 ~]# ll -d /home/myuser* /var/spool/mail/myuser* ls: cannot access '/home/myuser*': No such file or directory ls: cannot access '/var/spool/mail/myuser*': No such file or directory
[root@station10-101 ~]# id prouser1 uid=1001(prouser1) gid=1002(prouser1) groups=1002(prouser1),1001(progroup) [root@station10-101 ~]# usermod -G student prouser1 [root@station10-101 ~]# id prouser1 uid=1001(prouser1) gid=1002(prouser1) groups=1002(prouser1),1000(student)可以明显的发现,原有的次要群组支持,从 progroup 变成 student 了!而不是预想的,两者都会存在啊!
[root@station10-101 ~]# usermod --help
Usage: usermod [options] LOGIN
Options:
......
-G, --groups GROUPS new list of supplementary GROUPS
-a, --append append the user to the supplemental GROUPS
mentioned by the -G option without removing
the user from other groups
......
看起来,说是使用 -a 搭配 -G 的话,会有效的达成我们想要的需求!就是『累加额外的次要群组支持』之意![root@station10-101 ~]# id prouser1 uid=1001(prouser1) gid=1002(prouser1) groups=1002(prouser1),1000(student) [root@station10-101 ~]# usermod -a -G progroup prouser1 [root@station10-101 ~]# id prouser1 uid=1001(prouser1) gid=1002(prouser1) groups=1002(prouser1),1000(student),1001(progroup)所以,使用『 -a -G 次要群组 』这种选项模式,也是很重要的喔!
[student@station10-101 ~]$ cp /bin/more ~/bin/mymore [student@station10-101 ~]$ file ~/bin/mymore /home/student/bin/mymore: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=b3b6a4ddca8b2ad08ef6f6ecb2ae7716799a6d73, stripped [student@station10-101 ~]$ mymore /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6主要就是将指令文件放置到自己的家目录底下的 bin 即可!
[student@station10-101 ~]$ id student uid=1000(student) gid=1000(student) groups=1000(student) [student@station10-101 ~]$ grep student /etc/group student:x:1000:prouser1确定这个群组是对的!
[student@station10-101 ~]$ su - 密码: [root@station10-101 ~]# cd /srv [root@station10-101 srv]# mkdir mystudent [root@station10-101 srv]# ll -d mystudent/ drwxr-xr-x. 2 root root 6 Mar 16 14:49 mystudent/创建成功,但是权限不太对劲!
[root@station10-101 srv]# chown .student mystudent/ [root@station10-101 srv]# ll -d mystudent/ drwxr-xr-x. 2 root student 6 Mar 16 14:49 mystudent除了 chgrp 之外,其实 chown 也能改群组的!相当有趣!
[root@station10-101 srv]# chmod 775 mystudent/ [root@station10-101 srv]# ll -d mystudent/ drwxrwxr-x. 2 root student 6 Mar 16 14:49 mystudent/
[root@station10-101 srv]# ll -d /etc/chrony.keys -rw-r-----. 1 root chrony 540 May 10 2019 /etc/chrony.keys(1)拥有者为 root,(2)拥有群组为 chrony,权限是 640 喔!
[root@station10-101 srv]# id chrony
uid=994(chrony) gid=989(chrony) groups=989(chrony)
看起来 chrony 确实加入了 chrony 群组,因此对于这个文件具有可读的权限,但是不能写入与不能运行![root@station10-101 srv]# groupadd thegroup [root@station10-101 srv]# useradd -G thegroup theuser1 [root@station10-101 srv]# useradd -G thegroup theuser2 [root@station10-101 srv]# useradd -G thegroup theuser3 [root@station10-101 srv]# echo "thisgroup" | passwd --stdin theuser1 Changing password for user theuser1. passwd: all authentication tokens updated successfully. [root@station10-101 srv]# echo "thisgroup" | passwd --stdin theuser2 Changing password for user theuser2. passwd: all authentication tokens updated successfully. [root@station10-101 srv]# echo "thisgroup" | passwd --stdin theuser3 Changing password for user theuser3. passwd: all authentication tokens updated successfully. [root@station10-101 srv]# id theuser1 uid=1004(theuser1) gid=1006(theuser1) groups=1006(theuser1),1005(thegroup) [root@station10-101 srv]# id theuser2 uid=1005(theuser2) gid=1007(theuser2) groups=1007(theuser2),1005(thegroup) [root@station10-101 srv]# id theuser3 uid=1006(theuser3) gid=1008(theuser3) groups=1008(theuser3),1005(thegroup)最后用 id 去确认一下每个帐号是否顺利支持了 thegroup 群组!
[root@station10-101 srv]# id theuser1
uid=1004(theuser1) gid=1006(theuser1) groups=1006(theuser1),1005(thegroup)
注意,有多了 theuser1 这个群组,群组 gid 为 1006 喔![root@station10-101 srv]# userdel theuser1 [root@station10-101 srv]# ll -d /home/theuser1 drwx------. 3 1004 1006 78 Mar 16 15:20 /home/theuser1确定只有剩下 UID 与 GID 而已!
[root@station10-101 srv]# groupadd -g 1006 theuser1 [root@station10-101 srv]# useradd -u 1004 -g theuser1 -G thegroup theuser1 useradd: warning: the home directory already exists. Not copying any file from skel directory into it. Creating mailbox file: File exists # 使用刚刚纪录的 uid 与 gid 重建群组与帐号!但是目录并没有重新创建,因为旧的文件已经存在! [root@station10-101 srv]# ll -d /home/theuser1 drwx------. 3 theuser1 theuser1 78 Mar 16 15:20 /home/theuser1所以,看到正确的权限了!这代表这个帐号又回复了!
[root@station10-101 srv]# mkdir /srv/thegroup [root@station10-101 srv]# chgrp thegroup /srv/thegroup [root@station10-101 srv]# chmod 775 /srv/thegroup/ [root@station10-101 srv]# ll -d /srv/thegroup/ drwxrwxr-x. 2 root thegroup 6 Mar 16 15:29 /srv/thegroup/
[root@station10-101 srv]# cp /sbin/ifconfig /usr/local/sbin/myif [root@station10-101 srv]# chgrp thegroup /usr/local/sbin/myif [root@station10-101 srv]# chmod 550 /usr/local/sbin/myif [root@station10-101 srv]# ll /usr/local/sbin/myif -r-xr-x---. 1 root thegroup 97920 Mar 16 15:31 /usr/local/sbin/myif