linux account 信息,Linux 用户管理简介

一、创建用户

Linux 系统可以使用 useradd 命令创建新用户:

$ sudo useradd -m -c 'description'

-m 选项表示创建用户的同时自动在 /home 目录下创建该用户的主目录(/home/)

-c 选项用于给新用户添加描述,该描述将保存在 /etc/passwd 文件中

默认情况下,新创建的用户并未分配密码,需要使用 passwd 命令为新用户设置密码。

PS:在为新用户自动创建主目录时,可以同时复制一部分初始文件(如 .bashrc、.vimrc 等)到该目录下,复制的源文件默认位于 /etc/skel 目录下。

即创建新用户时,/etc/skel/ 目录下的所有文件都将自动复制到新用户的主目录中。

在 Ubuntu 系统中,useradd 命令默认不自动创建用户主目录,所以需要带上 -m 选项。而 Centos 系统中,useradd 命令默认会自动创建用户主目录,可以加上 -M 选项表示不创建用户主目录。

useradd 的部分命令选项:

选项

描述

-c, --comment

添加用户描述

-d, --home-dir

指定用户的主目录位置

-m, --create-home

自动创建用户的主目录

-M, --no-create-home

不自动创建用户主目录(CentOS)

-N, --no-user-group

不创建同名的组

-s, --shell

指定用户使用的 shell

-g, --gid

指定新账户主组的名称或 ID

-G, --groups

指定新账户的附加组列表

-e, --expiredate

指定新账户的过期日期

-f, --inactive

用户密码过期后的重置密码期限

-r, --system

创建一个系统账户

-k, --skel

指定骨架目录(默认为 /etc/skel)

PS:其中的 INACTIVE 和 EXPIRE 选项用于设置用户账号的过期时间。INACTIVE 用于指定一个期限(单位为天),在该期限内,密码失效后的用户可以重置自己的密码。该选项值为 -1 时则禁用此特性。

EXPIRE 用于指定一个截止日期(格式为 YYYY-MM-DD),超过该期限后用户账号即被禁用。

$ sudo useradd -e 2018-10-01 temp_account # 创建一个临时账户

用户默认设置

新用户在创建时会使用一些预先定义的默认设置,useradd 命令从 /etc/default/useradd 文件中获取这些默认设置。当前的默认配置可以通过 useradd -D 命令显示:

$ useradd -D

GROUP=100

HOME=/home

INACTIVE=-1

EXPIRE=

SHELL=/bin/bash

SKEL=/etc/skel

CREATE_MAIL_SPOOL=no

可以直接通过 useradd -D 命令修改 useradd 的默认设置,如:

$ sudo useradd -D -s /bin/bash # 将新建用户的默认 shell 设置为 /bin/bash

二、用户组

在 Linux 系统中,任何一个用户都必须属于至少一个用户组。对于大多数 Linux 发行版,创建新用户时会自动创建一个同名的用户组。

初始创建的同名用户组叫做基础属组(primary group),用户还可以同时属于其他用户组,这些用户组叫做附加属组(supplementary group)。如:

$ id starky

uid=1000(starky) gid=1000(starky) 组=1000(starky),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),116(lpadmin),122(sambashare)

每一个用户和用户组在创建时都会关联于一个唯一的 UID 和 GID。UID 和 GID 的取值范围都是 0-65535 。root 用户的 UID 和 GID 永远都是 0 。

$ id root

uid=0(root) gid=0(root) 组=0(root

Ubuntu 系统中 1-99 的 ID 只用于分配给系统用户(如运行服务的 www-data),100-999 则动态地分配给系统守护进程的用户(在创建用户时使用 --system 选项)。而第一个普通用户则分配值为 1000 的 UID 和 GID。

使用 useradd 命令创建新用户时,可以同时为该用户关联附加属组。用户创建完成后也可以使用 usermod 命令修改该用户的附加属组。如:

$ sudo useradd test -G lpadmin,sambashare # 创建用户 test 并将其添加至 lpadmin 和 sambashare 组

$ id test

uid=1004(test) gid=1004(test) 组=1004(test),116(lpadmin),122(sambashare)

$

$ sudo usermod test -a -G sudo # 将用户 test 添加(-a)至 sudo 用户组

$ id test

uid=1004(test) gid=1004(test) 组=1004(test),27(sudo),116(lpadmin),122(sambashare)

usermod 命令用于修改已经存在的用户。常用命令选项如下:

$ usermod

用法:usermod [选项] 登录

选项:

-c, --comment 注释 GECOS 字段的新值

-d, --home HOME_DIR 用户的新主目录

-e, --expiredate EXPIRE_DATE 设定帐户过期的日期为 EXPIRE_DATE

-f, --inactive INACTIVE 过期 INACTIVE 天数后,设定密码为失效状态

-g, --gid GROUP 强制使用 GROUP 为新主组

-G, --groups GROUPS 新的附加组列表 GROUPS

-a, --append GROUP 将用户追加至上边 -G 中提到的附加组中,

并不从其它组中删除此用户

-h, --help 显示此帮助信息并退出

-l, --login LOGIN 新的登录名称

-L, --lock 锁定用户帐号

-m, --move-home 将家目录内容移至新位置 (仅与 -d 一起使用)

-o, --non-unique 允许使用重复的(非唯一的) UID

-p, --password PASSWORD 将加密过的密码 (PASSWORD) 设为新密码

-R, --root CHROOT_DIR chroot 到的目录

-s, --shell SHELL 该用户帐号的新登录 shell

-u, --uid UID 用户帐号的新 UID

-U, --unlock 解锁用户帐号

-Z, --selinux-user SEUSER 用户账户的新 SELinux 用户映射

具体可参考命令:man usermod

三、删除用户(组)

userdel 命令可用于删除用户,groupdel 命令可用于删除用户组。

默认不带选项的 userdel 命令只会删除用户,并不会同时删除该用户的主目录(可以通过加上 -r 选项强制删除用户主目录)。

删除某个用户后,所有原本属于该用户的文件都将失去属主,而被对应的 UID 所代替。如果之后又新建一个用户,而该用户使用了之前已删除账户的 UID,则新账户会替代已删除的账户并获取其文件的权限。

可以使用 find / -user UID -o -group GID 命令定位已删除账户拥有的所有文件

四、密码

使用 useradd 命令创建新用户时,是不自动提示创建密码的(Ubuntu系统中的 adduser 命令可以交互地创建新用户)。

需要使用 passwd 命令为用户设置或修改密码。

密码时效

可以使用 chage 命令设置用户密码的有效期限,如:

$ sudo chage -M 30 test

30 天后,用户 test 的密码将会过期,并收到提示需要输入新的密码。

chage 命令的常用选项:

选项

描述

-m days

设置用户修改密码的最小间隔时间,值为 0 时表示可以在任何时间修改密码

-M days

设置密码保持有效的最长期限,即修改密码的最大间隔时间

-E date

设置用户账户过期并自动被禁用的日期

-W days

设置密码过期前多少天用户被警告需要修改密码

-I days

设置密码失效多长时间后账户被锁定

不带任何选项的 chage 命令可以交互地修改密码时效:

$ sudo chage test

正在为 test 修改年龄信息

请输入新值,或直接敲回车键以使用默认值

最小密码年龄 [0]:

最大密码年龄 [99999]: 60

最近一次密码修改时间 (YYYY-MM-DD) [2018-09-03]:

密码过期警告 [7]:

密码失效 [-1]:

帐户过期时间 (YYYY-MM-DD) [-1]:

$

用户可以使用 chage -l 命令查看自己的密码时效设置:

chage -l test

最近一次密码修改时间 : 9月 03, 2018

密码过期时间 : 11月 02, 2018

密码失效时间 : 从不

帐户过期时间 : 从不

两次改变密码之间相距的最小天数 :0

两次改变密码之间相距的最大天数 :60

在密码过期之前警告的天数 :7

账户禁用

可以使用 passwd -l 命令禁用用户账号,使用 passwd -u 命令解除账户禁用。

但是这个命令并不能完全禁止用户的访问(如该用户还可以通过 SSH 远程登录主机)。

如需完全禁用某用户,可使用如下命令:

sudo usermod --expiredate 1

该命令会将用户账号的失效日期设置为 1970 年 1月 1 日(即立即禁用)。

或者将用户登录时的 shell 修改为 /bin/false 或 /usr/sbin/nologin。

$ sudo usermod -s /bin/false

该命令不会锁定账户,但该账户对 shell 的访问已被限制。

五、用户信息

Linux 系统将用户、群组等信息保存在以下三个文件中:

/etc/passwd、/etc/shadow、/etc/group。

/etc/passwd 文件中包含了所有用户的列表及详细信息:

root:x:0:0:root:/root:/bin/bash

...

starky:x:1000:1000:starky,,,:/home/starky:/bin/bash

sshd:x:112:65534::/run/sshd:/usr/sbin/nologin

postgres:x:113:123:PostgreSQL administrator,,,:/var/lib/postgresql:/bin/bash

skitar:x:1001:1001::/home/skitar:/bin/bash

mysql:x:114:124:MySQL Server,,,:/nonexistent:/bin/false

该文件的格式为:username:password:UID:GID:GECOS:Home:Shell

其中的 password 项都为 x ,而实际的密码保存在 /etc/shadow 文件中。

/etc/group 文件的格式为:groupname:password:GID:member,member

六、sudo

sudo 命令可以使普通用户以 root 用户身份执行命令。

使用 useradd 命令新建的用户默认没有使用 sudo 命令的权限,需要先将其加入 sudo 用户组。

$ sudo usermod -a -G sudo

sudo 的本意是以其他用户的身份执行命令。可以使用 -u 选项指定“其他”身份。默认即为 root 用户。

配置 sudo

sudo 命令通过检查 /etc/sudoers 中的配置来确定授权规则。可以通过编辑 sudoers 文件将 sudo 的授权限制为指定的用户,指定的主机,或只能执行特定的命令。

f0708595ad18

sudoers

sudoers 文件的格式为:username host = command

如:test ALL=/bin/userdel,/bin/useradd

可以将授权使用的命令限定为某个目录中的所有命令(但不包含其子目录),如:

test ALL=/bin/*,/sbin/*

有些时候需要将使用某个命令的权限授予一个用户,但该命令又需要使用另外一个用户的身份执行(如 MySQL 的系统守护进程)。可以使用下面的格式:

test ALL=(mysql) /usr/bin/mysqld

还可以通过用户组信息完成对 sudo 的授权:

%groupname ALL=(ALL) ALL

上面的配置表示该组的所有用户可以在任何主机使用 sudo 执行任何命令。

别名设置

/etc/sudoers 文件中允许定义和使用别名,包括用户别名(User_Alias)、主机别名(Host_Alias)和命令别名(Cmnd_Alias)。如:

User_Alias ADMIN = skitar,test

Cmnd_Alias USER_COMMANDS = /bin/userdel,/bin/useradd

ADMIN ALL=/bin/groupadd,USER_COMMANDS

上面的配置表示用户 skitar 和 test 可以在所有主机上通过 sudo 执行 userdel、useradd 和 groupadd 命令。

还可以在别名前加上感叹号(!)表示拒绝:

Cmnd_Alias DENIED_COMMANDS = /bin/su,/bin/mount/,/bin/umount

test ALL=/bin/*,!DENIED_COMMANDS

上面的配置表示 test 用户可以在所有主机上通过 sudo 执行除了 su、mount 和 umount 以外的所有 /bin 目录下的命令。

参考资料

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值