Linux用户管理及文件权限
一、Linux用户管理
Linux系统不同用户权限不一样。
root用户:此用户是唯一的,且拥有系统的所有权限。
普通用户
虚拟用户
在Linux中,用户有自己的UID身份账号且唯一
在Linux系统中UID为0,就是超级用户,如要设置管理员用户,可以修改UID为0,建议使用sudo
系统用户UID为1~999,Linux安装的服务程序都会创建独有的用户,负责运行
普通用户UID从1000开始:由管理员创建(CentOS 7),最大值1000~60000范围
UID 用户id号;GID用户组id号;root用户、组id号都为0
1. 常用命令解释器
/bin/sh 默认
/bin/bash 默认
/sbin/nologin 虚拟用户
2. 用户信息配置文件
/etc/passwd :用户信息
/etc/shadow :用户密码信息
/etc/group :用户组信息
/etc/gshadow:用户组密码信息
/etc/sk
3. 用户管理命令
1)useradd命令
此命令用于Linux中创建新的用户。账号建好之后,再使用passwd设定账号密码,而userdel删除账号
-c<备注>:加上备注文字。备注文字会保存在passwd的备注栏位中;
-d<登入目录>:指定用户登入时的启始目录;
-D:变更预设值;
-e<有效期限>:指定帐号的有效期限;
-f<缓冲天数>:指定在密码过期后多少天即关闭该帐号;
-g<群组>:指定用户所属的群组;
-G<群组>:指定用户所属的附加群组;
-m:自动建立用户的登入目录;
-M:不要自动建立用户的登入目录;
-n:取消建立以用户名称为名的群组;
-r:建立系统帐号;
-s<shell>:指定用户登入后所使用的shell;
-u<uid>:指定用户id。
创建用户流程:
a. useradd user_account
b. 系统读取/etc/login.defs(用户定义文件),和/etc/default/useradd (用户默认配置文件)两文件中定义的规则创建新用户
c. 向/etc/passwd 和/etc/group 文件中添加用户和用户组信息,向/etc/shadow和/etc/gshadow中添加密码信息
d. 根据/etc/default/useradd文件中配置的信息创建用户家目录
e. 把/etc/skel 中所有的文件复制到新用户家目录中
创建用户有关的目录/etc/skel
此目录存放新用户需要的基础环境变量文件,添加新用户时,这个目录下所有文件自动被复制到新家目录下,且默认是隐藏文件,以点开头的
-D参数用来修改配置文件/etc/default/useradd 文件中的默认值
useradd -D 参数选项
2)usermod命令
此命令用于修改系统已经存在的用户信息,只能修改未使用中的用户
3)userdel命令
删除用户与相关文件(建议注释/etc/passwd用户信息而非直接删除用户)
userdel (选项)(参数)
-f:强制删除用户,即使用户当前已登录
-r:删除用户的同时,删除与用户相关的所有文件
4)groupadd命令
此命令用于创建一个新的工作组,新工作组信息将被添加到系统文件中
语法
groupadd - 建立新群组
groupadd [ -ggid [ -o ]] [ -r ] [ -f ] group [[ ]]
选项
-g:指定新建工作组的id;
-r:创建系统工作组,系统工作组的组ID小于500;
-K:覆盖配置文件“/ect/login.defs”;
-o:允许添加组ID号不唯一的工作组。
5)groupdel命令
删除用户组
6)passwd 命令
passwd命令修改用户密码和过期时间等,root可以修改普通用户
语法
passwd(选项)(参数)
选项
-d:删除密码,仅有系统管理者才能使用;
-f:强制执行;
-k:设置只有在密码过期失效后,方能更新;
-l:锁住密码;
-s:列出密码的相关信息,仅有系统管理者才能使用;
-u:解开已上锁的帐号。
-i:密码过期多少天后禁用账户
-x:设置x天后可以修改密码
-n:设置n天内不得改密码
-e:密码立即过期,强制用户修改密码
-w:用户在密码过期前收到警告信息的天数
批量更新密码命令
a.查看当前机器的用户信息
tail /etc/passwd
b.批量改密码,ctrl + d结束输入
chpasswd
7) 用户查询相关命令
id 命令
id命令用于检查用户和组以及对应的uid,gid等信息
8)whoami、who、w、last、lastlog
whoami:显示可用于查看当前登录用户
w:显示当前已登录的用户
last、lastlog查看用户详细的登录信息
last:命令显示已登录的用户列表和登录时间
lastlog:命令显示当前机器所有用户最近的登录信息
9)Linux用户身份切换命令
su命令用于切换到指定用户
root切换普通用户,无须密码
普通用户切换其他用户,需要输出用户密码
visudo命令
用于编辑/etc/sudoers文件,且提供语法检测,用于配置sudo命令
为oldboy用户配置sudo使用权
sudo配置文件
配置sudo目的在于即能让运维方便干活(权限不足问题),又不威胁系统安全
sudo命令用来以其他身份来执行命令,预设的身份为root。在/etc/sudoers中设置了可执行sudo指令的用户。普通用户就不需要root密码即可使用root权限
配置了/etc/sudoers文件后,可以对用户命令提权,sudo命令
切换root执行操作,使用sudo su -,需要输入当前用户的密码
二、Linux文件权限
1. 文件权限
r :read可读,可以用cat等命令查看
w :write写入,可以编辑或者删除这个文件
x : 可以执行
- : 没有权限
2. 文件夹权限
r : 可以对此目录执行ls列出所有文件
w :可以在此目录下创建文件
x :可以cd进入此目录或者查看详细信息
3. 文件权限与数字转化
4. chmod命令
此命令用来变更文件或目录权限
操作对像
u 文件属主权限
g 同组用户权限
o 其它用户权限
a 所有用户(包括以上三种)
权限设定
+ 增加权限
- 取消权限
= 唯一设定权限
权限类别
r 读权限
w 写权限
x 执行权限
X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。
s 文件属主和组id
i 给文件加锁,使其它用户无法访问
5. chown命令
此命令用来修改文件属组,属主信息
chown 用户:组 filename/directory
chown :组 filename/directory
-R,--recursive 递归处理所有文件及子目录
-v,--verbose 为处理的所有文件显示诊断信息
6. chgrp命令
此命令用来改变文件及目录所属的用户组、其中组名可以是用户组的id,也可以是用户组的组名
7. umask命令
umask命令用来限制新文件权限的掩码,防止文件,文件夹创建的时候,权限过大。
新文件创建时,其最初的权限由文件创建掩码决定
umask默认配置在/etc/profile 61-64行
语法
-S :以字符的形式显示当前的掩码
-p : 带umask开头以数字的形式显示当前掩码
计算umask文件权限
默认文件、文件夹权限减去umask值等于最终的权限值
文件最大:666;文件夹最大:777
注:默认创建的文件不得有执行权限
Linux默认权限:文件默认644;目录默认755
8. chattr命令
此命令用于更改文件的扩展权限,比chmod更改的rwx权限更底层
参数
-R:递归更改目录属性
-V:显示命令执行过程
模式
+ 增加参数
- 移除参数
= 更新为指定参数
A 不让系统修改文件最后访问时间
a 只能追加文件数据,不得删除
i 文件不能被删除、改名、修改内容
9. lsattr命令
lsattr命令用来查看文件的第二扩展文件系统属性,结合chattr一起用
-R 递归地列出目录以及其下内容的属性.
-V 显示程序版本.
-a 列出目录中的所有文件,包括以`.'开头的文件的属性.
-d 以列出其它文件的方式那样列出目录的属性, 而不列出其下的内容.
-v 显示文件版本.