用户及用户组权限管理
Linux是一个多任务多用户的系统,多用户可以同时登陆同一台主机。为了考虑到每个人的隐私权和工作空间,这时候文件所有者(owner)就是即用户的角色就变得尤为重要了,同时为了用户与用户之间方便合作,共享一些公共资源,这时,为了实现资源的快速分配,我们把多个用户放在一个公共的空间,分别赋予他们不同的读写执行等操作的权限,这些用户共同组成的一个整体,就是所谓的用户组(group)。
第一部分 Linux权限管理
用命令ls -l可以列出用户的权限。
#ls -l
这里我们以test文件为例,来详细说明。
第一类drwxr-xr-x
d:文件类型,常见的类型有d(目录)、-(一般文件)、c(字符设备)、b(块设备)、l(链接文件)、s(套接字文件)等,其余的九位数字即为文件权限。
linux权限采用UGO机制,U(user)表示所属主,G(group)表示所属组,O(other)表示除所属主和所属组之外的其他用户。其中r(readable)代表可读的,用数值4来表示;w(writable)代表可写的,用数字2来表示;x(excutable)代表可执行的,用数字1来表示。
权限的组合机制--以二进制的方式组合。
--- 0000
--x0011
-w-0102
-wx0113
r--1004
r-x1015
rw-1106
rwx 1117
本例中前三位rwx为所属主的权限:rwx对应的数值为7,中三位表示所属组的权限:r-x对应的数值为5,后三位表示其他人的权限:r-x对应的数值为5,则它们组合起来为755。
在系统创建目录与文件时会自动给它们添加一些属性,这就是umsk默认权限属性。我们可以通过umask来查看。
#umask
对于文件的默认权限是644,对于目录的默认权限是755。
权限的管理命令--chmod。
chomod:修改命令的权限位。
用法: chmod [OPTION]... MODE[,MODE]... FILE...
常用的用法
1.赋权表示法:直接操作一类用户的所有权限位rwx。
对于两类用户权限相同合并到一起ug=, go=来表示。
2.授权表示法:操作一类用户一位或多位权限。
对于两类用户权限机制相同:ug+, ug-, ...合并在一起。
3.数值表示法:用二进制数值来表示每一类用户的多位权限位
第二部分 用户和用户组
学习用户和用户组管理之前我们先学习他们的配置文件。
保存用户信息的文件:/etc/passwd。
#tail /etc/passwd
它们由“:”隔开的7个字段组成。
用户名:加密的用户密码:UID:GID:注释信息:用户的家目录:登陆的shell
保存用户组的信息:/etc/group。
#tail -1 /etc/group
它们由“:”隔开的4个字段组成。
用户组名:加密的组密码:GID:组内用户。
#tail -1 /etc/shadow
它们是由““:”分开的九个字段。
登录名:密码:最近一次的修改时间:密码的最短使用期限:密码最长使用期限:提前警告的天数:非活动期限:账号的禁用日期:保留字段
用户的分类
用户可以分为管理用户和普通用户。普通用户可以分为系统用户和登陆用户。用户用UID来标识,管理用户的ID=0,普通用户的ID为1-60000,其中系统用户为1-499(centOS7为1-999),登陆用户为500-60000(centOS7为1000-60000)。用户通过/etc/passwd库的密码解析来验证用户的密码,并通过后授权登录。
用户管理命令
useradd命令:添加用户
useradd [选项] 登录名
常用选项:
-c, --comment COMMENT:注释信息,一般为Full Name;
#useradd -c "www.Fedora.com " fefora
-d, --home /PATH/TO/HOME_DIR:家目录路径;目标路径不能事先存在,否则会有警告,不会得利skel相关的文件给用户
#useradd -d /tmp/test test
-g, --gid GROUP:用户的基本组组名或GID;
#useradd -g 1003 rex
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:用户所属的附加组列表,彼此间用逗号隔开,中间没有空格;
#useradd -G fedora,gentoo centos
-m, --create-home:强制创建家目录;
-M:不创建用户主目录,即使系统在 /etc/login.defs 中的设置 (CREATE_HOME) 为 yes;
-r, --system:创建一个系统账户
#useradd -r apache
-s, --shell SHELL:用户的登录 shell 名,默认为留空,让系统根据 /etc/default/useradd 中的SHELL 变量选择默认的登录shell;
#useraddr -s /bin/sh rex
-u, --uid UID:用户 ID 的数字值。此值必须为唯一的,除非使用了 -o 选项。此值必须非负,默认使用大于等于UID_MIN,且大于任何其他用户 ID 最小值。
#useradd -u 2000 slackware
useradd -D 选项:设置某默认选项;-e,-f等默认选项。
usermod命令:修改账号信息
usermod [选项] 用户名
-c, --comment COMMENT用户密码文件中注释字段的新值。通常使用 chfn(1) 工具对其进行修改。
-d, --home HOME_DIR:修改家目录为新的位置,但一般应该同时使用-m选项以保证原家目录中的文件会移动到新目录中;
#usermod -m -d /tem/test rex
-g, --gid GROUP:用户的新初始登录组的组名或数字代号。此组必须存在。
#usermod -g gentoo centos
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:修改时会覆盖原有的附加组;一同使用-a选项,表示为用户添加新的附加组。
-l, --login NEW_LOGIN:修改当前用户的用户名。
-L, --lock:锁定用户的密码。这会在用户加密的密码之前放置一个“!”。
-U, --unlock 解锁用户的密码。这将移除加密的密码之前的“!”。
userdel命令:删除用户账号
userdel [选项] 登录名
-r, --remove:用户主目录中的文件将随用户主目录和用户邮箱一起删除。
用户组管理命令
groupadd命令:添加用户组
groupadd [选项] GROUP
-g GID:指明GID。
#groupadd -g 1011 suse
-r, --system:系统组。
#groupadd -r httpd
groupmod命令:修改组信息
groupmod [选项] GROUP
-g GID
-n NEW_NAME:修改组名。
groupdel命令:删除组
groupdel [选项] GROUP