1 用户和用户组基础

1.1 /etc/passwd

Linux系统中的每个用户都在/etc/passwd文件中有一个对应的记录行,它记录了这个用户的一些基本属性。

这个文件对所有用户都是可读的。它的内容类似下面的例子:

# cat /etc/passwd

root:x:0:0:Superuser:/:
daemon:x:1:1:System daemons:/etc:
bin:x:2:2:Owner of system commands:/bin:
sys:x:3:3:Owner of system files:/usr/sys:
adm:x:4:4:System accounting:/usr/adm:
uucp:x:5:5:UUCP administrator:/usr/lib/uucp:
auth:x:7:21:Authentication administrator:/tcb/files/auth:
cron:x:9:16:Cron daemon:/usr/spool/cron:
listen:x:37:4:Network daemon:/usr/net/nls:
lp:x:71:18:Printer administrator:/usr/spool/lp:
sam:x:200:50:Sam san:/home/sam:/bin/sh

从上面的例子我们可以看到,/etc/passwd中一行记录对应着一个用户,每行记录又被冒号(:)分隔为7个字段,其格式和具体含义如下:

用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell

1.2 /etc/shadow

/etc/shadow中的记录行与/etc/passwd中的一一对应,它由pwconv命令根据/etc/passwd中的数据自动产生

它的文件格式与/etc/passwd类似,由若干个字段组成,字段之间用":"隔开。这些字段是:

登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
cat /etc/shadow

root:Dnakfw28zf38w:8764:0:168:7:::
  1. "登录名"是与/etc/passwd文件中的登录名相一致的用户账号
  2. "口令"字段存放的是加密后的用户口令字,长度为13个字符。如果为空,则对应用户没有口令,登录时不需要口令;如果含有不属于集合 { ./0-9A-Za-z }中的字符,则对应的用户不能登录。
  3. "最后一次修改时间"表示的是从某个时刻起,到用户最后一次修改口令时的天数。时间起点对不同的系统可能不一样。例如在SCO Linux 中,这个时间起点是1970年1月1日。
  4. "最小时间间隔"指的是两次修改口令之间所需的最小天数。
  5. "最大时间间隔"指的是口令保持有效的最大天数。
  6. "警告时间"字段表示的是从系统开始警告用户到用户密码正式失效之间的天数。
  7. "不活动时间"表示的是用户没有登录活动但账号仍能保持有效的最大天数。
  8. "失效时间"字段给出的是一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是一个合法的账号,也就不能再用来登录了。

1.3 /etc/group

用户组的所有信息都存放在/etc/group文件中。此文件的格式也类似于/etc/passwd文件,由冒号(:)隔开若干个字段,这些字段有:

组名:口令:组标识号:组内用户列表
cat /etc/group

root::0:root
bin::2:root,bin
sys::3:root,uucp
adm::4:root,adm
daemon::5:root,daemon
lp::7:root,lp
users::20:root,sam


2 用户管理

2.1 useradd

#创建系统账号
useradd -r username
#例子
useradd -g user007 -d /home/user007  -G sysadmin -s /bin/sh -e 2024-08-09 user007
#创建程序用户,不创建主目录且不允许登录
useradd -M -s /sbin/nologin

参数说明:

  • 选项:
  • -d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
  • -g 用户组 指定用户所属的用户组。
  • -G 用户组,用户组 指定用户所属的附加组。
  • -s Shell文件 指定用户的登录Shell。
  • -u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
  • -e 指定用户失效时间
  • -f 指定密码过期后。账户将被彻底禁用的天数
  • -m 自动创建主目录
  • -M 不创建用户主目录

2.2 chage 

#修改过期日期
chage -E 2024-08-10 username
#查看用户信息
chage -l username

2.3 usermod

#将username加入到用户组
usermod -G groupname username


2.4 userdel

#强制删除用户,即使在登录状态
userdel -f username
#删除用户,家目录及用户邮箱一起删除
userdel -r username

2.5 passwd

#设置用户密码
passwd username
#删除用户密码
passwd -d username
#锁定用户密码(账号可用,只是无法通过密码验证)
passwd -l username
#解锁密码
passwd - username

无交互式密码设置

echo "12345" | passwd --stdin user001

2.6 id

#显示uid,gid
id userna

2.7 visudo

RHCE 学习笔记之用户和权限管理06_字段

# !为排除命令
test ALL=(ALL)  NOPASSWD: ALL,!/usr/bin/passwd

2.8 groupadd

groupadd

2.9 groupdel

group groupname

3 umask

umask 目录为777,文件为666

文件的权限为为目录去掉X权限

设置路径 :

用户: $HOME/.bashrc    

全局:/etc/.bashrc

4 特殊权限

SUID作用:

a、SUID权限仅对二进制程序(binary program)有效;b、执行者对于该程序需要具有x的可执行权限;c、本权限仅在执行该程序的过程中有效(run-time);d、执行者将具有该程序拥有者(owner)的权限。

ls -al /usr/bin/passwd

-rwsr-xr-x. 1 root root 27856 Apr  1  2020 /usr/bin/passwd

s 为特殊权限标识具有执行权限,S表示没有执行权限。

sgid(Set GID)

 对于文件,使用该命令的组群权限来运行

 对于目录,在设置了 sgid 权限的目录中创建的文件会继承该目录的组群身份,创建一个子目录的话,不但会继承组群身份,还会继承sgid的特殊权限位。

 ls -al /usr/bin/wall

-r-xr-sr-x. 1 root tty 15344 Jun 10  2014 /usr/bin/wall

Sbit

   粘滞位(Sticky Bit ):在带有粘滞位的目录中的文件只能被文件的所属用户和根用户删除,不管该目录的写入权限是如何设置的(“ t ” 代表粘滞位)

 为特殊权限标识具有执行权限,T表示没有执行权限

SUID/SGID/SBIT权限设置

和前面说的rwx差不多,也有两种方式,一种是字符方式,一种是数字方式。

4 为 SUID = u+s

2 为 SGID = g+s

1 为 SBIT = o+t

5 隐藏属性

chattr 

#文件具有无法被修改,删除等属性
chattr +i test.txt
# 文件只能被追加内容且无法使用vim等打开
chattr +a test.txt

lsattr

lsattr test.txt

RHCE 学习笔记之用户和权限管理06_用户组_02