可以使用
pwunconv
这个命令使得/etc/shadow不再保存密码信息, 密码直接保存至/etc/passwd中 。另外通过pwconv
直接转换回来,将密码保存至/etc/shadow中
grpconv/prgunconv
这两个命令主要用于组配置文件,将组密码在/etc/group以及/etc/gshadow文件保存位置转换
root:x:0:0:root:/root:/bin/bash
chfn
修改用户的描述信息 同时可以用finger
查看用户的描述信息
可以通过chsh
修改用户shell类型chsh -s /bin/sh wang
或者chmod -s /bin/bash wang
root:$6$0hxZM8hjuVAGtlJL$D95CSZawl8hRfw1niUFo5r4sIolskNYwjk6EcnszLULa0dkFS5kdKLrRcbrMrOs.GzckC6uZ/eHIijAzvWGfD/::0:99999:7:::
nfsnobody:!!:17785::::::
authconfig --passalgo=sha512 --update 用这种方式更改密码的加密算法,在文件/etc/login.defs文件中同样定义了对应的加密模式
xiong:x:1000:root
xiong:!::root
vipw命令:直接编辑passwd文件,如果修改的文件格式不对,会有提醒。
vigr :vim group
直接使用vi修改了/etc/passwd 以及/etc/group可以用pwck 以及grpck检查文件中的语法格式是否正确
skel是skeleton的缩写,意为骨骼、框架。故此目录的作用是在建立新用户时,用于初始化用户根目录。1
sudo useradd -d /home/chen -m -k /etc/my_skel chen
SKEL=/etc/my_skel
。login.defs是设置用户帐号限制的文件,在这里我们可配置密码的最大过期天数,密码的最大长度约束等内容。该文件里的配置对root用户无效。如果/etc/shadow文件里有相同的选项,则以/etc/shadow里的设置为准,也就是说/etc/shadow的配置优先级高于/etc/login.defs
[root@localhost ~]# cat /etc/login.defs
#
# Please note that the parameters in this configuration file control the
# behavior of the tools from the shadow-utils component. None of these
# tools uses the PAM mechanism, and the utilities that use PAM (such as the
# passwd command) should therefore be configured elsewhere. Refer to
# /etc/pam.d/system-auth for more information.
#
# *REQUIRED*
# Directory where mailboxes reside, _or_ name of file, relative to the
# home directory. If you _do_ define both, MAIL_DIR takes precedence.
# QMAIL_DIR is for Qmail
#
#QMAIL_DIR Maildir
#注:创建用户时,要在目录/var/spool/mail中创建一个用户mail文件;
MAIL_DIR /var/spool/mail
#MAIL_FILE .mail
# Password aging controls:
#
# PASS_MAX_DAYS Maximum number of days a password may be used.
# PASS_MIN_DAYS Minimum number of days allowed between password changes.
# PASS_MIN_LEN Minimum acceptable password length.
# PASS_WARN_AGE Number of days warning given before a password expires.
#
#密码最大有效期
PASS_MAX_DAYS 99999
#两次修改密码的最小间隔时间
PASS_MIN_DAYS 0
#密码的最小长度,对root无效
PASS_MIN_LEN 5
#密码过期前多少天开始提示
PASS_WARN_AGE 7
#
# Min/max values for automatic uid selection in useradd
#
#普通用户的UID最小值
UID_MIN 1000
#普通用户UID最大值
UID_MAX 60000
# System accounts
#新创建系统用户UID最小值
SYS_UID_MIN 201
#新创建系统用户UID最大值
SYS_UID_MAX 999
#
# Min/max values for automatic gid selection in groupadd
#普通组GID最小值
GID_MIN 1000
#普通组GID的最大值
GID_MAX 60000
# System accounts
#系统组GID的最小值
SYS_GID_MIN 201
#系统组GID的最大值
SYS_GID_MAX 999
#
# If defined, this command is run when removing a user.
# It should remove any at/cron/print jobs etc. owned by
# the user to be removed (passed as the first argument).
#
#USERDEL_CMD /usr/sbin/userdel_local
#
# If useradd should create home directories for users by default
# On RH systems, we do. This option is overridden with the -m flag on
# useradd command line.
#
#控制useradd添加用户时是否默认创建家目录,useradd -m选项会覆盖此处设置
CREATE_HOME yes
# The permission mask is initialized to this value. If not specified,
# the permission mask will be initialized to 022.
#设置创建家目录时的umask值,若不指定则默认为022
UMASK 077
# This enables userdel to remove user groups if no members exist.
# 设置此项表示当组中没有成员时自动删除该组
# 且useradd是否同时创建同用户名的主组。(该文件中并没有此项说明,来自于man useradd中-g选项的说明)
USERGROUPS_ENAB yes
# Use SHA512 to encrypt password.
#设置用户和组密码的默认加密算法
ENCRYPT_METHOD SHA512
创建用户时的默认配置。useradd -D修改的就是此文件。2
[root@localhost ~]# cat /etc/default/useradd
# useradd defaults file
GROUP=100 # 在useradd使用-N或/etc/login.defs中USERGROUPS_ENAB=no时表示创建用户时不创建同用户名的主组(primary group),
# 此时新建的用户将默认以此组为主组,网上关于该设置的很多说明都是错的,具体可看man useradd的-g选项或useradd -D的-g选项
HOME=/home # 把用户的家目录建在/home中
INACTIVE=-1 # 是否启用帐号过期设置(是帐号过期不是密码过期),-1表示不启用
EXPIRE= # 帐号过期时间,不设置表示不启用
SHELL=/bin/bash # 新建用户默认的shell类型
SKEL=/etc/skel # 指定骨架目录,前文的/etc/skel就在这里
CREATE_MAIL_SPOOL=yes # 是否创建用户mail缓冲
adduser是useradd的软链接命令
newusers
:批量创建用户 。newusers
需要的文件内容,与/etc/passwd
文件中里面的用户的基本信息和格式一致 。使用时:直接使用newusers filename
修改用户密码信息
passwd [OPTIONS] [Username]
echo "PASSWORD" | passwd --stdin UserName
Username:修改指定用户的密码,仅root用户权限
直接使用这用passwd命令,表示修改当前用户的密码
修改用户密码的时间信息
chage [OPTION] ...username
:chage -d0 tom 下次登录强制重设密码
chage -m 0 -M42 -W 14 -I 7 Tom
chage -E 2016-9-10
chpasswd
: 批量修改用户密码。在文件中需要按照username:password
的格式 。cat filename |chpasswd
chsh -s shell name
:修改用户默认shell
chfn [username]
: 修改用户描述信个人信息
finger [username]
:查看用户个人信息
su :主要用于用户切换
su [opions...] [-] [user [args...]]
su [-] UserName -c 'COMMAND'
su -l UserName
相当于su - UserName
id : 可以显示真实有效的用户ID(UID)和组ID(GID)
添加组
groupadd [option]...groupname
用于删除组
groupdel groupname
主要用于为组添加用户以及修改组中用户
组密码主要用户主要用于用户临时切换组访问文件或者运行命令,使用的命令为
newgrp [group]
查看或更改组成员
语法 :groupmems [options] [action]
groups [OPTION][USERNAME]...
:查看用户所属组列表
chown : 修改文件的属主
chown [OPTION]..[OWNER][:[GROUP]] FILE...
chgrp : 用来改变文件或目录所属的用户组
chgrp [OPTION]...GROUP FILE ...
r
读权限 : 可以打开文件、目录读取查看w
写权限 : 对文件目录可以编写更改x
执行权限 : 对文件可执行(可执行文件)、对目录可查找该目录下的内容。-
没有权限。文件
目录
对于文件和目录而言有s特别标志位, 在SUID,SGID中会讲解。
在linux中针对文件,分别对应文件属主,属组以及其他用户的权限, 每一种用户类型都用三位表示rwx
,分别表示读写执行权限。如果文件中对应权限没有,则直接用-
表示,即-wx
,--x
…。同时对应的权限可以直接当做二进制数值,并将其用十进制表示出来,rwx
= 7 ,rw-
= 6,r-x
=5…
umask命令用来设置限制新建文件权限的掩码。当新文件被创建时,其最初的权限由文件创建掩码决定。用户每次注册进入系统时,umask命令都被执行, 并自动设置掩码mode来限制新文件的权限。用户可以通过再次执行umask命令来改变默认值,新的权限将会把旧的覆盖掉。3
通过umask命令可以配置linux文件的掩码值。默认umask为022,
一般umask在**~/.bashrc中修改。
umask 与最大权限相与,可以得到文件目录权限**
文件最大权限(666):110110110
umask : 001100101
文件权限 : 110010010
umask中0表示不关心,不处理,1表示从最大权限中要去掉对应位置的权限
- 对于目录根据umask设置权限的方法:777-umask
- 对于文件 666-umask 观察结果有偶数,最终结果便是直接算出来的值,如果是奇数,最终结果加1便是权限值
umask 0022
这样u=rwx,g=rx,o=rx
在设置umask是可以直接设置成结果同样的新形式,这个结果表示文件default的权限值修改文件的权限
chmod [OPTION]... MODE[,MODE]... FILE...
chmod +X filename
:后面的权限可以用
rwx
,或者777表示
chmod +rwx file.txt //给文件中的所属主,属组,其他用户均添加`rwx`权限 与a+用法类似
chmod o+r file.txt //给文件中其他用户添加读权限
chmod u=r file.txt // 让文件属主只有读权限
chmod g=rw file.txt //让文件属组拥有读写权限
chmod 777 file.txt
chmod u=r,g=rw,o+r file.txt
SUID(Set User ID):继承所有者权限
配置SUID时,可以直接通过chmod命令配置,直接通过给属主添加s
权限
chmod u+s filename
chmod 4660 filename
文件权限中可以通过SUID,SGID,Stick位三者可以按照二进制方式组成并以十进制的方式表现出来,所以对应的4660中的4表示SUID
GUID : 与SUID一样,继承所有组的权限 。
chmod g+s filename
chmod 4660 filename
这个位主要是针对other用户设置的,设置之后other 用户中只有文件的拥有者才能删除这个目录中对应的自己的文件文件。Sticky只能作用域目录上。只对other用户有效,对属主与属组以及root用户无效
chmod o+t dirname
chmod 1777 dirname
当文件目录中,如果没有执行权限,则在权限上面会变成大写的S、T ,由于这些特殊权限需要有执行权限。此时大写表示特殊权限失效。
[root@localhost ~]# ll -d /test/
drwxrwxrwT 2 wang wang 15 Oct 11 22:14 /test/
首先说明,这个隐藏属性主要是针对ext系列的文件系统设计的,主要为了增加系统的安全性,此功能已全部或部分扩展到其他的文件系统上面了,例如XFS,ReiserFS,JFS和OCFS2。
使用chattr 为文件修改隐藏属性,
chattr [ -RVf ] [ -v version ] [ mode ] files…
常用的两个属性有a, i
chattr +i /etc/resolv.conf //此时无法修改/etc/resolv.conf文件
chattr -i /etc/resolv.conf //删除文件的隐藏权限,现在可以删除和修改文件中的内容
chattr +a /etc/tesolv.conf //此时只能追加文件内容,不能删除,不能改名
lsattr /etc/resolv.conf //显示文件的隐藏权限
----i-------- /etc/resolv.conf
扩展ACL是一种特殊权限,它是文件系统上功能,用于解决所有者、所属组和其他这三个权限位无法合理设置单个用户权限的问题。所以,扩展ACL可以针对单一使用者,单一档案或目录里的默认权限进行r,w,x的权限规范。
查看文件系统是否开启了ACL功能。4
可以直接通过使用dumpe2fs
命令查看对应文件系统中挂载时是否默认有acl功能,如果没有可以直接通过mount -o acl
,给文件系统添加ACL功能。
通过使用setfacl
以及getfacl
这两个命令修改文件的扩展的ACL。
setfacl [options] u:[用户列表]:[rwx] 目录/文件名
# 对用户设置使用u
setfacl [options] g:[组列表]:[rwx] 目录/文件名
# 对组设置使用g
u:wang:rwx
。 这样的权限内容mount -o acl /idrectory
getfacl file | directory
setfacl -m u:wang:rwx file|directory // 设置用户权限
setfacl -Rm g:sales:rwX directory // 递归设置对应目录的组用户权限
setfacl -M file.acl file|direcory // 通过文件设置对应的文件目录权限
setfacl -m g:salesgroup:rw file|directory // 设置对应的组权限
setfacl -m d:u:wang:rx directory // 设置对应目录的用户权限 前面加d 表示默认权限,即在对应目录中新建文件目录同样拥有对应的用户权限
setfacl -x u:wang file|directory // 删除对应用户的acl权限
setfacl -X file.acl directroy //通过文件删除目录的ACl权限
setfacl -b file //删除文件中所有的acl权限
setfacl -k //删除文件的默认权限
getfacl file1 | setfacl --set-file=- f2 //将file1的权限直接复制给file2
setfacl --set u:rw,u:wang:rw,g::r,o::- f2 //这个命令类似于重新覆盖原来的所有权限。
如果使用用户属于多个组,则累加权限
系统会默认从上往下读取权限, 如果是组成员则累加权限
使用getfacl可以直接查看文件的acl的值
[root@localhost app]# getfacl f1
# file: f1
# owner: root
# group: root
user::rw-
user:xiong:rw- #effective:r--
group::r--
mask::r-
other::r--
mask 这个值除了user:rw- 以及other::r–不会影响到之外其他均会受到影响,mask值决定了中间这些人的最大权限。 默认每次设置文件的acl都会重置mask为给当前设置用户的值。 可以使用-n ,表示默认不修改mask的值
有两种方法可以修改mask的值
1. chmod g=r f1
2. setfacl -m mask::r f1
3. setfacl -m m::r f1
有些工具在复制文件时会丢失acl ,备份以及还原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
setfacl --restore acl.txt
getfcal -R /tmp/dir1
在这个命令中第三条以及第四条均是回复ACl的操作,任选一条就好了, 但是–restore 这条命令在运行时,在相对路径上执行的,所以对于使用者需要在复制目录的前一个目录执行此命令
CSDN:Linux下/etc/skel框架目录的简介与使用 ↩︎
博客园-骏马金龙:第2章 细说Linux系统用户/组管理(1) ↩︎
linux命令大全:umask ↩︎
博客园-骏马金龙:第3章 Linux上文件的权限管理 ↩︎