您的位置:首页 > 其它

Ubuntu 创建、管理用户、组和git库、项目

2016-02-22 16:22 330 查看

修改主机名

sudo -e /etc/hostname

sudo -e /etc/hosts 将127.0.1.1对应的原主机名改为新的

创建组

sudo groupadd 组名

修改组

sudo groupmod -n 新组名 原组名

删除组

sudo groupdel 组名

创建用户

sudo useradd -m会自动生成主目录 -k 内容将被拷贝到生成的主目录的样本目录 -d 主目录 -g 用户组 –groups 其它组,更多组 -s /bin/bash 用户名

sudo passwd 用户名

将用户加到sudoers:

直接改配置文件不可取:sudo visudo

添加到组,可能还有其它组如adm应该添加:sudo adduser 用户名 sudo

修改用户

sudo usermod -g 用户组 –groups 其它组,更多组 -l 新用户名 -m会将用户原主目录下内容移动到新主目录下 -d 新主目录 原用户名

如果不写当前组,需要添加用户到更多组,则–groups参数需要与-a参数同时使用

删除用户

sudo userdel 用户名

rm -rf 主目录

git 准备

sudo apt-get install git

创建git用户

将需要使用库的用户的公钥(用ssh-keygen生成)id_rsa.pub内容放到git用户的.ssh/authorized_keys文件(设置为组可写)中。直接将自己的密钥加到可信列表的命令:ssh-copy-id -i 公钥文件 用户@地址

此步会导致库权限混乱,无法维护。创建其他用户,属于git用户所在组,这样该用户能管理库,又方便将其移出该组。将库放到git用户某路径下,设置为组可写。取库时,用户可用自己的用户名和绝对路径,如果将其公钥放到认证文件中,也可用git用户名和相对路径。

如果git用户不需要登录会话,可在/etc/passwd中将其默认shell改为/usr/bin/git-shell

更细致管理权限用Gitolite(Gitosis Lite);更方便管理公钥用Gitosis

建立空库

git init –bare 库名。如果在需要的目录下,则不写库名参数。这会建立与库名同名的目录,之后修改该目录权限。不需要时直接删除该目录即可。

取库

空库也能取。

git clone 用户名@地址:路径

对于空库,也可在一空目录中进行以下复杂操作:

- git init

- git remote add origin 用户名@地址:路径

提交

git push origin master

其中origin是远端名,亦可用地址;master是分支名。对空库提交时,恐怕必须加这两个。

*限制提交等权限——gitolite

没有网页管理页面,用户手动需要提交公钥给管理员。无法完成代码审阅功能。手册

sudo apt-get install gitolite然后sudo dpkg-reconfigure gitolite会有问题。

以用户名git身份运行:清空.ssh/authorized_keys

- git clone git://github.com/sitaramc/gitolite

- mkdir bin

- gitolite/install -ln

- bin/gitolite setup -pk 库管理人员的公钥文件名

- 管理人员获取刚生成的gitolite-admin库(不加repositories/路径),如果要求输入密码则以上步骤有错误。

- 将开发人员的公钥以人员名为基本名、pub为扩展名保存到这个库的keydir目录下,可建立任意子目录,只要基本文件名相同,都认为是同一用户。修改conf/gitolite.conf。提交修改,就能生效了。

- conf/gitolite.conf中相同权限库的库名可写在一行

@staff              =   dilbert alice           # groups
@projects           =   foo bar

repo @projects baz                              # repos
RW+             =   @staff                  # rules
-       master  =   ashok
RW              =   ashok
R               =   wally

option deny-rules           =   1           # options
config hooks.emailprefix    = '[%GL_REPO] ' # git-config


组前缀是@;同一组名如果写多次,是增量定义;@all是所有组。

-是不允许。RW+区别于RW是允许回退、删除分支、标签等。

1. $HOME/.gitolite.rc:为了允许gitweb、redmine等,UMASK从0077改为0027

*网页管理——gitweb

因为gitweb似乎不能审阅,故本节未验证。

2. sudo apt-get install gitweb apache2

3. 参见How to create own Git Server with Gitolite and Gitweb in Ubuntu

4. Securing Gitweb with htpasswd:同上一步

网页管理——redmine/gerrit/gitlab/phabricator

审阅工具列表(pre-commit)

LAMP

sudo apt-get install apache2 php5 mysql-server phpmyadmin 或以lighttpd代替apache2,但是其它模块似乎依赖于apache2。以下以apache2为准。

重启lighttpd:sudo /etc/init.d/lighttpd restart

sudo ln -s /usr/share/phpmyadmin /var/www

然后访问服务器的phpmyadmin网页,就能登录了。

停止服务:sudo service apache2或mysql stop

允许服务自启动:sudo update-rc.d apache2 enable

禁止服务自启动:sudo update-rc.d apache2 disable

完全禁止服务自启动:sudo update-rc.d -f apache2 remove

*RedMine

无法控制代码提交、审阅。

1. sudo apt-get install ruby rubygems libruby libapache2-mod-passenger ruby-dev libmysqlclient-dev libmagickcore-dev libmagickwand-dev git-core redmine redmine-mysql

提问“MySQL application password for redmine/instances/default:”是输入数据库中redmine用户的密码

2. 修改/etc/apache2/mods-available/passenger.conf

<IfModule mod_passenger.c>
PassengerDefaultUser www-data
PassengerRoot /usr
PassengerRuby /usr/bin/ruby
</IfModule>


sudo ln -s /usr/share/redmine/public /var/www/redmine

修改/etc/apache2/sites-available/000-default.conf或同目录下的default

<Directory /var/www/redmine>
RailsBaseURI /redmine
PassengerResolveSymlinksInDocumentRoot on
</Directory>


sudo service apache2 restart

然后访问服务器的redmine目录,就能登录了。默认管理用户的用户名和密码都是admin

为了使用网页认证,即其它网页认证后redmine不再鉴权,需要安装插件(声明兼容redmine2.3、2.4;在redmine1.*上使用时报告错误)https://github.com/pburgisser/redmine_http_basic_authentication

sudo apt-get install rails

git clone http://github.com/pburgisser/redmine_http_basic_authentication.git

sudo mv redmine_http_basic_authentication /usr/share/redmine/vendor/plugins/

chown -R root.root redmine_http_basic_authentication/

*gerrit

没有缺陷管理功能,需要借助bugzilla/bugfree?

1. 下载.war:https://gerrit-releases.storage.googleapis.com/index.html

2. 增加数据库本地用户git(手册中是gerrit2)、数据库reviewdb,并允许该用户对此库所有操作:

CREATE USER 'git'@'localhost' IDENTIFIED BY '密码';
CREATE DATABASE reviewdb;
GRANT ALL ON reviewdb.* TO 'git'@'localhost';
FLUSH PRIVILEGES;


登录git(手册中是gerrit2)用户,执行:java -jar gerrit.war init -d gerrit使用的目录名

被提问的选项中有问号时,可选择问号,查看所有可选项。

solr是基于lucene的技术。

http_ldap与http比较类似,只是从ldap获取额外信息;如果用ldap认证,则会要求用户名和密码。本文gerrit使用http认证方式,由apache通过ldap等方式认证。

……见Gerrit Code Review - Standalone Daemon Installation Guide,参考烤鸭的gerrit使用总结

非本地系统用户账号

Ubuntu上能做LDAP服务器,本身也支持LDAP客户端,使用非本地账号登录:LDAPClientAuthentication,参考phpldapadmin安装手册(open ldap+Berkeley DB+php 5+apache 2)

GitLab

库的公共分支不允许组员提交:组员建立自己的分支提交修改,并申请合并到公共分支,组长审阅。

账号要求密码为8位字符或更长。

用ngix,与apache冲突,需要禁止apache自启动。

不同系统有不同安装方法。用类似虚拟机的bitnami能安装。以下是Ubuntu 12.04的:

1. curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash

2. sudo apt-get install gitlab-ce:这步可能很慢,可能要试多次。配置文件位置如/var/opt/gitlab/gitlab-rails/etc/unicorn.rb

3. 如果有git用户,此步默认会修改其主目录,并应保证有/home/git目录:sudo gitlab-ctl reconfigure

4. 改变代码库位置:(/var/opt/gitlab/nginx/conf/下的网络配置文件中写明了修改该处文件不能生效,亦需要修改以下配置文件)

sudo -e /etc/gitlab/gitlab.rb

设置git_data_dir “目标位置”

如果已经有库了,运行:

sudo gitlab-ctl stop

sudo rsync -av 原位置不以斜线结尾,默认是/var/opt/gitlab/git-data/repositories 目标位置以斜线结尾

sudo gitlab-ctl reconfigure

sudo gitlab-ctl start

4. 发送邮件设置

5. LDAP:sudo -e /etc/gitlab/gitlab.rb并按说明把EOS结尾的行取消注释

gitlab_rails['ldap_enabled'] = true
gitlab_rails['ldap_servers'] = YAML.load <<-'EOS' # remember to close this block with 'EOS' below
main: # 'main' is the GitLab 'provider ID' of this LDAP server
label: 'LDAP'
host: 地址
port: 389
uid: 用户名
method: 'plain' # "tls" or "ssl" or "plain"
bind_dn: '域名称如cn=某,ou=某,dc=somewhere,dc=cn'
password: 密码
active_directory: false


sudo gitlab-ctl reconfigure

5. (未成功)为了确认LDAP配置,可借助ldapsearch命令

6. 更新:下载安装包,sudo dpkg -i 包名;sudo gitlab-ctl restart

如果失败,则可能需要:

sudo gitlab-rake db:migrate
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart


Phabricator

对服务器各软件版本要求高。要改sshd端口,会把网址都转换到她上。

按照安装说明安装后,查看网页,即根据提示能解决大部分配置问题。代码库用Diffusion模块,需要参阅用户手册。

要求更改sshd端口(以实现取、提代码时通过公钥鉴权)。

让每次开机时启动:

phd,因为其可判断是否已经启动,所以能写入/etc/crontab,如

0  *    * * *   git     /opt/phabricator/phabricator/bin/phd start


;sshd,可更改 /etc/rc.local

/usr/sbin/sshd -f /etc/ssh/sshd_config.phabricator




以非根用户运行,如git,则以下权限既可满足sshd(openssh),又能让git使用:

/etc/ssh/phabricator-ssh-hook.sh 用户root,组git,权限750;

/etc/ssh/sshd_config.phabricator 默认,用户、组都是root,权限644;

LDAP的配置,LDAP integration with phabricator说得很中肯。

更新(或许能用/etc/init.d/httpd代替apache2ctl):

sudo apache2ctl stop
sudo su git
phabricator/bin/phd stop
cd libphutil; git pull
cd ../arcanist; git pull
cd ../phabricator; git pull
cd ..; phabricator/bin/storage upgrade
cd ..; phabricator/bin/phd start
exit
sudo apache2ctl start
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: