每次都去查,总是记不住,最终还是在这里做个笔记吧。
用户管理
查看用户
id命令
$ id dean
uid=1000(dean) gid=1000(dean) groups=1000(dean),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),121(lpadmin),132(sambashare)
/etc/passwd文件
cat /etc/passwd 可以查看所有用户的信息,比如刚才创建的gerrit2用户
gerrit2:x:1002:1002:gerrit2,101,186525810**,186525810**:/home/gerrit2:/bin/bash
基本格式:
用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell,中间用:隔开
注意:
口令 这里用x 表示
真正的密码放在了/etc/shadow文件,这是shadow文件里面gerrit2的密码:
gerrit2:$6$v7uh0ctV$borVraMjOPhMjYV8YCVcmwylKb84djRm5yVWNbKYHxrcFLLqlSsx.hbcW.Ouk2A05CyChx7zZlRV3wZMuH0hE0:15480:0:99999:7:::
已经被加密了,所以比较安全
添加用户
useradd和adduser都能添加用户,区别是:
1.adduser会提示设置密码,而useradd不会。
2.adduser会创建用户目录,比如/home/freebird freebird是用户,useradd不会
3.adduser会创建用户组,默认和用户名相同
4.adduser会询问全名,房间号码,电话号码等用户信息,useradd不会
下面是用adduser创建的例子:
root@ubuntu1204-dell:~# adduser gerrit2
Adding user `gerrit2' ...
Adding new group `gerrit2' (1002) ...
Adding new user `gerrit2' (1002) with group `gerrit2' ...
Creating home directory `/home/gerrit2' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for gerrit2
Enter the new value, or press ENTER for the default
Full Name []: gerrit2
Room Number []: 101
Work Phone []: 186525810**
Home Phone []: 186525810**
Other []:
Is the information correct? [Y/n]
所以,adduser更加方便,优先使用。
删除用户
userdel -r gerrit
该命令将gerrit用户以及用户目录都删除了。
修改uid/gid
usermod -u 555 ftp_rw && groupmod -g 555 ftp_rw
修改root密码
sudo passwd root
然后按照提示输入两次密码
如果之前root没有密码,一旦通过·这种方式设置了密码,就可以用root登录系统了。
禁用root
sudo passwd -l root
创建系统帐号
sudo adduser --home /home/glassfish --system --shell /bin/bash glassfish
上面这个命令使用了--system参数。这个参数意味着创建系统帐号,也就是不用于交互登录的帐号。
默认情况下,adduser此时不会创建/home/glassfish目录,因此如果需要该目录,就要用参数显式指出 --home /home/glassfish
同样,默认情况下系统帐号使用/bin/false作为shell,我这里通过--shell /bin/bash显式指出应该是/bin/bash
也不会自动创建与用户名相同的用户组,需要之后执行groupadd命令单独创建。
用户组管理
查看用户组
cat /etc/group
将用户添加到某个组
adduser your_user groupname
还是adduser,很方便啊。结果是组文件中改组出现用户名:
vboxusers:x:126:chenshu
添加到root组用命令:
adduser jenkins root
从某组中删除用户
deluser <username> <groupname>
添加用户组
groupadd your_group
删除用户组
delgroup your_group
不在sudoers中
比如下面的redmine用户用sudo执行命令时遇到问题:
redmine@bi:~/redmine-2.5.1$ sudo bundle install --without development test
[sudo] password for redmine:
redmine is not in the sudoers file. This incident will be reported.
解决方法是在root用户下用visudo编辑文件,加入一行:
redmine ALL=(ALL) ALL
文件权限管理
更改文件拥有者
chown 意思是change owner
用法是
chown username:groupname filepath
或者
chown -R username:groupname folderpath
修改文件权限
用chmod命令
以某用户身份执行命令
比如在gitlab安装时经常用到的命令:
sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production
这里 sudo -u git -H 就是用git账号的身份,在git的Home目录下/home/git下运行 'exec ...' 命令
还有一种
su - jenkins
这样,将从root切换到jenkins帐号,并且进入了jenkins用户的home目录/var/lib/jenkins
如果无法装换,应该是/etc/passwd文件中的bin/bash被设置成了bin/false,改过啦即可。