用户及权限管理

新建用户用到的相关文件
/etc/default/useradd

Image 001.png

/etc/login.defs

Image 002.png

/etc/skel/*

Image 003.png

批量创建用户
1.创建用户列表user.txt(文件格式同/etc/passwd)

Image 004.png

2.newusers user.txt

Image 005.png

3.创建密码文件passwd.txt(格式  用户名:密码)

Image 006.png

4.cat passwd.txt | chpasswd
批量创建用户时有家目录(但家目录中无文件,需要手动添加),无邮箱(有邮件时自动生成邮箱)
将/etc/skel/中的文件(均为隐藏文件)复制到家目录中:
(1)在/etc/skel/下使用cp `ls -A` | /home/username
(2)cp /etc/skel/.[^.]* /home/username
(3)cp /etc/skel/. /home/username

usermod [OPTION] login
-u UID: 新UID
-g [GID|GROUP]: 新主组
-G GROUP1 [,GROUP2,…]:新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使用-a选项;
-s SHELL:新的默认SHELL;
-c 'COMMENT':新的注释信息;
-d HOME: 新家目录不会自动创建,原家目录中的文件不会同时移动至新的家目录;若要创建新家目录并移动原家目录数据,同时使用-m选项;
-l login_name: 新的名字;
-L: lock指定用户,在/etc/shadow 密码栏的增加!;
-U: unlock指定用户,将/etc/shadow 密码栏的!拿掉;
-e YYYY-MM-DD: 指明用户账号过期日期;
-f INACTIVE: 设定非活动期限;

Image 003.pngImage 003.png

userdel [OPTION]… login
-r: 删除用户家目录及邮箱(如若存在)

id [OPTION]… [USER]
-u: UID
-g: GID
-G: Groups
-n: Name(默认只显示ID号码,与-n连用可显示名称)

Image 004.png

su[options…] [-] [user [args…]]
切换用户的方式:
su UserName:非登录式切换,即不会读取目标用户的配置文件,不改变当前工作目录
su – UserName:登录式切换,会读取目标用户的配置文件,切换至家目录,完全切换
su -l UserName相当于su – UserName
root su至其他用户无须密码;非root用户切换时需要密码
su [-] UserName -c 'COMMAND' :撤换至指定用户身份执行命令,命令执行结束后即退出

Image 005.png

passwd [OPTIONS] UserName: 修改指定用户的密码,仅root用户权限:
passwd: 普通用户仅能修改自己的密码;
常用选项:
-l:锁定指定用户
-u:解锁指定用户
-e:强制用户下次登录修改密码
-n mindays: 指定最短使用期限
-x maxdays:最大使用期限
-w warndays:提前多少天开始警告
-inactivedays:非活动期限;
–stdin:从标准输入接收用户密码;
echo "PASSWORD" | passwd–stdinUSERNAME
echo username:passwd | chpasswd
Image 006.pngImage 006.png

chage [OPTION]… LOGIN
-d:修改用户最近一次修改密码的日期
-E:修改账户的过期日期
-I:密码禁用期
-m:密码的最小使用期限
-M:密码的最大使用期限
-W:密码的警告时间
–l:显示密码策略
-e:下一次登录强制重设密码

Image 007.png

Image 007.pngchfn指定个人信息,可用finger查看

Image 008.png

chsh -s shell :更改登录shell类型

groupadd [OPTION]… groupname创建用户组
-g GID: 指明GID号;
-r:创建系统组;
CentOS 6: GID<500
CentOS 7: GID<1000
Image 009.png
groupmod [OPTION]… groupname 组属性修改
-n groupname:新组名
-g GID:新的GID;

groupdel groupname 删除用户组
当有用户将该用户组作为主组时无法删除该用户组,必须先删除用户

gpasswd [OPTION] GROUP 设置组密码
-a user: 将user添加至指定组中;
-d user: 从指定组中移除用户user
-A user1,user2,…: 设置有管理权限的用户列表

Image 010.png

newgrp groupname 临时切换主组;
启用一个新bash切换主组,可用echo $$查看当前bash的PID
如果用户本不属于此组,则需要组密码

Image 011.png

groupmems [options] [action]
options:
-g:更改为指定组(只有root)
-a:指定用户加入组
-d:从组中删除用户
-p:从组中清除所有成员
-l:显示组成员列表

Image 012.png

groups [OPTION] [USERNAME]… 查看用户所属组列表
root用户及普通用户均能查看自己或其他用户的所在组

chown[OPTION]… [OWNER][:[GROUP]] FILE… 设置文件的所有者和所有组
选项:
-R: 递归修改
–reference=FILE1 FILE2… 以file1做参考文件修改file2的属主属组
OWNER  只修改属主
OWNER:GROUP  同时修改属主属组
:GROUP  只修改属主
命令中的冒号可用.替换;

Image 013.pngImage 014.png

 
chgrp[OPTION]… GROUP FILE… 修改文件的属组
-R 递归
–reference=FILE1 FILE2… 以file1做参考文件修改file2的属组

文件的权限主要针对三类对象进行定义:
owner: 属主, u
group: 属组, g
other: 其他, o
每个文件针对每类访问者都定义了三种权限:
r: Readable
w: Writable
x: eXcutable
文件:
r: 可使用文件查看类工具获取其内容
w: 可修改其内容
x: 可以把此文件提请内核启动为一个进程
目录:
r: 可以使用ls查看此目录中文件列表
w: 可在此目录中创建文件,也可删除此目录中的文件
x: 可以使用ls -l查看此目录中文件列表,可以cd进入此目录
X:只给目录x权限,不给文件x权限

文件权限(rwx|X)
文件权限操作命令
chmod
  — 000 0
–x 001 1
-w- 010 2
-wx 011 3
r– 100 4
r-x 101 5
rw- 110 6
rwx 111 7
例如:
640: rw-r—–
rwxr-xr-x: 755

chmod[OPTION]… OCTAL-MODE FILE…
chmod[OPTION]… MODE[,MODE]… FILE…
-R: 递归修改权限
–reference=RFILE FILE… 以file1做参考文件修改file2的权限
MODE:
修改一类用户的所有权限:
u= g= o= ug= a= u=,g=
修改一类用户某位或某些位权限
u+ u- g+ g- o+ o- a+ a-
例如
chgrp sales testfile
chown root:admins testfile
chmod u+wx,g-r,o=rx file
chmod -R g+rwX /testdir
chmod 600 file
chown mage testfile

umask值可以用来保留在创建文件权限
新建FILE权限: 666 -umask
如果所得结果某位存在执行(奇数)权限,则将其权限+1
新建DIR权限: 777 -umask
普通用户的umask是002
root用户的umask是022
umask: 查看
umask #: 设定(umask 002)
umask –S 模式方式显示
umask –p 输出可被调用
全局设置:/etc/bashrc用户设置:~/.bashrc

Image 015.png

SUID, SGID, Sticky
三种常用权限:r, w, x
安全上下文
前提:进程有属主和属组;文件有属主和属组
(1) 任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限
(2) 启动为进程之后,其进程的属主为发起者;进程的属组为发起者所属的组
(3) 进程访问文件时的权限,取决于进程的发起者
(a) 进程的发起者,同文件的属主:则应用文件属主权限
(b) 进程的发起者,属于文件属组;则应用文件属组权限
(c) 应用文件“其它”权限

一、SUID
任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限
启动为进程之后,其进程的属主为原程序文件的属主
SUID只对二进制可执行程序有效
SUID设置在目录上无意义
权限设定:
chmod u+s FILE…
chmod u-s FILE…

二、SGID
1.任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限
  启动为进程之后,其进程的属主为原程序文件的属组
权限设定:
chmod g+s FILE…
chmod g-s FILE…
2.默认情况下,用户创建文件时,其属组为此用户所属的主组
  一旦某目录被设定了SGID,则对此目录有写权限的用户在此目录中创建的文件所属的组为此目录的属组
通常用于创建一个协作目录
权限设定:
chmod g+s DIR…
chmod g-s DIR…

三、sticky
具有写权限的目录通常用户可以删除该目录中的任何文件,无论该文件的权限或拥有权
在目录设置Sticky 位,只有文件的所有者或root可以删除该文件
sticky 设置在文件上无意义
权限设定:
chmod o+t DIR…
chmod o-t DIR…
例如:
ls -ld /tmp
drwxrwxrwt 12 root root 4096 Nov 2 15:44 /tmp

 
000 0
001 1
010 2
011 3
100 4  
101 5
110 6
111 7

SUID: user,占据属主的执行权限位
 s: 属主拥有x权限
 S:属主没有x权限
SGID: group,占据属组的执行权限位
 s: group拥有x权限
 S:group没有x权限
Sticky: other,占据other的执行权限位
 t: other拥有x权限
 T:other没有x权限

chattr +i 不能删除,改名,更改
chattr +a 只能增加
lsattr 显示特定属性

ACL:Access Control List,实现灵活的权限管理
除了文件的所有者,所属组和其它人,可以对更多的用户设置权限
CentOS7.0默认创建的xfs和ext4文件系统有ACL功能。
CentOS7.X之前版本,默认手工创建的ext4文件系统无ACL功能。需手动增加:
tune2fs –o acl/dev/sdb1
mount –o acl/dev/sdb1 /mnt

ACL生效顺序:所有者,自定义用户,自定义组,其他人
为多用户或者组的文件和目录赋予访问权限rwx

getfacl file|directory

setfacl [-bkEd] [{-m|-x}acl参数] filename
-m:设置参数
-x:删除指定参数
-b: 删除所有参数
-k:删除默认参数
-d:设置默认参数
-R:递归设置

ACL文件上的group权限是mask 值(自定义用户,自定义组,拥有组的最大权限),而非传统的组权限
getfacl可看到特殊权限:flags
默认ACL权限给了x,文件也不会继承x权限。
base ACL 不能删除
getfacl file1 | setfacl –set-file=-file2 复制file1的acl权限给file2
mask只影响除所有者和other的之外的人和组的最大权限
mask需要与用户的权限进行逻辑与运算后,才能变成有限的权限(Effective Permission)
用户或组的设置必须存在于mask权限设定范围内才会生效。
setfacl -m mask::rxfile
–set选项会把原有的ACL项都删除,用新的替代,需要注意的是一定要包含UGO的设置,不能象-m一样只是添加ACL就可以.如:
setfacl –set u::rw,u:wang:rw,g::r,o::-file1
备份和恢复ACL
主要的文件操作命令cp和mv都支持ACL,只是cp命令需要加上-p 参数。但是tar等常见的备份工具是不会保留目录和文件的ACL信息
getfacl -R /tmp/dir1 > acl.txt
setfacl -R -b /tmp/dir1
setfacl -R –set-file=acl.txt /tmp/dir1
getfacl -R /tmp/dir1

问题:
在/data/testdir里创建的新文件自动属于g1组,组g2的成员如:alice能对这些新文件有读写权限,组g3的成员如:tom只能对新文件有读权限,其它用户(不属于g1,g2,g3)不能访问这个文件夹。

chown :g1 /date/testdir

chmod  o= /date/testdir

setfacl -m d:g:g2:rwx /date/testdir

setfacl -m g:g3:rx /date/testdir

当用户xiaoming对/testdir 目录无执行权限时,意味着无法做哪些操作?

无法进入该目录,即使对内部的文件有读权限也无法查看文件内容

当用户xiaoqiang对/testdir 目录无读权限时,意味着无法做哪些操作?

无法改变目录结构,即新增,删除,重命名等

当用户wangcai 对/testdir 目录无写权限时,该目录下的只读文件file1是否可修改和删除?

无法修改与删除

复制/etc/fstab文件到/var/tmp下,设置文件所有者为wangcai读写权限,所属组为sysadmins组有读写权限,其他人无权限

chown wangcai:sysadmins /var/tmp/fstab

chmod 660

误删除了用户wangcai的家目录,请重建并恢复该用户家目录及相应的权限属性

cp -r /etc/skel /home/wangcai

chown wangcai:wangcai /hone/wangcai

原创文章,作者:anonymous,如若转载,请注明出处:http://www.178linux.com/31962