Linux-用户及权限

1. 用户组

RHEL 7/CentOS 7系统中的用户组有以下3类:
超级用户,UID 0:系统的超级用户。
系统用户,UID 1-999:系统中系统服务由不一样用户运行,更加安全,默认被限制不能登陆系统。
普通用户,UID1000~60000:即管理员建立的用于平常工做而不能管理系统的普通用户。shell

1.1 groupadd :添加用户组
通常建立用户的时候会自动建立与用户名相同的基本组,而groupadd命令一般单首创建用户组,而且做为部分用户的附加组,便于对这部分用户的权限作集中管理。centos

# 用法
groupadd [选项] group

# 选项
-g GID:指定GID;默认是上一个组的GID+1;
-r: 建立系统组;

1.2 groupmod:修改组属性安全

# 用法
roupmod [选项] GROUP

# 选项
-g GID:修改GID;
-n new_name:修改组名;

1.3 groupdel:删除用户组app

# 用法
groupdel [选项] GROUP

1.4 gpasswd:组(密码/用户)操做ui

# 用法
gpasswd [选项] 组

# 选项
-a, --add USER                向组 GROUP 中添加用户 USER
-d, --delete USER             从组 GROUP 中添加或删除用户
-r, --delete-password         remove the GROUP's password

1.5 newgrp:(临时)登陆到指定的组加密

# 用法
newgrp [-] [group]
-: 会模拟用户从新登陆以实现从新初始化其工做环境;

2. 用户

2.1 useradd:建立用户code

# 用法
useradd [选项] 用户名 (建立用户,默认设定配置文件/etc/login.defs)
useradd -D:显示建立用户的默认配置;
useradd -D 选项: 修改默认选项的值;(结果保存于/etc/default/useradd文件中)

# 选项(更多选项查看帮助)
-u, --uid UID:指定UID;
-g, --gid GROUP:指定基本组ID,此组得事先存在;
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:指明用户所属的附加组,多个组之间用逗号分隔;
-c, --comment COMMENT:指明注释信息;
-d, --home HOME_DIR:以指定的路径为用户的家目录;经过复制/etc/skel此目录并重命名实现;指定的家目录路径若是事先存在,则不会为用户复制环境配置文件;
-s, --shell SHELL:指定用户的默认shell,可用的全部shell列表存储在/etc/shells文件中;
-r, --system:建立系统用户;

2.2 usermod:修改用户属性orm

# 用法
usermod [选项] 登陆

# 选项
-u, --uid UID:修改用户的ID为此处指定的新UID;
-g, --gid GROUP:修改用户所属的基本组;
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:修改用户所属的附加组;原来的附加组会被覆盖;
-a, --append:与-G一同使用,用于为用户追加新的附加组;
-c, --comment COMMENT:修改注释信息;
-d, --home HOME_DIR:修改用户的家目录;用户原有的文件不会被转移至新位置;
-m, --move-home:只能与-d选项一同使用,用于将原来的家目录移动为新的家目录;
-l, --login NEW_LOGIN:修改用户名;
-s, --shell SHELL:修改用户的默认shell;
-L, --lock:锁定用户密码;即在用户原来的密码字符串以前添加一个"!";
-U, --unlock:解锁用户的密码;

2.3 user del:删除用户继承

# 用法
userdel [选项] 用户名

# 选项
-r:删除用户时一并删除其家目录;

2.4 passwd:设置密码属性递归

# 用法
passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]
(1) passwd:修改用户本身的密码;
(2) passwd USERNAME:修改指定用户的密码,但仅root有此权限;

# 选项
-l, -u:锁定和解锁用户;
-d:清除用户密码串;
-e DATE: 过时期限,日期;
-i DAYS:非活动期限;
-n DAYS:密码的最短使用期限;
-x DAYS:密码的最长使用期限;
-w DAYS:警告期限;
--stdin:从标准输入读取密码,如 echo "PASSWORD" | passwd --stdin USERNAME

2.5 su:switch user

# 用法
su [options...] [-] [user [args...]]

# 说明
登陆式切换:会经过读取目标用户的配置文件来从新初始化
  su - USERNAME
  su -l USERNAME
非登陆式切换:不会读取目标用户的配置文件进行初始化
  su USERNAME

注意:管理员可无密码切换至其它任何用户;

-c 'COMMAND':仅以指定用户的身份运行此处指定的命令;

3. 相关文件

3.1 /etc/passwd:用户信息

# 格式以下
name:password:UID:GID:GECOS:directory:shell
# name: 用户名
# password:能够是加密的密码,也但是占位符x;
# UID:用户ID;
# GID:用户所属的主组的ID;
# GECOS:注释信息;
# directory:用户的家目录;
# shell:用户的默认shell,登陆时默认shell程序;

3.2 /etc/shadow:用户密码

# 格式以下
用户名:加密的密码:最近一次修改密码的时间:最短使用期限:最长使用期限:警告期段:过时期限:保留字段

3.3 /etc/group:用户组信息

group_name:password:GID:user_list
user_list:该组的用户成员;以此组为附加组的用户的用户列表;

4. 用户权限

4.1 chmod
注意:用户仅能修改属主为本身的那些文件的权限;

# 用法
chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
chmod [OPTION]... --reference=RFILE FILE...

# 选项
-R, --recursive change files and directories recursively(递归)

# 示例&说明
chmod 755 FILE
chmod ugo+rwx FILE
chmod a-w FILE
a:全部,u:属主,g:属组,o:其它;
r:读,w:写,x:执行
chmod --reference=RFILE FILE(将FILE的权限修改成与RFILE一致)

4.2 chown:修改文件的属主、属组(修改属组至关于chgrp)
注意:仅管理员可修改文件的属主和属组

# 用法
chown [OPTION]... [OWNER][:[GROUP]] FILE...
chown [OPTION]... --reference=RFILE FILE...

# 选项
-R, --recursive operate on files and directories recursively(递归)

# 示例&说明
chown user1:group1 FILE (将FILE的属主设为user1,属组设为group1)
chgrp --reference=RFILE FILE(将FILE的属主、属组修改成与RFILE一致)

5. 特殊权限

5.1 SUID

默认状况下,进程其以发起者的身份运行(前提:发起者具备该程序的执行权限);
SUID可使没有该程序的执行权限的用户,临时以该程序属主的身份运行该程序。

  • 功能:
    让执行者临时拥有属主的权限(仅对拥有执行权限的二进制程序有效)

  • 用法:
chmod u+|-s FILE...     
# 展现位置(属主的执行权限位):
# 若是属主本来有执行权限,显示为小写s; 
# 不然,显示为大写S;
  • 示例:
[root@VM_0_171_centos ~]# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 6月  10 2014 /usr/bin/passwd

5.2 SGID

  • 功能:
    1)让执行者临时拥有属主的权限(仅对拥有执行权限的二进制程序有效)
    2)在该目录中建立的文件自动继承此目录的用户组(只能够对目录设置)

  • 用法:
chmod g+|-s FILE...     
# 展现位置(属组的执行权限位):
# 若是属组本来有执行权限,显示为小写s; 
# 不然,显示为大写S;
  • 示例:
[root@VM_0_171_centos ~]# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 6月  10 2014 /usr/bin/passwd

5.3 SBIT(Sticky BIT)

  • 功用:
    对于属组或全局可写的目录,组内的全部用户或系统上的全部用户对在此目录中都能建立新文件或删除全部的已有文件;若是为此类目录设置Sticky BIT权限,则每一个用户能建立新文件,且只能删除本身的文件;

  • 用法:
chmod o+|-t FILE...         
# 展现位置(其它用户的执行权限位)
# 若是其它用户本来有执行权限,显示为小写t; 
# 不然,显示为大写T;
  • 示例:
# 系统上的/tmp和/var/tmp目录默认均有Sticky BIT权限;
[root@VM_0_171_centos ~]# ls -ld /tmp /var/tmp
drwxrwxrwt. 7 root root 4096 5月   6 14:58 /tmp
drwxrwxrwt. 2 root root 4096 4月   4 14:59 /var/tmp

补充:管理特殊权限的另外一方式:

SUID SGID SBIT 左右交叉组合 通常权限
0 0 0 ... 0
0 0 1 ... 1
0 1 0 ... 2
0 1 1 ... 3
1 0 0 ... 4
1 0 1 ... 5
1 1 0 ... 6
1 1 1 ... 7

基于八进制方式赋权时,可于默认的三位八进制数字左侧再加一位八进制数字;
例如:chmod 1777

6. 隐藏权限

在Linux系统中除了能对文件设置通常权限和特殊权限外还有一种叫作隐藏权限的功能

6.1 chattr:设置文件的隐藏权限

用法

chattr [-RVf] [-+=aAcCdDeijsStTu] [-v version] files...

OPTIONS

-R  递归设置目录中的文件权限
-V  详尽打印输出信息
-f  抑制多数错误信息
-v version  设置文件版本

参数说明(来自man帮助文档):

The letters 'aAcCdDeijsStTu' select the new attributes for the files:
append only (a), no atime updates (A), compressed (c), no copy on write(C), no dump (d), synchronous directory updates (D), extent format (e),immutable (i), data journalling (j), secure deletion (s), synchronous updates (S), no tail-merging (t), top of directory hierarchy (T), and undeletable (u).

示例

[root@VM_0_171_centos tmp]# chattr -V +i acl
chattr 1.42.9 (28-Dec-2013)
acl的标志被设为 ----i-----------
[root@VM_0_171_centos tmp]#

6.2 lsattr:查看文件的隐藏权限

用法

lsattr [ -RVadv ] [ files...  ]

OPTIONS

-R     递归
-V     显示lsattr程序版本号
-a     List all files in directories, including files that  start  with '.'
-d     查询目录自己
-v     显示文件版本号

示例

[root@VM_0_171_centos tmp]# lsattr -v
  123 suS-iadAcj-t---- ./acl
687539122 ---------------- ./attr
7. 文件访问控制列表facl

指定的特定用户或用户组对某个文件的操做权限(在原来的u、g、o以外,另外一层对用户或用户组的赋权机制)

7.1 setfacl
用法:

# 赋权给用户
setfacl  -m  u:USERNAME:MODE  FILE...
# 赋权给用户组
setfacl  -m  g:GROUPNAME:MODE FILE...
# 撤销赋权
setfacl  -x u:USERNAME  FILE...
setfacl  -x  g:GROUPNAME  FILE...

7.2 getfacl
用法:

getfacl FILE...

示例:

# 对acl文件为gentoo用户赋予rwx选项
[root@VM_0_171_centos tmp]# setfacl -m u:gentoo:rwx acl
# 查询文件的访问控制列表
[root@VM_0_171_centos tmp]# getfacl acl
# file: acl
# owner: root
# group: root
user::rw-
user:gentoo:rwx
group::r--
mask::rwx
other::r--
# 撤销acl文件对gentoo用户的赋权
[root@VM_0_171_centos tmp]# setfacl -x u:gentoo acl
# 再次查询访问控制列表
[root@VM_0_171_centos tmp]# getfacl acl
# file: acl
# owner: root
# group: root
user::rw-
group::r--
mask::r--
other::r--
# 设置访问控制列表后,文件的权限位后会增长一个+
[root@VM_0_171_centos tmp]# ls -l acl
-rw-r--r--+ 1 root root 35 5月   6 16:31 acl
相关文章
相关标签/搜索