liunx是一个多用户、多任务的服务器操作系统,所以其提供了严格的权限管理机制,主要是从用户身份和文件权限两个方面对资源进行了限制。Linux基于用户身份对资源访问进行控制。
1)用户账号的类别划分:
超级用户:root,最高的权限用户普通用户:自定义用户、匿名用户类程序用户:控制程序和服务的,无法登陆2)组账号的类别划分:
基本组(私有组):伴随着用户创建而创建与用户同名,但创建一个用户的时候必有其组附加组(公有组):直接创建空组,可以添加已有的用户,给组设置权限,该组中所有用户都具备此权限该文件保存着用户名称、宿主的目录、登录Shell等基本信息 详解:
1.root——用户账号名称 2.x——使用加密算法加密的密码,这里是不会显示的 3.0——用户UID号 4.0——所属基本组账号的UID 5.root——用户全名,可以填写用户详细信息 6./root——宿主目录 7./bin/bash——指定用户的登录Shell保存用户的密码、账号等有效信息 详解:
root——用户账号名称 *——表示加密算法加密的密码,登录输入该密码是无效的 18451——上次修改时间 0——密码的最短有效天数(0表示随时可以更改) 99999——密码的最长有效天数 7——提前7天提醒用户口令将过期 :::——表示的是密码和账号过期之后的操作处理(基本可以忽略)useradd命令参数选项
-u ——指定用户的UID号,且该UID号没有被其他用户使用 -d ——指定用户的宿主目录位置(与-M一起使用时不生效!) -e ——账号失效时间(过期时间) -g ——基本组 -G ——附加组 -M ——不创家目录 -s ——指定用户的登录shell实例:useradd -d /opt/mike (-g mike) -G caiwu -s /sbin/nologin mike
[root@lsl ~]# useradd -d /opt/mike -G caiwu -s /sbin/nolgin mike //注意需要先有caiwu组——groupadd caiwu [root@lsl ~]# tail -2 /etc/passwd //查看passwd文件最后两行信息 lsl:x:1000:1000:lsl:/home/lsl:/bin/bash mike:x:1001:1001::/opt/mike:/sbin/nolgin [root@lsl ~]# tail -2 /etc/group caiwu:x:1002:mike mike:x:1001: [root@lsl ~]# tail -2 /etc/shadow lsl:$6$aq3AU9oDZf/ERE2D$Ol.zBTLNqbsPDdsJYE0yU3Wa7EUU1SonR3rUQ616PsgA2u.DtQ99ecTUbdw2y2RhmlaL75WlcqMsfEUNretgb0:18192:0:99999:7::: mike:!!:18200:0:99999:7::: [root@lsl ~]# id mike //查看mike的id信息 uid=1001(mike) gid=1001(mike) 组=1001(mike),1002(caiwu) [root@lsl ~]# ls /home/ //因为-d 指定了用户的宿主目录,所以家目录创建在了指定的/opt/mike目录中 demo lsl [root@lsl ~]# ls /opt/ demo01.txt mike rh test [root@lsl ~]#passwd 选项 … 用户名
-d 清除密码 -l 锁定 -S 查看是否锁还是未锁 (大写!!!) -u 解锁实例:
[root@lsl ~]# useradd -d /opt/lisi -s /sbin/nologin lisi [root@lsl ~]# tail -2 /etc/passwd lsl:x:1000:1000:lsl:/home/lsl:/bin/bash lisi:x:1001:1001::/opt/lisi:/sbin/nologin //这里/sbin/nologin是表示用户无法登录 [root@lsl ~]# passwd lisi 更改用户 lisi 的密码 。 新的 密码: //需要你输入密码 无效的密码: 密码少于 8 个字符 //因为输入了简单密码,可以继续输入一次也行,当然复杂密码就没问题 重新输入新的 密码: passwd:所有的身份验证令牌已经成功更新。 [root@lsl ~]# su - lisi 最后一次失败的登录:四 10月 31 18:49:45 CST 2019从 :1:1 上 最有一次成功登录后有 1 次失败的登录尝试。 This account is currently not available. // 无法登录,因为登录的shell是/sbin/nologin [root@lsl ~]# pwd /root [root@lsl ~]# vim /etc/passwd //进入passwd文件中将该用户的/sbin/nologin改为/bin/bash [root@lsl ~]# su - lisi //root切换用户时不需要输入密码 上一次登录:四 10月 31 18:52:42 CST 2019pts/2 上 [lisi@lsl ~]$ pwd //登录lisi用户 /opt/lisi [lisi@lsl ~]$ su //相当于su - root 下面的结果表明普通用户切换root时需要密码,输入的密码不会显示 密码: [root@lsl lisi]# pwd /opt/lisi [root@lsl lisi]# cd [root@lsl ~]# pwd //表明切换到root用户 /root [root@lsl ~]#passwd -l lisi //锁定lisi的密码 锁定用户 lisi 的密码 。 passwd: 操作成功 [root@lsl ~]# passwd -S lisi //查看lisi用户的密码状态 lisi LK 2019-10-31 0 99999 7 -1 (密码已被锁定。) [root@lsl ~]# su - lisi 上一次登录:四 10月 31 19:01:10 CST 2019pts/2 上 [lisi@lsl ~]$ pwd //可以看出虽然被锁定了但是root可以切换登录且无需密码 /opt/lisi [lisi@lsl ~]$ [root@lsl ~]# passwd -u lisi 解锁用户 lisi 的密码。 passwd: 操作成功 [root@lsl ~]# passwd -S lisi lisi PS 2019-10-31 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)总结:
其中/sbin/nologin 用户无法直接登录和被切换登录执行passwd -l lisi后用户被锁定,在图形用户界面是无法登录的,但是可以从root用户切换登录(而且root切换时不需要密码)其中1-4与useradd类似,演示以下-l的操作
[root@lsl ~]# usermod -l zhangsan lisi usermod: user lisi is currently used by process 71736 [root@lsl ~]# ps -ef | grep lisi root 71735 71117 0 19:01 pts/2 00:00:00 su - lisi lisi 71736 71735 0 19:01 pts/2 00:00:00 -bash root 72433 71829 0 19:11 pts/2 00:00:00 su - lisi lisi 72435 72433 0 19:11 pts/2 00:00:00 -bash root 73325 72935 0 19:24 pts/2 00:00:00 grep --color=auto lisi [root@lsl ~]# kill 71735 //也可以重启,自动就会结束进程 [root@lsl ~]# Session terminated, killing shell... ...已杀死。 [root@lsl ~]# exit [root@lsl ~]# usermod -l zhangsan lisi [root@lsl ~]# tail -2 /etc/passwd mike:x:1001:1001::/opt/mike:/sbin/nolgin zhangsan:x:1002:1003::/opt/lisi:/bin/bash //只是把lisi用户名字改了但是家目录的名字还是lisi [root@lsl ~]#ls /opt demo01.txt lisi mike rh test-r 宿主目录一起删除
[root@lsl ~]# tail -2 /etc/passwd //显示两个用户 mike:x:1001:1001::/opt/mike:/sbin/nolgin zhangsan:x:1002:1003::/opt/lisi:/bin/bash [root@lsl ~]# userdel -r mike //删除mike用户并且“抄家” [root@lsl ~]# tail -3 /etc/passwd tcpdump:x:72:72::/:/sbin/nologin lsl:x:1000:1000:lsl:/home/lsl:/bin/bash zhangsan:x:1002:1003::/opt/lisi:/bin/bash [root@lsl ~]# ls -l /opt/mike //表明-r的作用将指定的家目录删除 ls: 无法访问/opt/mike: 没有那个文件或目录 [root@lsl ~]# ls /opt //当前在/opt下有lisi家目录(名字在上面改成了zhangsan) demo01.txt lisi rh test [root@lsl ~]# userdel -r zhangsan //删除zhangsan用户,同时也会将lisi目录删除 [root@lsl ~]# tail -3 /etc/passwd postfix:x:89:89::/var/spool/postfix:/sbin/nologin tcpdump:x:72:72::/:/sbin/nologin lsl:x:1000:1000:lsl:/home/lsl:/bin/bash [root@lsl ~]# ls -l /opt //因删除了zhangsan用户且-r删除家目录,不加-r则不会删除 总用量 0 -rw-r--r--. 1 root root 0 10月 31 16:19 demo01.txt drwxr-xr-x. 2 root root 6 3月 26 2015 rh drwx-wx-wx. 2 root root 32 10月 31 18:33 test [root@lsl ~]# useradd wang //创建一个新的用户 [root@lsl ~]# usermod -l sung wang //改用户名 [root@lsl ~]# tail -2 /etc/passwd //查看passwd信息 lsl:x:1000:1000:lsl:/home/lsl:/bin/bash sung:x:1001:1003::/home/wang:/bin/bash [root@lsl ~]# userdel sung //删除sung用户但是不会删除wang [root@lsl ~]# ls /home/ demo lsl wang文件来源:新建用户账号是从/etc/skel目录中复制过来 (cd到家目录中用ls -a)
~/.bash_profile 表示进入bash后被加载 ~/.bashrc 用户登录时被加载 ~/.bash_logout 注销的时候执行groupadd 选项 组名 -g ——指定GID
[root@lsl ~]# groupadd lisi //添加lisi组 [root@lsl ~]# tail /etc/group //查看group信息 postdrop:x:90: postfix:x:89: stapusr:x:156: stapsys:x:157: stapdev:x:158: tcpdump:x:72: lsl:x:1000: printadmin:x:985: caiwu:x:1002: lisi:x:1003: [root@lsl ~]# groupadd -g 1005 wangwu //添加wangwu组且给其配置GID为1005 [root@lsl ~]# tail -2 /etc/group lisi:x:1003: wangwu:x:1005:实例:
[root@lsl ~]# tail -2 /etc/group //查看组信息 lisi:x:1003: wangwu:x:1005: [root@lsl ~]# tail -2 /etc/passwd //查看用户信息 tcpdump:x:72:72::/:/sbin/nologin lsl:x:1000:1000:lsl:/home/lsl:/bin/bash [root@lsl ~]# useradd lisi //添加lisi用户会失败,因为上面显示lisi组已经存在 useradd:lisi 组已经存在 - 如果您想将此用户加入到该组,请使用 -g 参数。 [root@lsl ~]# useradd -g lisi lisi //将lisi用户添加到lisi组中 [root@lsl ~]# useradd zhangsan //再添加一个zhangsan用户 [root@lsl ~]# tail -2 /etc/passwd //查看用户信息 lisi:x:1001:1003::/home/lisi:/bin/bash zhangsan:x:1002:1006::/home/zhangsan:/bin/bash [root@lsl ~]# gpasswd -a lisi wangwu //添加lisi到wangwu组中(先得有wangwu组) 正在将用户“lisi”加入到“wangwu”组中 [root@lsl ~]# id lisi //查看lisi的UID uid=1001(lisi) gid=1003(lisi) 组=1003(lisi),1005(wangwu) [root@lsl ~]# gpasswd -d lisi wangwu //从wangwu组中删除lisi 正在将用户“lisi”从“wangwu”组中删除 [root@lsl ~]# id lisi //查看lisi的UID,已经不属于wnagwu组了 uid=1001(lisi) gid=1003(lisi) 组=1003(lisi) [root@lsl ~]# tail -5 /etc/passwd //显示用户信息 postfix:x:89:89::/var/spool/postfix:/sbin/nologin tcpdump:x:72:72::/:/sbin/nologin lsl:x:1000:1000:lsl:/home/lsl:/bin/bash lisi:x:1001:1003::/home/lisi:/bin/bash zhangsan:x:1002:1006::/home/zhangsan:/bin/bash [root@lsl ~]# tail -5 /etc/group //显示组信息 printadmin:x:985: caiwu:x:1002: lisi:x:1003: wangwu:x:1005: zhangsan:x:1006: [root@lsl ~]# gpasswd -M lisi,zhangsan wangwu //将两个用户批量添加到wangwu组中 [root@lsl ~]# tail -5 /etc/group printadmin:x:985: caiwu:x:1002: lisi:x:1003: wangwu:x:1005:lisi,zhangsan //查看到信息 zhangsan:x:1006: [root@lsl ~]# useradd hh //添加两个新的用户,为了验证-M的覆盖功能 [root@lsl ~]# useradd ww [root@lsl ~]# gpasswd -M hh,ww wangwu [root@lsl ~]# tail -5 /etc/group lisi:x:1003: wangwu:x:1005:hh,ww //原本的lisi和zhangsan都被踢出去了 zhangsan:x:1006: hh:x:1007: ww:x:1004:注意!!!不能使用 groupdel 命令随意删除组。此命令仅适用于删除那些 “不是任何用户初始组(主组 )” 的组,换句话说,如果有组还是某用户的初始组(主组),则无法使用 groupdel 命令成功删除 举例:
[root@lsl ~]# tail -10 /etc/group stapdev:x:158: tcpdump:x:72: lsl:x:1000: printadmin:x:985: caiwu:x:1002: lisi:x:1003: wangwu:x:1005:hh,ww zhangsan:x:1006: hh:x:1007: ww:x:1004: [root@lsl ~]# groupdel caiwu [root@lsl ~]# groupdel lisi groupdel:不能移除用户“lisi”的主组 [root@lsl ~]# groupdel wangwu [root@lsl ~]# groupdel zhangsan groupdel:不能移除用户“zhangsan”的主组 [root@lsl ~]# groupdel hh groupdel:不能移除用户“hh”的主组 [root@lsl ~]# groupdel ww groupdel:不能移除用户“ww”的主组 [root@lsl ~]#真要删除,可以将创建该组的初始组成员删除后再删除
[root@lsl note]# tail -1 /etc/passwd ww:x:10000:10000::/home/ww:/bin/bash [root@lsl note]# groupdel ww groupdel:不能移除用户“ww”的主组 [root@lsl note]# userdel ww [root@lsl note]# tail -1 /etc/group zhangsan:x:1006:查看最近的登录信息
[root@lsl ~]# lastb lisi :1 :1 Thu Oct 31 18:49 - 18:49 (00:00) root pts/1 Thu Oct 31 17:07 - 17:07 (00:00) root :0 :0 Thu Oct 24 14:43 - 14:43 (00:00) root :0 :0 Thu Oct 24 14:43 - 14:43 (00:00) root :0 :0 Thu Oct 24 14:43 - 14:43 (00:00) btmp begins Thu Oct 24 14:43:01 2019下面对drwxr-xr-x. 4 root root 73 10月 30 22:03 note 进行解释
d ——文件类型(d表示目录、l表示链接文件、c表示字符设备(输入输出)文件、b块设备(存储)文件 - 普通文件) rwx 、 r-x、r-x分别代表是属主权限(这里表示可读可写可执行)、属组权限(这里表示可读可执行)、other权限(这里表示可读可执行) 4 ——子目录的数量 第一个root—— 属主 5.第二个 root ——属组 73——大小 10月 30 22:03 ——创建时间 note ——目录名(文件)实例:
//下面是对文件的权限操作 [root@lsl note]# touch 2.sh [root@lsl note]# ls -l 2.sh //2.sh权限是644 -rw-r--r--. 1 root root 0 10月 31 21:41 2.sh [root@lsl note]# chmod u+x 2.sh [root@lsl note]# ls -l 2.sh -rwxr--r--. 1 root root 0 10月 31 21:41 2.sh [root@lsl note]# chmod ugo+w 2.sh [root@lsl note]# ls -l 2.sh -rwxrw-rw-. 1 root root 0 10月 31 21:41 2.sh [root@lsl note]# chmod 655 2.sh [root@lsl note]# ls -l 2.sh -rw-r-xr-x. 1 root root 0 10月 31 21:41 2.sh //下面是对目录的权限操作 [root@lsl note]# ll //ll是ls -l --color 的别名 总用量 8 -rwxrwxrwx. 1 root root 0 10月 31 21:40 1.txt -rw-r-xr-x. 1 root root 0 10月 31 21:41 2.sh -rwxrwxrwx. 1 root root 286 10月 30 22:03 ifcfg-ens33 drwxrwxrwx. 2 root root 26 10月 23 13:20 linux-cmd -rwxr-xr-x. 1 root root 30 10月 30 22:02 readme.txt drwxrwxrwx. 2 root root 173 10月 30 21:56 shell drwxr-xr-x. 2 root root 6 10月 31 21:38 test [root@lsl note]# which ll alias ll='ls -l --color=auto' /usr/bin/ls [root@lsl note]# chmod 777 test/ 更改权限为777 [root@lsl note]# ll 总用量 8 -rwxrwxrwx. 1 root root 0 10月 31 21:40 1.txt -rw-r-xr-x. 1 root root 0 10月 31 21:41 2.sh -rwxrwxrwx. 1 root root 286 10月 30 22:03 ifcfg-ens33 drwxrwxrwx. 2 root root 26 10月 23 13:20 linux-cmd -rwxr-xr-x. 1 root root 30 10月 30 22:02 readme.txt drwxrwxrwx. 2 root root 173 10月 30 21:56 shell drwxrwxrwx. 2 root root 6 10月 31 21:38 test [root@lsl note]# touch test/1.sh [root@lsl note]# ls -l test/1.sh -rw-r--r--. 1 root root 0 10月 31 21:50 test/1.sh //目录的权限与其子目录与文件权限无关除非递归—R [root@lsl note]# chmod 777 -R test/ //递归更改权限 即test和其子目录的所有文件权限都是777 [root@lsl note]# ls -l test/1.sh -rwxrwxrwx. 1 root root 0 10月 31 21:50 test/1.sh如果给予属组和其他用户只有写权限(622),可以强制写入,但会覆盖原本的内容!
[root@lsl test]# pwd //当前所在目录的绝对路径 /opt/test [root@lsl test]# ll //显示详细信息 总用量 8 -rw-r--r--. 1 root root 13 10月 31 16:33 1.txt //除了root的其余用户权限为只读 -rw--w--w-. 1 root root 18 10月 31 18:33 2.txt //除了root的其余用户权限为只写 [root@lsl test]# cat 1.txt tehsda hello [root@lsl test]# cat 2.txt //这边原本的2.txt的内容如下 231354 2222244878 [root@lsl lisi]# su - lisi //切换到lisi用户 上一次登录:四 10月 31 22:36:45 CST 2019pts/1 上 [lisi@lsl ~]$ cd /opt/test/ [lisi@lsl test]$ ll //没有ls的权限 ls: 无法打开目录.: 权限不够 [lisi@lsl test]$ cat 1.txt //表示可以查看1.txt内容 tehsda hello [lisi@lsl test]$ vim 1.txt //尝试写入数据 [lisi@lsl test]$ cat 1.txt //可以wq!强制保存退出,结果是可以写入数据的 tehsda hello dada asdaadas [lisi@lsl test]$ cat 2.txt cat: 2.txt: 权限不够 [lisi@lsl test]$ vim 2.txt [lisi@lsl test]$ cat 2.txt //似乎强制写入数据之后就可以查看,因为属主是lisi,但如果 //属主是root用户在lisi用户登录时就无法查看 ssdad dsawdad [lisi@lsl test]$ ls -l 2.txt -rw--w--w-. 1 lisi lisi 14 10月 31 22:45 2.txt //使用echo命令重定向和追加形式写入数据到文本中 [lisi@lsl test]$ echo "123123" > 2.txt [lisi@lsl test]$ cat 2.txt 123123 [lisi@lsl test]$ echo "123456" >> 2.txt [lisi@lsl test]$ cat 2.txt 123123 123456 [lisi@lsl test]$ su 密码: [root@lsl test]# ls -l 总用量 8 -rw-r--r--. 1 lisi lisi 27 10月 31 22:43 1.txt -rw--w--w-. 1 lisi lisi 14 10月 31 22:47 2.txt [root@lsl test]# cat 2.txt 123123 123456实例
[root@lsl opt]# ls -l 总用量 0 -rw-r--r--. 1 root root 0 10月 31 16:19 demo01.txt drwxr-xr-x. 2 root root 6 3月 26 2015 rh drwx-wx-wx. 2 root root 32 10月 31 22:45 test [root@lsl opt]# chown lisi test [root@lsl opt]# ls -l 总用量 0 -rw-r--r--. 1 root root 0 10月 31 16:19 demo01.txt drwxr-xr-x. 2 root root 6 3月 26 2015 rh drwx-wx-wx. 2 lisi root 32 10月 31 22:45 test //test目录自身属主变成lisi而属组未发生改变 [root@lsl opt]# chown root:lisi test [root@lsl opt]# ls -l 总用量 0 -rw-r--r--. 1 root root 0 10月 31 16:19 demo01.txt drwxr-xr-x. 2 root root 6 3月 26 2015 rh drwx-wx-wx. 2 root lisi 32 10月 31 22:45 test //test目录自身属主变成root而属组变为lisi [root@lsl opt]# chown :root test [root@lsl opt]# ls -l 总用量 0 -rw-r--r--. 1 root root 0 10月 31 16:19 demo01.txt drwxr-xr-x. 2 root root 6 3月 26 2015 rh drwx-wx-wx. 2 root root 32 10月 31 22:45 test //test目录自身属组变为root作用:控制新建的文件或者目录的权限——注意只是对新建的有效 默认权限去除umask的权限为
[root@lsl opt]# mkdir umasktest [root@lsl opt]# umask 000 umasktest/ [root@lsl opt]# ll 总用量 0 -rw-r--r--. 1 root root 0 10月 31 16:19 demo01.txt drwxr-xr-x. 2 root root 6 3月 26 2015 rh drwx-wx-wx. 2 root lisi 32 10月 31 22:45 test drwxrwxrwx. 2 root root 6 10月 31 23:26 umasktest [root@lsl opt]# cd umasktest/ [root@lsl umasktest]# mkdir 2019 [root@lsl umasktest]# touch 1.txt [root@lsl umasktest]# ll 总用量 0 -rw-rw-rw-. 1 root root 0 10月 31 23:26 1.txt //文件权限为666 drwxrwxrwx. 2 root root 6 10月 31 23:26 2019 //目录权限为777 [root@lsl umasktest]# cd .. [root@lsl opt]# umask 111 umasktest/ //原本的1.txt和2019权限没有发生变化! [root@lsl opt]# cd umasktest/ [root@lsl umasktest]# mkdir 2018 [root@lsl umasktest]# touch 2.txt [root@lsl umasktest]# ll 总用量 0 -rw-rw-rw-. 1 root root 0 10月 31 23:26 1.txt drw-rw-rw-. 2 root root 6 10月 31 23:28 2018 //目录权限为666 drwxrwxrwx. 2 root root 6 10月 31 23:26 2019 -rw-rw-rw-. 1 root root 0 10月 31 23:28 2.txt // 2.txt权限为666 [root@lsl umasktest]# cd .. [root@lsl opt]# umask 666 umasktest/ [root@lsl opt]# cd umasktest/ [root@lsl umasktest]# mkdir 2017 [root@lsl umasktest]# touch 3.txt [root@lsl umasktest]# ll 总用量 0 -rw-rw-rw-. 1 root root 0 10月 31 23:26 1.txt d--x--x--x. 2 root root 6 10月 31 23:29 2017 //目录权限为111 drw-rw-rw-. 2 root root 6 10月 31 23:28 2018 drwxrwxrwx. 2 root root 6 10月 31 23:26 2019 -rw-rw-rw-. 1 root root 0 10月 31 23:28 2.txt ----------. 1 root root 0 10月 31 23:29 3.txt //文件3.txt权限全为0 [root@lsl umasktest]# umask //查看umask值 0666