Linux用户与组管理
不知不觉做做程序也有些年头了,但是对于shell及linux系统还是稍微有些陌生。之前零零散散的学过一些,但是缺少总结。用到的时找度娘,度娘可以帮助解决大部分问题,但是自己总觉得欠缺一些。总之缺少体系。从今天开始,系统整理下linux相关知识。
希望对自己有些帮助。
希望对自己有些帮助。
需要观察的文件有
/etc/group 组文件
/etc/passwd 用户文件
/etc/group 组文件
/etc/passwd 用户文件
Linux 用户管理
1.创建用户
useradd
-m
如果不存在,则创建用户主目录。骨架目录中的文件和目录(可以使用 -k 选项指定),将会复制到主目录。默认上,如果没有指定此选项并且 CREATE_HOME没有启用,不会创建主目录。
-g
用户初始登陆组的组名或号码。组名必须已经存在。组号码必须指代已经存在的组。
如果没有指定, useradd 的行为将依赖于 /etc/login.defs 文件中的 USERGROUPS_ENAB 参数。如果此参数设置为了 yes (或者在命令行上指定了
-U/--user-group),将会为用户创建一个组,组名和登录名相同。如果选项设置为了 no (或者在命令行上指定了 -N/--no-user-group),useradd 会把新用户的主组设置为
/etc/default/useradd 中 GROUP 变量指定的值,再或者默认是 100。
-G
用户还属于的附加组列表。每个组都用逗号隔开,没有中间的空格。这里的组受到了 -g 选项给定的组同样的限制。默认上,用户只属于初始组。
-u
用户 ID 的数字值。此值必须为唯一的,除非使用了 -o 选项。此值必须非负,默认使用大于等于 UID_MIN,且大于任何其他用户 ID 最小值。
请参考 -r 选项和 UID_MAX 的描述。
-o
允许使用重复的 UID 创建用户账户。
此选项只有和 -u 选项组合使用才有效。
-p
加密了的密码,就像 crypt(3) 的返回值。默认为禁用密码。
注意:不推荐使用这个选项,因为密码(或加密过的密码)会被用户通过列出这个过程而看到。
您应该确保密码符合系统的密码政策。
例:创建一个mysql_user 用户 指定 mysql组,并且创建根目录 并且指定用户id为1001
useradd -m -g mysql -u 1001 mysql_user
2.修改用户
usermod
-a
将用户添加到附加组。只能和 -G 选项一起使用。
-e
用户账户将被禁用的日期。日期以 YYYY-MM-DD 格式指定。
-g
用户的新初始登录组的组名或数字代号。此组必须存在。
用户主目录中,属于原来的主组的文件将转交新组所有。
主目录之外的文件所属的组必须手动修改。
-G
用户还属于的附加组列表。组之间使用逗号分隔,没有空格。这些组需要遵守和 -g 选项中给的组同样的限制。
如果用户当前是一个组的成员,而这个组没有列在这里,用户将被从那个组里便删除。这个行为可以通过 -a 选项修改,这使用户追加到给出的附加组列表中。
-u
用户 ID 的新数值。
这个值必须是唯一的,除非使用了 -o 选项,必须是非负值。
用户的邮箱,用户主目录中属于此用户的文件的属主 ID 也将自动更改。
用户主目录之外文件所有权必须手动修复。
-L
锁定用户的密码。这会在用户加密的密码之前放置一个“!”,可以快速禁用密码。您可以和 -p 或 -U 配合使用此选项。
注意:如果希望锁定账户(不仅仅是通过密码访问),您也需要设置 EXPIRE_DATE 为 1。
-U
解锁用户的密码。这将移除加密的密码之前的“!”。您可以将此选项和 -p 或 -L 配合使用。
注意:如果您希望解锁账户(不只是使用密码访问),您也应该设置 EXPIRE_DATE (例如设置为 99999,或者 /etc/default/useradd 中的 EXPIRE 值)
例:为用户mysql_user 增加 mysql1组
usermod -aG mysql1 mysql_user
修改 mysql_user id 为 1003 并且增加组mysql1
usermod -aG mysql1 -u 1003 mysql_user
3.删除用户
userdel
-f 此选项强制删除用户账户,甚至用户仍然在登录状态。它也强制userdel删除用户的主目录和邮箱,即使其它用户也使用同一个主目录或邮箱不属于指定的用户。如果/etc/login.defs 中的 USERGROUPS_ENAB 定义为 yes,并且如果有一个和用户同名的组,也会删除此组,即使它仍然是别的用户的主组。
-r
用户主目录中的文件将随用户主目录和用户邮箱一起删除。在其它文件系统中的文件必须手动搜索并删除。
例:删除用户mysql_user 并删除根目录
userdel -r mysql_user
4.查看用户
/etc/passwd 用户账户信息。
/etc/shadow 安全用户账户信息。
/etc/group 组账户信息。
/etc/gshadow 安全组账户信息。
/etc/default/useradd 账户创建的默认值。
/etc/skel/ 包含默认文件的目录。
/etc/login.defs Shadow 密码套件配置。
5.给用户设置密码
passwd
例 passwd
Linux 组管理
1.创建组
groupadd
-f
如果指定的组已经存在,此选项将导致命令以成功状态退出。与-g一起使用时,指定的GID已经 存在时,选择另一个(唯一的)GID(即-g关闭)。
-g
组ID的数值。除非使用-o选项,否则此值必须唯一。该值必须为非负。默认值是使用最小ID值大于或等于GID_MIN且大于其他组。
-o
加密了的密码,就像 crypt(3) 的返回值。默认为禁用密码。
-r
创建一个系统组。
例:
groupadd -g 1103 mysql2
2.修改组
groupmod
3.删除组
groupdel
删除组前先移除用户
4.查看组
/etc/group 组账户信息。
/etc/gshadow 安全组账户信息。
/etc/login.defs Shadow 密码套件配置
5.为组添加删除用户
gpasswd
-a
向名为 group 的组中添加用户 user。
-d
从名为 group 的组中移除用户 user。
-A
设置有管理权限的用户列表。
-M
设置组成员列表。
Linux 权限管理
1.查看文件权限
ls -l
1.创建用户
useradd
-m
如果不存在,则创建用户主目录。骨架目录中的文件和目录(可以使用 -k 选项指定),将会复制到主目录。默认上,如果没有指定此选项并且 CREATE_HOME没有启用,不会创建主目录。
-g
用户初始登陆组的组名或号码。组名必须已经存在。组号码必须指代已经存在的组。
如果没有指定, useradd 的行为将依赖于 /etc/login.defs 文件中的 USERGROUPS_ENAB 参数。如果此参数设置为了 yes (或者在命令行上指定了
-U/--user-group),将会为用户创建一个组,组名和登录名相同。如果选项设置为了 no (或者在命令行上指定了 -N/--no-user-group),useradd 会把新用户的主组设置为
/etc/default/useradd 中 GROUP 变量指定的值,再或者默认是 100。
-G
用户还属于的附加组列表。每个组都用逗号隔开,没有中间的空格。这里的组受到了 -g 选项给定的组同样的限制。默认上,用户只属于初始组。
-u
用户 ID 的数字值。此值必须为唯一的,除非使用了 -o 选项。此值必须非负,默认使用大于等于 UID_MIN,且大于任何其他用户 ID 最小值。
请参考 -r 选项和 UID_MAX 的描述。
-o
允许使用重复的 UID 创建用户账户。
此选项只有和 -u 选项组合使用才有效。
-p
加密了的密码,就像 crypt(3) 的返回值。默认为禁用密码。
注意:不推荐使用这个选项,因为密码(或加密过的密码)会被用户通过列出这个过程而看到。
您应该确保密码符合系统的密码政策。
例:创建一个mysql_user 用户 指定 mysql组,并且创建根目录 并且指定用户id为1001
useradd -m -g mysql -u 1001 mysql_user
2.修改用户
usermod
-a
将用户添加到附加组。只能和 -G 选项一起使用。
-e
用户账户将被禁用的日期。日期以 YYYY-MM-DD 格式指定。
-g
用户的新初始登录组的组名或数字代号。此组必须存在。
用户主目录中,属于原来的主组的文件将转交新组所有。
主目录之外的文件所属的组必须手动修改。
-G
用户还属于的附加组列表。组之间使用逗号分隔,没有空格。这些组需要遵守和 -g 选项中给的组同样的限制。
如果用户当前是一个组的成员,而这个组没有列在这里,用户将被从那个组里便删除。这个行为可以通过 -a 选项修改,这使用户追加到给出的附加组列表中。
-u
用户 ID 的新数值。
这个值必须是唯一的,除非使用了 -o 选项,必须是非负值。
用户的邮箱,用户主目录中属于此用户的文件的属主 ID 也将自动更改。
用户主目录之外文件所有权必须手动修复。
-L
锁定用户的密码。这会在用户加密的密码之前放置一个“!”,可以快速禁用密码。您可以和 -p 或 -U 配合使用此选项。
注意:如果希望锁定账户(不仅仅是通过密码访问),您也需要设置 EXPIRE_DATE 为 1。
-U
解锁用户的密码。这将移除加密的密码之前的“!”。您可以将此选项和 -p 或 -L 配合使用。
注意:如果您希望解锁账户(不只是使用密码访问),您也应该设置 EXPIRE_DATE (例如设置为 99999,或者 /etc/default/useradd 中的 EXPIRE 值)
例:为用户mysql_user 增加 mysql1组
usermod -aG mysql1 mysql_user
修改 mysql_user id 为 1003 并且增加组mysql1
usermod -aG mysql1 -u 1003 mysql_user
3.删除用户
userdel
-f 此选项强制删除用户账户,甚至用户仍然在登录状态。它也强制userdel删除用户的主目录和邮箱,即使其它用户也使用同一个主目录或邮箱不属于指定的用户。如果/etc/login.defs 中的 USERGROUPS_ENAB 定义为 yes,并且如果有一个和用户同名的组,也会删除此组,即使它仍然是别的用户的主组。
-r
用户主目录中的文件将随用户主目录和用户邮箱一起删除。在其它文件系统中的文件必须手动搜索并删除。
例:删除用户mysql_user 并删除根目录
userdel -r mysql_user
4.查看用户
/etc/passwd 用户账户信息。
/etc/shadow 安全用户账户信息。
/etc/group 组账户信息。
/etc/gshadow 安全组账户信息。
/etc/default/useradd 账户创建的默认值。
/etc/skel/ 包含默认文件的目录。
/etc/login.defs Shadow 密码套件配置。
5.给用户设置密码
passwd
例 passwd
Linux 组管理
1.创建组
groupadd
-f
如果指定的组已经存在,此选项将导致命令以成功状态退出。与-g一起使用时,指定的GID已经 存在时,选择另一个(唯一的)GID(即-g关闭)。
-g
组ID的数值。除非使用-o选项,否则此值必须唯一。该值必须为非负。默认值是使用最小ID值大于或等于GID_MIN且大于其他组。
-o
加密了的密码,就像 crypt(3) 的返回值。默认为禁用密码。
-r
创建一个系统组。
例:
groupadd -g 1103 mysql2
2.修改组
groupmod
3.删除组
groupdel
删除组前先移除用户
4.查看组
/etc/group 组账户信息。
/etc/gshadow 安全组账户信息。
/etc/login.defs Shadow 密码套件配置
5.为组添加删除用户
gpasswd
-a
向名为 group 的组中添加用户 user。
-d
从名为 group 的组中移除用户 user。
-A
设置有管理权限的用户列表。
-M
设置组成员列表。
Linux 权限管理
1.查看文件权限
ls -l
drwxr-xr-x. 3 root root 19 10月 16 16:08 data
2.文件权限解读
drwxr-xr-x

以用户权限为例
rwx 对应值为 111
只读权限 100 =4
只写权限 010 =2
只执行权限 001 =1
可读可写权限 011 =6
可读可执行权限 101 =5
3.修改文件权限
chown
修改文件用户所有权
chgrp
修改文件组所有权
chmod
修改文件读写执行权限
其他的都是命令了 直接用man查询文档即可
努力努力学习
浙公网安备 33010602011771号