第四节课(文件目录权限管理,与用户,组管理)
7月6日作业
一、文件权限管理
查看文件相关权限命令 ll
以vic目录为例
rwx
r 读取 w写入 x 执行
第一组rwx为用户所属者权限;,
第二组rwx为用户组权限;
第三组rwx为其他用户权限。
后面root root 第一个为所属用户,第二个为所属用户组。
d为目录, -为文件, 也有一些其他目录。
修改文件权限命令
chmod 777 1001 修改文件1001权限,所有用户所有人可编辑
777 为第一个7为修改所属用户权限,为第而个7为修改所属用户组权限,为第三个7为修改其他用户权限。
7 可分为 r =4 w=2 x=1 三个相加的权限就是7。如果是5 就是 r=4 x=1相加权限。
二、用户、用户组权限管理
linux用户可以分为普通用户,管理员用户两种。
用户组可分为普通用户组,管理员组。
可以查看/etc/passwd 所有用户与组
当中几个字符以:作为分隔每个字段代表意思如下
ACCOUNT:用户名
PASSWORD:密码占位符
UID:用户ID
GID:用户组ID
COMMAND:注释信息
HOME DIR:用户家目录
SHELL:用户的默认 shell
Linux 系统中,UID以如下的方式划分:
0 表示管理员(root)
1 - 500 表示系统用户
501 - 65535 表示普通用户
不同的 Linux 发行版,这些数字可能不一样
看上图密码为x 这不是真的代表密码就是x 是密文方式保存,不在次文件显示,真正的密码是保存在/etc/shadow,而此文件保存的密码也并非是真的密码,同样是密文,文件如下图:
useradd添加用户命令
useradd -u UID:指定 UID,这个 UID 必须是大于等于500,并没有其他用户占用的 UID
useradd -g GID/GROUPNAME:指定默认组,可以是 GID 或者 GROUPNAME,同样也必须真实存在
useradd -G GROUPS:指定额外组
useradd -c COMMENT:指定用户的注释信息
useradd -d PATH:指定用户的家目录
useradd -s SHELL:指定用户的默认 shell,最好是在 /etc/shells 中存在的路径
useradd -s /sbin/nologin:该用户不能登录,还记得我们上面说到的系统用户不能登录吧?我们可以看到系统用户的 shell 字段也是 /sbin/nologin
echo $SHELL :查看当前用户的 shell 类型
useradd -M USERNAME:创建用户但不创建家目录
useradd -mk USERNAME:创建用户的同时创建家目录,并复制 /etc/skel 中的内容到家目录中。
userdel 命令:删除用户
userdel USERNAME:删除用户
userdel -r USERNAME:删除用户的同时删除用户家目录
id 命令:显示账号属性信息
id -g USERNAME:显示默认组ID
id -G USERNAME:显示附加组ID
id -u USERNAME:显示UID
id -n -g/-G/-U:显示默认组/附加组/用户的名称
usermod 命令:修改用户信息
基本用法和 useradd 相似,这里列出需要注意的点
usermod -G GROUPS USERNAME:改变用户的附加组,会完全替换原有的附加组
usermod -G -a GROUPS USERNAME:在原有附加组的基础上追加附加组
usermod -d PATH USERNAME:修改家目录。修改后原先家目录中的文件不能访问了,因为在当前的家目录中并不存在这些文件。
usermod -l NEWNAME USERNAME:改变用户名
usermod -e USERNAME:指定该用户的过期时间
usermod -L USERNAME:锁定用户
usermod -U USERNAME:解锁用户
passwd
passwd --stdio:标准输入读取密码passwd -l:锁定用户账号(root only)
echo "newpassword" | passwd --stdio MIKE
passwd -u:解锁用户账号(root only)
passwd -d:删除用户密码。用户密码删除后不能登录。
groupadd 命令:添加组
groupadd -g GID GROUPNAME:指定GID
groupadd -r GROUPNAME:添加一个系统用户组(-r 也适用于 useradd)
groupadd -r apache
groupmod 命令:修改组
groupmod -g NEWGID GROUPNAME:修改GID
groupmod -n NEWGROUPNAME GROUPNAME:修改组名
groupdel 命令:删除组
groupdel GROUPNAME
gpasswd 命令:给组加密码
gpasswd GROUPNAME
为什么需要给组添加密码呢?不妨先说一下用户的基本组,好像到现在我们还没有讲基本组的情况吧,嘿嘿。基本组很简单,Linux 规定每个用户都需要在某一个组中,因此在创建用户的时候,我们可以指定用户的基本组(默认组):useradd -g GROUPNAME USERNAME。如果我们不手动指定用户的基本组,系统会默认创建一个和当前用户名一致的组,然后将这个组设置为用户的基本组。基本组的 GID 默认和用户 UID 一致(如果不被占用的话)。
为啥用户必须要有一个组呢?因为 Linux 规定,一个文件的需要具备三种权限:文件所属主的权限,文件所属主所在组的权限,以及其他用户的权限。因此文件的所属主要是没有基本组的话,那是不是非常尴尬呢。这个问题先说到这里。
回头看一下 gpasswd 的作用,一般情况下我们是不需要为组设置密码的。现在提一个需求:在执行某项操作的时候,要使用到其他组的权限,就需要临时切换到其他组,又不想改变现有组,那么就需要使用 newgrp 命令,newgrp 命令就是用来临时切换用户基本组,注意此操作只对当前登录有效。在使用 newgrp 的时候,可能需要我们输入组密码。为什么是可能呢?因为在将额外组临时设置为用户的基本组时,是不需要密码的。只有将此前和用户毫不相关的组临时设置为基本组才会需要密码。如需还原基本组:exit 或者 logout。
以上有一些是自己理解有一些是百度上看到觉得有用记录下来的