用户组
用户
用户和组
用户user:
管理员: root, 0
普通用户:1-60000 自动分配
系统用户:1-999,对守护进程获取资源进行权限分配
登录用户:1000+,可以交互式登录
linux用户和组的配置文件
/etc/passwd:用户及其属性信息(名称、UID、主组ID等)
格式:
login name:登录用名(wang)
passwd:密码 (x)
UID:用户身份编号 (1000)
GID:登录默认所在组编号 (1000)
GECOS:用户全名或注释
home directory:用户主目录 (/home/wang)
shell:用户默认使用shell (/bin/bash)
/etc/group:组及其属性信息
格式:
群组名称:就是群组名称
群组密码:通常不需要设定,密码是被记录在 /etc/gshadow
GID:就是群组的 ID
以当前组为附加组的用户列表(分隔符为逗号)
/etc/shadow:用户密码及其相关属性
格式:
登录用名
用户密码:一般用sha512加密
从1970年1月1日起到密码最近一次被更改的时间
密码再过几天可以被变更(0表示随时可被变更)
密码再过几天必须被变更(99999表示永不过期)
密码过期前几天系统提醒用户(默认为一周)
密码过期几天后帐号会被锁定
从1970年1月1日算起,多少天后帐号失效
/etc/gshadow:组密码及其相关属性
格式:
群组名称:就是群的名称
群组密码:
组管理员列表:组管理员的列表,更改组密码和成员
以当前组为附加组的用户列表:多个用户间用逗号分隔
文件操作:
vipw: 直接使用vim进入/etc/passwd文件
vigr: 直接使用vim进入/etc/group文件
pwck: 检查passwd文件的完整性
grpck: 检查group文件的完整性
用户和组管理命令
用户管理命令
useradd [OPTIONS] LOGIN
-D 显示或改变默认的useradd的配置
-u UID 指定uid
-o 配合-u选项,不检查UID的唯一性
-g GID 指明用户所属基本组,可为组名,也可以GID,组须存在
-c "comment" 用户的注释信息
-d HOME_DIR 以指定的路径(不存在)为家目录
-s SHELL 指明用户的默认shell程序,可用列表在/etc/shells文件
-G GROUP[,GROUP2,...] 为用户指明附加组,组须事先存在
-N 不创建私用组做主组,使用users组做主组
-r 创建系统用户 Centos 6:ID<500, Centos 7:ID<1000;-s /sbin/nologin 非交互式登录的用户
-m 创建家目录,用于系统用户
-M 不创建家目录,用于非系统用户
usermod [option] login
-u UID 新UID
-g GID 新主组(需存在)
-G GROUP1[,GROUP2,...[,GROUPN]] 新附加组,原来的附加组将会被覆盖
-a 保留原有的附加组
-s SHELL 新的默认SHELL
-c 'COMMENT' 新的注释信息
-d HOME 新家目录不会自动创建(需手动在/home目录下创建目录);
-m 创建新家目录并移动原家数据
-l login_name 新的名字
-L lock指定用户,在/etc/shadow密码栏增加!(不允许登录)
-U unlock指定用户,将/etc/shadow密码栏的!去掉
-e YYYY-MM-DD 指定用户账号过期日期
-f INACTIVE: 设定非活动期限
userdel [OPTION]... login
-r 删除用户家目录
id [OPTION]... [USER]
-u 显示UID
-g 显示GID
-G 显示用户所属的组的ID
-n 显示名称,需配合ugG使用
组账号维护命令
groupadd [OPTION]... group_name
-g GID 指明GID号:[GID_MIN,GID_MAX]
-r 创建系统组:ID<1000
groupmod [option]... group
-n group_name 新组名
-g GID 新的GID
groupdel
groupdel GROUP
新建用户的相关文件和命令
/etc/default/useradd useradd命令的默认参数文件
/etc/skel/* 生成默认/home/username/下的文件或目录
/etc/login.defs 创建普通用户,默认配置文件
newusers passwd文件 格式文件 批量创建用户
chpasswd 批量修改用户口令 格式 用户名:密码
设置用户密码
passwd [options] Username 修改指定用户的密码
常用选项:
-d 删除指定用户的密码
-l 锁定指定用户
-u 解锁指定用户
-e 强制用户下次登录修改密码
-f 强制操作
-n mindays 指定最短使用期限
-x maxdays 最长使用期限
-w warndays 提前多少天开始警告
-i inactivedays 非活动期限
--stdin 从标准输入接收用户密码
示例: echo "PASSWD" | passwd --stdin USERNAME
chage [option]... LOGIN
-d LAST_DAY
示例: chage -d 0 tom 下一次登录强制重设密码
-E --expiredate EXPIRE_DATE
示例: chage -E 2019-09-10 设置账号截止时间
-I --inactive INACTIVE
-m --mindays MIN_DAYS
-M --maxdays MAX_DAYS
-W --warndays WAEN_DAYS
-l 显示密码策略
示例:设置用户tom的密码0天后可以修改,有效期42天,密码过期前14天提醒,密码过期后,锁定前的非活动天数
chage -m 0 -M 42 -W 14 -I 7 tom
chfn 指定个人信息
chsh 指定shell
getent shadow username 查看username的信息
更改组密码
gpasswd [option] GROUP
-a user 将user添加至指定组中
-d user 从指定组中移除用户user
-A user1,user2,... 设置有管理权限的用户列表
newgrp命令 临时切换主组,如果用户不属于此组,则需要组密码
更改和查看组成员
groupmems [options] [action]
options:
-g, --group groupname 更改为指定组(只有root)
action:
-a, --add username 指定用户加入组
-d, --delete username 从组中删除用户
-p,--purge 从组 中清除所有成员
-l, --list 显示组成员列表
groups [option]... [username]... 查看用户所属组列表
文件权限
文件属性操作
chown [option]... [owner][:group] file... 修改文件的属主
用法说明:
owner
owner:group
:group,(冒号也可以用.替换)
-R 递归
chown [option]... --reference=RFILE FILE
示例: chown root:admins testfile
chgrp [option]... GROUP FILE... 修改文件的属组
chgrp [option]... -reference=RFILE FILE...
-R 递归
示例: chgrp sales testfile
文件:
r 可使用文件查看类工具获取其内容
w 可修改其内容
x 可以把此文件提请内核启动为一个进程
目录:
r 可以使用ls查看此目录中文件列表
w 可在此目录中创建文件,也可删除此目录中的文件,需配合x权限才能进行操作。
x 可以使用ls -l查看此目录中文件元数据(须配合r),可以cd进入此目录
X 只给目录x权限,不给文件x权限
文件的权限主要针对三类对象进行定义
owner 属主, u
group 属组, g
other 其他, o
每个文件针对每类访问者都定义了三种权限
r Readable
w Writabl
x eXcutable
文件:
r 可使用文件查看类工具获取其内容
w 可修改其内容
x 可以把此文件提请内核启动为一个进程
目录:
r 可以使用ls查看此目录中文件列表
w 可在此目录中创建文件,也可删除此目录中的文件,需配合x权限才能进行操作。
x 可以使用ls -l查看此目录中文件元数据(须配合r),可以cd进入此目录
X 只给目录x权限,不给文件x权限
文件权限操作
chmod [option]... OCTAL-MODE FILE... 修改文件权限,按八进制格式
-R 递归修改文件权限
示例: chmod 600 file
chmod [option]... MODE[,MODE]... FILE...
MODE:
修改一类用户的所有权限
u= g= o= ug= a= u=,g=
例如:chmod -R g=rwX /testdir
修改一类用户某位或某些位权限
u+ u- g+ g- o+ o- a+ a- + -
示例: chmod u+wx,g-r,0=rx file
chmod [option]... --reference=RFILE FILE 参考RFILE文件的权限,将FILE的修改为同RFILE
新建文件和目录的默认权限
umask值 可以用来保留在创建文件权限
新建文件的默认权限: 666-umask,如果所得结果某位存在执行(奇数)权限,则将其权限+1
新建目录的默认权限: 777-umask
非特权用户umask是 002
root的umask 是 022
umask: 查看
umask # 设定
示例: umask 002
umask u=rw,g=r,o=
umask –S 模式方式显示
umask –p 输出可被调用
全局设置: /etc/bashrc 用户设置:~/.bashrc
Linux文件系统上的特殊权限
可执行文件上SUID权限
启动为进程之后,其进程的属主为原程序文件的属主,拥有其权限
用户执行此程序时,将继承此程序所有者的权限
SUID只对二进制可执行程序有效
SUID设置在目录上无意义
权限设定:
chmod u+s FILE...
chmod u-s FILE...
可执行文件上SGID权限
启动为进程之后,其进程的属组为原程序文件的属组
权限设定:
chmod g+s FILE...
chmod g-s FILE...
目录上的SGID权限
默认情况下,用户创建文件时,其属组为此用户所属的主组
一旦某目录被设定了SGID,则对此目录有写权限的用户在此目录中创建的文件所属组为此目录的属组
通常用于创建一个协作目录
权限设定:
chmod g+s DIR...
chmod g-s DIR...
Sticky位
具有写权限的目录通常用户可以删除该目录中的任何文件,无论该文件的权限或拥有权
在目录设置Sticky 位,只有文件的所有者或root可以删除该文件
sticky 设置在文件上无意义
权限设定:
chmod o+t DIR...
chmod o-t DIR...
例如:
ls -ld /tmp
drwxrwxrwt 12 root root 4096 Nov 2 15:44 /tmp