涉及文件:
/etc/passwd、/etc/shadow、/etc/group、/etc/gshadow
属性:
-rw-r--r-- 1 root root 1787 Nov 24 01:12 /etc/passwd
内容:
root:x:0:0:root:/root:/bin/bash
... ...
以":"分割为7部分
root | x | 0 | 0 | root | /root | /bin/bash |
---|---|---|---|---|---|---|
用户名 | 密码,为了安全,对应存储在shadow里 | UID,用户标识号 | GID 用户组标识号 | 用户描述,finger时显示 | home目录 | 默认shell程序 |
用户不能登录设置:
/usr/sbin/nologin和/bin/false
默认shell | 文件类型 | 文件大小 | 切换时表现 | 用户权限(待详细确认) |
---|---|---|---|---|
/usr/sbin/nologin | ELF 64-bit LSB shared object | 8.0k | 提示 This account is currently not available | 可以使用一些系统服务,比如ftp服务,当nologin加入了/etc/shells中时 |
/bin/false | ELF 64-bit LSB executable | 28k | 无提示 | 不能使用系统服务 |
/bin/正常shell以/bin/bash为例 | ELF 64-bit LSB executable | 1016k | 登录到相应的shell窗口 | 正常使用 |
nologin:it created in 4.4 BSD(1990)
bin/false: 一直存在
推荐使用nologin来拒绝用户登录。
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
systemd-timesync:x:100:102:systemd Time Synchronization,,,:/run/systemd:/bin/false
systemd-network:x:101:103:systemd Network Management,,,:/run/systemd/netif:/bin/false
systemd-resolve:x:102:104:systemd Resolver,,,:/run/systemd/resolve:/bin/false
systemd-bus-proxy:x:103:105:systemd Bus Proxy,,,:/run/systemd:/bin/false
syslog:x:104:108::/home/syslog:/bin/false
_apt:x:105:65534::/nonexistent:/bin/false
系统默认存在的账号(root、sys、nobody、bin、daemon等),已经是很多安全审计的讨论内容了;
如果系统账号默认可以登录(也就是默认的shell没有配置为/bin/false或/usr/sbin/nologin),则存在安全漏洞。
方便管理员更方便的管理(在etc/passwd配置后,查看文件所有权时,可以清楚看到所有者名字而非UID/GID)
默认账号linux规范,第21章
a. The bin User ID/Group ID is included for compatibility with legacy applications. New applications should no longer use the bin User ID/Group ID. bin账号主要是为了兼容旧的程序而保留的账号
b. The daemon User ID/Group ID was used as an unprivileged User ID/Group ID for daemons to execute under in order to limit their access to the system. Generally daemons should now run under individual User ID/Group IDs in order to further partition daemons from one another.
这些账号是LSB(linux标准库)中指定的用户,除了root,bin,daemon以外,它们几乎都不必要存在
详细讨论见:https://access.redhat.com/discussions/685053
属性:
-rw-r----- 1 root shadow 1588 Nov 22 22:18 /etc/shadow
内容:
root:$6$iqK9aFkM$0WQdYSmfTKVumS3CeIdoDTnsL6MOoe5nvCHRYvVkSiJyNZjw4.krK/buDtTYRooOTuys5iRh3JMSmw0MunPwF/:17743:0:99999:7:::
以":"分割
root | **** | 17743 | 0 | 99999 | 7 | null | null | null |
---|---|---|---|---|---|---|---|---|
login name | encrypted passwd | date of last passwd change | minimum passwd age | maximum passwd image | passwd warning period | passwd inactivity period | account expiration date | reserved field |
用户名 | 密码密文 | 最近更改密码的时期,相交于1970 | 这次能修改的最小时间,相较于上一次修改 | 超过这个时间后用户就需要修改密码为null,不需要更改密码,没有警告提示 | 密码到期前多久进行提示 | 密码静止时间;为空则不会强制静止 | 账号失效时间,为空代码永远不会失效 | 为未来保留字段 |
默认的配置项存在/etc/login.defs
属性:
-rw-r--r-- 1 root root 869 Nov 22 22:18 /etc/group
内容:
root:x:0:
以":"分割
root | x | 0 | null |
---|---|---|---|
group name | passwd | GID | user list |
群组名称 | 密码 | 群组ID | 群组的成员列表,已,分割 |
与/etc/shadow相似,保存着群组的秘钥密码。
存在两种方式:useradd和adduser:
useradd is native binary compiled with the system. But, adduser is a perl script which uses useradd binary in back-end.
adduser is more user friendly and interactive than its back-end useradd. There’s no difference in features provided.
useradd 利于自动化脚本编写;默认只创建用户,无密码,无用户空间,无默认shell;具体需要添加参数进行设定。
adduser 交互式添加用户;(发行版中不一定都存在,比如SuSE、)
tips:useradd -p指定密码时,需要是加密的;加密的密码可以使用openssl passwd -stdin进行生成。
-p, --password PASSWORD encrypted password of the new account。
vim /etc/group
添加
1234:x:1009:1234
vim /etc/shadow
添加
1234:x:1009:1009:testing:/home/sunrise:/bin/bash
cp -r /etc/skel /home/sunrise
chown -R 1234:1234 /home/sunrise
到此完成手创建,可以使用id 1234或者finger 1234查看用户详细信息。