Hits

linux 权限管理 chown

每天一个linux命令 - chown

Linux/Unix 是多人多工操作系统,所有文件皆有拥有者,利用 chown 可以将文件的拥有者改为指定的用户或组。用户可以是用户名或者用户ID,组可以是组名可以组ID,文件是以空格分开的要求改变权限的文件列表,支持通配符。

chown [-cfhvR] [--help] [--version] user[:group] file ...

// 将文件file1.txt 的拥有者设为users, 群组jessie
chown users:jessie file1.txt

// 将当前目录下的所有文件与子目录的拥有者都设为 users,群组lamport
chown -R lamport:users * 
  • user 新的文件拥有者的使用者ID
  • group 新文件拥有者的使用者群体 group
  • -c 若该文件拥有者确实已经更改,才显示其更改动作
  • -f 若该文件拥有者无法被更改也不要显示错误信息
  • -h 只对于连接(link)进行变更,而非该link真正指向的文件
  • -v 显示拥有者变更的详细资料
  • -R 对当前目录下的所有文件与子目录进行相同的变更操作(递归)
  • –help 显示帮助信息
  • –version 显示版本

Linux 用户和用户组

linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户都必须先向系统管理员申请一个账号,用户的账号一方面可以帮助系统管理员对使用系统的用户进行追踪,并控制他们对系统资源的访问,另一方面可以帮助用户组织文件,提供安全性保护。对用户的管理主要体现在以下几个方面:

  • 用户账号的添加、删除和修改
  • 用户密码的管理
  • 用户组的管理

用户账号管理

添加用户

man useradd // 查看useradd命令

useradd 选项 用户名
  • 选项

    • -c comment 指定一段注释性描述。
    • -d 目录 指定用户主目录,如果此目录不存在,则用-m选项可以创建主目录。
    • -g 用户组 指定用户所属的用户组。
    • -G 用户组,用户组 指定用户所属的附加组。
    • -s shell文件,指定用户的登录Shell
    • -u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号
  • 用户名 指定新账号的登录名

useradd -d /usr/lzw -m lzw // 创建一个用户lzw,主目录 /usr/lzw

useradd -s /bin/sh -g group -G adm,root gem
// 新建一个用户gem,该用户的登录Shell是 /bin/sh, 
// 它属于group用户组,同时又属于adm和root用户组,其中group用户组是其主组,
// 这里可能新建组:groupadd group 和 groupadd adm
// 增加yoghurt账号会更新 /etc/passwd, /etc/shadow, /etc/group 等

删除账号

userdel -r lzw // -r 把用户的主目录一起删除

修改账号

usermod -s /bin/ksh -d /home/z -g developer lzw
// 此命令将用户lzw的登录Shell修改为ksh,主目录为/home/z,用户组为developer

用户口令(密码)管理

passwd 选项 用户名

passwd                 // 修改当前用户的密码
    Old password: ***
    New password: ***
    Re-enter new password: ***
    
passwd lzw     // 如果是超级管理员可以修改任何用户的密码   New password: ***
    Re-enter new password: ***

选项有以下:

- -l 锁定口令,即禁用账号
- -u 口令解锁
- -d 使账号无口令
- -f 强迫用户下次登录时使用口令

用户组管理

增加一个新用户组

groupadd 选项 用户组

groupadd group1 // 向系统增加一个新组group1, 新组的标识符在当前最大标识符的基础上加1

groupadd -g 101 group2 // 增加新组,指定标识符101
  • -g GID,指定新用户组的组标识号(GID)
  • -o 一般与 -g选项同事时使用,表示新用户组的GID可以与系统已有用户组的GID相同

删除用户组

groupdel 用户组

groupdel group1 // 从系统中删除组group1

修改用户组

groupmod 选项 用户组

groupmod -g 102 group2 // 将group2的组标识号修改为102

groupmod -g 10000 -n group3 group2 // 将组group2的标识号修改为10000,同时将组名修改为group3

用户不同组间切换

newgrp root // 切换当前用户到root组,前提条件是root用户组确实是该用户的主组或附加组

与用户账号有关的系统文件

与用户和用户组相关的信息都存放在一些系统文件中,这些文件包括 /etc/passwd, /etc/shadow, /etc/group 等

/etc/passwd

每一行赌赢一个用户,每行用6个:分割的7个字段,分别代表以下含义

cat /etc/passwd // 记录每个用户的信息,对每个用户都可读
root:x:0:0:Superuser:/:
用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell

拥有账户文件

/etc/passwd 是对所有用户可读的,所以密码太过简单容易破解,因此linux把加密后的口令分离出来,单独存放在一个文件中,/etc/shadow,只有超级管理员才有读权限

/etc/shadow 中的记录,与 /etc/passwd 中的一一对应,它由 pwconv 命令根据 /etc/passwd 中的数据自动产生,格式也类似,由若干个字段组成,用 : 隔开

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

cat /etc/shadow

root:Dnakfw28zf38w:8764:0:168:7:::

用户组信息 /etc/group

添加批量用户

  • 先编辑一个文本文件
cat user.txt

user001::600:100:user:/home/user001:/bin/bash
...
  • 以root身份执行命令 /usr/sbin/newusers, 从刚创建的用户文件user.txt中导入数据

newusers < user.txt

然后执行命令 vipw 或者 vi /etc/passwd 检查 / etc/passwd 文件是否已经出现这些用户的数据,并且用户的宿主目录是否已创建

  • 执行命令 /usr/sbin/pwunconv

将 /etc/shadow 产生的shadow密码解码,然后回写到 /etc/passwd 中,并将 /etc/shadow 的shadow密码栏删掉,这是为了方便下一步的密码转换工作,即先取消 shadow password 功能

pwunconv

  • 编辑每个用户的密码对照文件
user001:密码
user002:密码
  • 以 root 身份执行命令 /usr/sbin/chpasswd

创建用户密码,chpasswd会经过 /usr/bin/passwd 命令编码过的密码写入到 /etc/passwd 的密码栏

chpasswd < passwd.txt

  • 确定密码经编码写入 /etc/passwd 的密码栏后

执行命令 /usr/sbin/pwconv 将密码编码为 shadow password, 并将结果写入 /etc/shadow

pwconv

这样就完成了大量用户的创建,之后可以到 /home 下检查这些用户宿主目录的权限设置是否正确,并登录验证用户密码是否正确

本文链接:参与评论 »

--EOF--

提醒:本文最后更新于 132 天前,文中所描述的信息可能已发生改变,请谨慎使用。

专题「Linux相关知识」的其它文章 »

Comments