用户和组的基本概念
-
用户的类别:管理员、普通用户(系统用户和登陆用户)
-
组类别:管理员组、普通用户组 | 基本组和附加组 | 私有组和公有组
-
数据库文件:
-
/etc/passwd,用于存放用户相关信息,格式:loging:password:uid:gid:comment:home:shell
-
/etc/shadow,用户存放用户相关信息的补充信息,例如密码等,格式:login:encrpted_password:…
-
/etc/group,组的信息,格式:group:password:gid:user_list
-
密码存储格式:单向加密,并加入salt完成:1.md5,2.sha1,3.sha224,4.sha256,5.sha384,6.sha512
用户组管理相关命令
Linux中进程需要以某一个用户运行,一般为进程发起者,进程的文件访问权限也取决于用户的权限,为了让后台进程和服务进程以非管理员身份运行,通常需要创建多个普通用户,这类只为了运行程序而不会登陆的用户称之为系统用户。
groupadd: 添加组
命令格式:groupadd [选项] group_name
参数说明:
-
-g GID: 指定GID,默认为上一个组的GID+1
-
-r: 创建系统用户
groupmod: 修改组
命令格式:groupmod [选项] GROUP
参数说明:
-
-g GID: 修改GID
-
-n new_name: 修改组名
groupdel: 删除组
命令格式:groupdel [选项] GROUP
用户管理相关命令
useradd: 创建用户
命令格式: useradd [选项] 登录名
参数说明:
-
-u, --uid UID: 指定用户UID
-
-g, --gid GROUP: 指定基本组ID,此组必须事先存在
-
-G, --groups GROUP1,GROUP2,…: 指明用户所属的附加组,多个之间用逗号分割
-
-c, --comment COMMENT: 注释信息
-
-d, --home HOME_DIR: 指定用户的家目录,通过复制/etc/skel目录,并重命名实现,指定的家目录存在则不回为用户复制环境变量
-
-s, --shell SHELL: 指定用户的默认SHELL
useradd -D: 显示创建用户时的默认配置
useradd -D 选项: 修改默认选项的值,修改的结果保存在/etc/default/useradd文件中
usermod: 修改用户属性
命令格式: usermod [选项] 登录名
参数说明:
-
-u, --uid UID: 修改用户的ID
-
-g, --gid GROUP: 修改用户的基础组
-
-G, --groups GROUP1,GROUP2,…: 修改用户所属的附加组,原来的附加组会被覆盖
-
-a, --append: 与-G一同使用,用于为附加组追加新的附加组
-
-c, --comment COMMENT: 修改注释信息
-
-d, --home HOME_DIR: 修改用户的家目录,用户原有的文件不会被转移到新的家目录中
-
-m, --move-home: 只能与-d一同使用,用于将原来的家目录移动为新的家目录
-
-l, --login NEW_LOGIN_NAME: 修改用户名
-
-s, --shell SHELL: 修改用户的默认shell
-
-L, --lock: 锁定用户密码,即在用户原来的密码字符串前加一个"!"
-
-U, --unlock: 解锁用户的密码
userdel: 删除用户
命令格式: userdel [选项] 登录名
参数说明:
- -r: 删除用户是一并删除家目录
例子
-
创建用户gentoo, UID为4001,基本组为gentoo,附加组为distro(GID为5000)和peguin(GID为5001)
-
创建用户fedora,其注释信息为“Fedora Core”,默认SHELL为/bin/tcsh
-
修改gentoo用户的家目录为/var/tmp/gentoo,要求其原来的文件仍能够被用户访问
-
为跟痛哦新增附加组netadmin
passwd: 密码修改
命令格式: passwd [选项] [username]
-
passwd: 修改用户自己的密码
-
passwd USERNAME: 修改指定的用户密码,仅root由此权限
参数说明:
-
-l, -u: 锁定/解锁用户
-
-d: 清楚用户密码串
-
-e: 国旗期限,日期
-
-i DAYS: 非活动期限
-
-n DAYS: 密码最短使用期限
-
-x DAYS: 密码最长使用期限
-
-w DAYS: 警告期限
gpasswd: 组密码修改
组密码存储在/etc/gshadow。
命令格式: gpasswd [选项] group
参数说明:
-
-a USERNAME: 想组中添加用户
-
-d USERNAME: 从组中移除用户
newgrp: 临时切换指定的组为基本组
命令格式: newgrp [-] [group]
参数说明:
- -: 会模拟用户重新登陆以实现重新初始化其工作环境
chage: 修改用户密码过期信息
命令格式: chage [选项] 登录名
参数说明:
-
-d
-
-E
-
-W
-
-m
-
-M
id: 显示用户信息
命令格式: id [选项] 登录名
参数说明:
-
-u: 仅显示有效的UID
-
-g: 仅显示用户的基本组ID
-
-G: 仅显示用户所属的所有组ID
-
-n: 显示名字而非ID
su: 切换用户
- 登陆式切换: 会通过读取目标用户的配置文件来重新初始化
su - USERNAME
su -l USERNAME
- 非登陆式切换: 不会读取目标用户的配置文件来重新初始化
root用户可以无需密码切换到任何其他用户
-c ‘COMMAND’: 仅以指定的用户身份运行指定的命令
其他几个命令:chfn, chsh, finger, whoami, pwck, grpch
权限管理
文件/目录权限简介
运行ls -la
可以看见当前目录文件的权限信息如下
drwxr-xr-x
第一位:表示当前文件/目录是文件、目录、符号连接、套接字、快设备等信息,可以是d、l、b、c、s、p等;
左边2-4位:代表当前文件所有者的权限信息,依次为读、写、执行权限
左边5-7位:当前文件所属组的权限信息
最右三位:其他用户的权限信息
针对文件:r:可读;w:可写;x:可执行
针对目录: r:可以使用ls列出其中的文件;w:可以创建或者删除其中的文件;x:可以使用cd命令切换至此目录
chmod权限管理
命令格式有三种:
chmod [option]… MODE[,MODE]… FILE…
chmod [option]… OCTAL-MODE FILE…
chmod [option]… --reference=RFILE FILE…
用户表示:u:属主;g:属组;o:其他;a:所有
第一种使用方式
MODE表示法
-
赋权表示法:直接操作一类用户的所有权限位,例如
u=rwx
、g=rx
、o=r
、a=rwx
-
授权表示法:直接操作一类用户的一个权限位,例如
u+x
、g+x
、u-x
等
例如
chmod u+x test.sh
chmod a-x test.sh
chmod u=rwx test.sh
chmod u=rx test.sh
第二种使用方式
chmod [option]【三位8进制数字】文件/目录
例如
chmod 755 test.sh
chmod 744 test.sh
chmod --reference=other.sh test.sh
在修改目录的权限信息时,可以加上-R选项来递归修改目录中的所有文件权限信息
chown\chgrp从属关系管理
chown [option]… WONER[:[GROUP]] FILE…
chown [option]… --reference=RFILE FILE…
-R选项:递归修改
例如
chown -R es elasticsearch
chown -R es:es elasticsearch
chgrp [option]… GROUP FILE…
chgrp [option]… --reference=RFILE FILE…
例如
chgrp es elasticsearch.yml
chgrp es --reference=jvm.options elasticsearch.yml
umask文件权限反向掩码(遮罩码)
文件:666-umask
目录:777-umask
注意:之所以文件用666去减mask,代码文件默认没有执行权限,如果减得得结果有执行权限,则需要将其加1。
例如: umask为023
文件:666-023 = 644
目录:777-023 = 754
命令:
-
umask
: 查看当前得umask -
umask MASK
: 设置umask,当前SHELL有效
install命令
-
单源复制:
install [option]... [-T] SOURCE DEST
-
多源复制:
install [option]... SOURCE... DIRECTORY
或者install [option]... -t DIRECTORY SOURCE...
-
创建目录:
install [option]... -d DIRECTORY
常用选项
-m, --mode=MODE:设定目录文件权限,默认为755
-o, --owner=OWNER:设定目录文件的属主
-g, --group=GROUP:设定目录文件的属组
mktemp命令
mktemp /tmp/mytmp.XXXX
创建一个临时文件,XXXX为一个随机字符串,其中XXXX的个数可以任意指定
-d:选项,创建一个临时目录